Compiling a customised EPIA kernel
To access the functionality provided by your EPIA board, you need to compile in support for it. Below are listed the kernel modules that
need to be included, and the respective functionality that they provide:
Kernel option
|
Functionality
|
Processor type and features -->
Processor family -->
VIA C3-2 (Nehemiah)
|
Basic optimisation for our processor
|
Device Drivers -->
ATA/ATAPI/MFM/RLL support -->
VIA82CXXX chipset support
|
IDE driver
|
Device Drivers -->
Character devices -->
Intel/AMD/VIA HW Random Number Generator support
Cryptographic options -->
Cryptographic API
Hardware crypto devices -->
Support for VIA PadLock ACE
Support for AES in VIA PadLock
|
VIA ACE security driver
|
Device Drivers -->
Character devices -->
/dev/agpgart (AGP Support)
VIA chipset support
Direct Rendering Manager (XFree86 4.1.0 and higher...
Via unichrome video cards (as module)
|
Basic AGP video and TV-Out driver, and DRI driver
|
Device Drivers -->
Sound -->
Sound card support
Advanced Linux Sound Architecture -->
Advanced Linux Sound Architecture
Sequencer support
Sequencer dummy client
OSS Mixer API
OSS PCM (digital audio) API
OSS Sequencer API
PCI devices -->
VIA 82C686A/B, 8233/8235 AC97 Controller (as module)
[Ensure Open Sound System is NOT compiled]
|
ALSA sound driver
|
Device Drivers -->
I2C support
Hardware Monitoring support -->
Hardware Monitoring support
Via VT1211
|
Temperature sensor (patch required)
|
TV-Out
To get TV-Out to work, you will need to edit /etc/X11/xorg.conf
and add the relevant lines (or just take a copy of mine found
here). As soon as you are able to see a picture, I suggest
continuing on with the guide and installing the unichrome driver without
tweaking this config file. The reason for this is that the unichrome driver seems
to behave differently to the basic kernel driver - why waste the effort if you
are going to change it? :)
I would recommend getting S-Video to work first
before making any custom RGB leads which potentially may not work. Remember to
select S-Video in your BIOS and config file, and disconnect your monitor
while you have TV-Out connected so that the correct refresh rate is detected.
Troubleshooting:
- I can't see a picture on my TV!
Obviously there could be a number of reasons for this. First off, check that your lead
is going to the right pins in the plug. I purchased an S-Video to SCART plug and it
was wired to the SCART's output pins rather than input. Next, check that you have
the correct BIOS / xorg.conf settings commented out (i.e. S-Video). Failing that,
you should first check that the driver is working with the monitor before going any
further. Then investigate any errors that may occur in /var/log/Xorg.0.log .
Sound
To get the alsa sound working, do the following:
- Add
alsa to you USE flags.
- Now
emerge alsa-utils , a set of utilities for alsa.
- Edit the file
/etc/modules.d/alsa and ensure that the
following are uncommented:
alias snd-card-0 snd-via82xx
alias sound-slot-0 snd-via82xx
alias /dev/mixer snd-mixer-oss
alias /dev/dsp snd-pcm-oss
alias /dev/midi snd-seq-oss
- Run
modules-update to make the changes take effect.
- Make alsa start on boot (and start it now) using
rc-update add alsasound
boot ; /etc/init.d/alsasound start .
- Now unmute the volume by running the following:
amixer set Master 100% unmute
amixer set PCM 100% unmute
- Test it by doing
emerge aplay and using aplay to play a
WAV file on your system.
Temperature sensor
To get the temperature sensor into action, we need to:
- Download the patch from here, and
copy it into
/usr/src/linux .
- Go into
/usr/src/linux and execute: patch -p1 < <patch_filename> .
- Select and compile the module into the kernel (see above table for details).
- Do an
emerge lm_sensors to get the package that reads the sensors.
- Execute
sensors to get a reading of the current CPU temperature.
- If you also
emerge hddtemp , you can use the following script to monitor
both hdd and cpu temperature every 60 seconds (thanks to the creator of
this site for the original).
This will allow you to get an average temperature for your system. Add the following to
a script file:
#!/bin/bash
t=0
echo "Time, CPU Temp, HD Temp"
while [ "true" = "true" ] ; do
cputemp=`sensors | grep Proc | sed 's/.*: +\(.*\) C .*/\1/'`
hdtemp=`hddtemp /dev/hda | sed 's/.*: \(.*\) C.*/\1/'`
printf "%4i" $t
echo ", "$cputemp", "$hdtemp
sleep 60
t=`expr $t + 1`
done
Compiler flags
To optimise all of the packages and kernels you compile, you should set your
CFLAGS variable in /etc/make.conf to something like the following:
CFLAGS="-O3 -march=i686 -fomit-frame-pointer -msse -mmmx -mfpmath=sse -pipe"
|