HARDWARE Epia SP8000
From Gentoo Linux Wiki
| Laptops • TV Tuner Cards • Wireless • Servers • Storage • Other Hardware • Motherboards • Related |
The EPIA SP8000 is a fanless Mini-ITX format motherboard with an Eden processor clocked at 800 Mz.
Contents |
[edit] Hardware
[edit] Architecture of the Board
[edit] Chipset
The board has a northbridge, the VIA CN400, and a southbridge, the VIA VT8237.
[edit] Eden Processor
This is appears to be an underclocked Nehemiah processor. It is equipped with a large passive heatsink to allow for fanless operation.
[edit] VIA CN400
This handles interface with the CPU, RAM and graphics (TV-in and -out, LVDS)
[edit] VIA VT8237
This handles interface I/O (USB, PS2, Ethernet) as well as AC '97 Audio and diskdrives (SATA, IDE and RAID).
[edit] I/O Ports
[edit] Back-of-the-Board I/O
- PS/2 Mouse
- PS/2 Keyboard
- Serial (COM1)
- VGA Out
- Ethernet 10/100
- USB2 x2
- S Video
- RCA Out/SPDIF (Selected by onboard jumper)
- Audio Line-out
- Audio Line-in
- Audio microphone
[edit] On-Board Headers
- USB2 x3
- IEEE 1394 Firewire
- Serial port
- VIP
- Front panel audio line-in/mic
- CD audio
- Infrared (IRDA/FIR)
- Infrared (CIR) or keyboard/mouse (selected by onboard jumper)
- Parallel port (LPT)
- Wake on LAN
- Fan connector
- SMBus connector
- LVDS
[edit] My System
- Casetronic Travla 137 Case
- 1GB DDR 400 RAM
- Slimline CDROM
- 2.5 in Laptop drive
- Itron Presenter Keyboard/Mouse
[edit] PCI Slots
The SP8000 has one PCI slot. You can get a riser card that turns that into two slots if your case supports it (as the Travla 137 does).
You need to bear this limitation in mind when you are designing your system. Also, portions of this article are based on my system which does incorporate the riser. Your milage may vary.
[edit] cpuinfo Dump
sanguinaria chris # cat /proc/cpuinfo processor : 0 vendor_id : CentaurHauls cpu family : 6 model : 9 model name : VIA Nehemiah stepping : 8 cpu MHz : 800.116 cache size : 64 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr cx8 sep mtrr pge cmov pat mmx fxsr sse rng rng_en ace ace_en bogomips : 1603.77
[edit] lspci Dump
sanguinaria chris # lspci 00:00.0 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge 00:00.1 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge 00:00.2 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge 00:00.3 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge 00:00.4 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge 00:00.7 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge 00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI Bridge 00:0d.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 80) 00:0f.0 RAID bus controller: VIA Technologies, Inc. VIA VT6420 SATA RAID Controller (rev 80) 00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06) 00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81) 00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81) 00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81) 00:10.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81) 00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 86) 00:11.0 ISA bridge: VIA Technologies, Inc. VT8237 ISA bridge [KT600/K8T800/K8T890 South] 00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 60) 00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 78) 00:13.0 Multimedia video controller: Internext Compression Inc iTVC16 (CX23416) MPEG-2 Encoder (rev 01) 00:14.0 Ethernet controller: Atheros Communications, Inc. AR5005G 802.11abg NIC (rev 01) 01:00.0 VGA compatible controller: VIA Technologies, Inc. S3 Unichrome Pro VGA Adapter (rev 02)
Items 13 and 14 are my Hauppague PVR150 card and my SBC Wireless card, respectively. Please see the earlier note on PCI slots and risers.
[edit] C-Flags
I use the following CFlags, based on information at Safe Cflags and the cpuinfo dump above:
CFLAGS="-Os -march=i686 -mfpmath=sse -mmmx -msse -pipe -fomit-frame-pointer" CHOST="i686-pc-linux-gnu"
I apparently could use C3-2 and CHOST, but I read reports of that causing difficulties.
[edit] Kernel Configuration and Modules
[edit] Processor Type
Symbol: MVIAC3_2 [=y] │ Prompt: VIA C3-2 (Nehemiah) │ Defined at arch/i386/Kconfig.cpu:185 │ Depends on: <choice> │ Location: │ -> Processor type and features │ -> Processor family (<choice> [=y])
[edit] Hardware Random Number Generator
Symbol: HW_RANDOM_VIA [=y] │ Prompt: VIA HW Random Number Generator support │ Defined at drivers/char/hw_random/Kconfig:55 │ Depends on: HW_RANDOM && X86_32 │ Location: │ -> Device Drivers │ -> Character devices │ -> Hardware Random Number Generator Core support (HW_RANDOM [=y])
[edit] 10/100 Ethernet
Symbol: VIA_RHINE_MMIO [=y]
│ Prompt: Use MMIO instead of PIO
│ Defined at drivers/net/Kconfig:1681
│ Depends on: NETDEVICES && !UML && VIA_RHINE
│ Location:
│ -> Device Drivers
│ -> Network device support
│ -> Network device support (NETDEVICES [=y])
│ -> Ethernet (10 or 100Mbit)
│ -> VIA Rhine support (VIA_RHINE [=y])
Also, you like you can use MMIO with the Rhine driver:
Symbol: VIA_RHINE [=y] │ Prompt: VIA Rhine support │ Defined at drivers/net/Kconfig:1667 │ Depends on: NETDEVICES && !UML && NET_PCI && PCI │ Location: │ -> Device Drivers │ -> Network device support │ -> Network device support (NETDEVICES [=y]) │ -> Ethernet (10 or 100Mbit) │ Selects: CRC32 && MII
[edit] IDE Support
Symbol: BLK_DEV_VIA82CXXX [=y] │ Prompt: VIA82CXXX chipset support │ Defined at drivers/ide/Kconfig:745 │ Depends on: IDE && BLK_DEV_IDE && BLK_DEV_IDEDMA_PCI │ Location: │ -> Device Drivers │ -> ATA/ATAPI/MFM/RLL support │ -> ATA/ATAPI/MFM/RLL support (IDE [=y]) │ -> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (BLK_DEV_IDE [=y]) │ -> PCI IDE chipset support (BLK_DEV_IDEPCI [=y]) │ -> Generic PCI bus-master DMA support (BLK_DEV_IDEDMA_PCI [=y])
[edit] Serial ATA
Symbol: SCSI_SATA_VIA [=y] │ Prompt: VIA SATA support │ Defined at drivers/scsi/Kconfig:580 │ Depends on: SCSI!=n && SCSI_SATA && PCI │ Location: │ -> Device Drivers │ -> SCSI device support │ -> SCSI device support (SCSI [=y]) │ -> SCSI low-level drivers │ -> Serial ATA (SATA) support (SCSI_SATA [=y])
[edit] Sound (ALSA)
Symbol: SND_VIA82XX [=m] │ Prompt: VIA 82C686A/B, 8233/8235 AC97 Controller │ Defined at sound/pci/Kconfig:506 │ Depends on: !M68K && SOUND!=n && PCI && SND │ Location: │ -> Device Drivers │ -> Sound │ -> Advanced Linux Sound Architecture │ -> PCI devices │ Selects: SND_MPU401_UART && SND_AC97_CODEC
[edit] USB
Symbol: USB_UHCI_HCD [=y] │ Prompt: UHCI HCD (most Intel and VIA) support │ Defined at drivers/usb/host/Kconfig:111 │ Depends on: USB && PCI │ Location: │ -> Device Drivers │ -> USB support │ -> Support for Host-side USB (USB [=y])
[edit] Video
[edit] AGP
Symbol: AGP_VIA [=y] │ Prompt: VIA chipset support │ Defined at drivers/char/agp/Kconfig:119 │ Depends on: AGP && X86_32 │ Location: │ -> Device Drivers │ -> Character devices │ -> /dev/agpgart (AGP Support) (AGP [=y])
[edit] DRM
Symbol: DRM_VIA [=m] │ Prompt: Via unichrome video cards │ Defined at drivers/char/drm/Kconfig:92 │ Depends on: DRM │ Location: │ -> Device Drivers │ -> Character devices │ -> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) (DRM [=m])
[edit] Hardware Sensors
Symbol: SENSORS_VT1211 [=y] │ Prompt: VIA VT1211 │ Defined at drivers/hwmon/Kconfig:611 │ Depends on: HWMON && EXPERIMENTAL │ Location: │ -> Device Drivers │ -> Hardware Monitoring support (HWMON [=y])
[edit] Hardware Accelerated [En,De]cryption
Symbol: CRYPTO_DEV_PADLOCK_AES [=y] │ Prompt: PadLock driver for AES algorithm │ Defined at drivers/crypto/Kconfig:26 │ Depends on: CRYPTO && CRYPTO_HW && CRYPTO_DEV_PADLOCK │ Location: │ -> Cryptographic API (CRYPTO [=y]) │ -> Hardware crypto devices (CRYPTO_HW [=y]) │ -> Support for VIA PadLock ACE (CRYPTO_DEV_PADLOCK [=y])
[edit] Software
[edit] X
The drivers for the Unichrome chipset are in fairly good shape in xorg 6.9 or 7.0. I just went for it and compiled the modular 7.0 version. The following line was added to /etc/make.conf:
VIDEO_CARDS="fbdev vesa via"
Direct rendering now works:
[edit] TV-Out
The via driver has modes adapted to using TVs for output. These include both PAL (572x480) and NTSC (720x480). The PAL driver has non-scaled mode ("720x480Noscale") which is supposed to give the best results.
Unfortunately, in xorg-x11 7.0 there is no like mode for NTSC and use of the "720x480" mode causes severe flickering, which must be overcome by use of the "TVDeflicker" driver option.
However, the openchrome drivers do support 720x480Noscale. Note that via_drv.so driver installs in /usr/local/lib/xorg/modules/drivers and will need to be copied over to /usr/lib/xorg/modules/drivers.
Here is an xorg.conf files for TV-out using an NTSC analog television:
Section "ServerLayout"
Identifier "Living Room Layout"
Screen 0 "Living Room" 0 0
InputDevice "PC 104 US" "CoreKeyboard"
InputDevice "USB Mouse" "CorePointer"
EndSection
Section "Files"
EndSection
Section "Module"
Load "freetype"
Load "extmod"
Load "glx"
Load "dri"
Load "dbe"
Load "record"
Load "type1"
EndSection
Section "InputDevice"
Identifier "USB Mouse"
Driver "mouse"
Option "Protocol" "Auto"
Option "Device" "/dev/input/mice"
EndSection
Section "InputDevice"
Identifier "PC 104 US"
Driver "keyboard"
Option "XkbModel" "pc104"
Option "XkbLayout" "us"
EndSection
Section "Monitor"
Identifier "Toshiba TV"
VendorName "Toshiba"
ModelName "Analog NTSC Television"
DisplaySize 183 122 #27 inch TV in mm
HorizSync 30.0 - 85.0
VertRefresh 50.0 - 120.0
EndSection
Section "Device"
Identifier "VIA Chrome"
Driver "via"
VendorName "VIA Taiwan"
Option "TVType" "NTSC"
Option "TVOutput" "Composite"
Option "EnableAGPDMA" "True"
EndSection
Section "Screen"
Identifier "Living Room"
Device "VIA Chrome"
Monitor "Toshiba Tv"
DefaultDepth 16
SubSection "Display"
Viewport 0 0
Depth 8
Modes "720x480Noscale"
EndSubSection
EndSection
Section "DRI"
Mode 0666
EndSection
[edit] XvMC
The Xorg 7.0 drivers also activate XvMC, as shown by the Xorg log:
(II) VIA(0): [XvMC] Registering viaXvMCPro. (II) VIA(0): [XvMC] Initialized XvMC extension.
If you are using your board for decoding of MPEG2 video, all of the fussing around necessary to get this working is well worthwhile. CPU-usage went from ~50% to ~10 using xine for DVD-watching, with like results for mythtv. I followed the instructions at Unichrome: Xine on the CN400 Chipset to configure xine.
[edit] lm_sensors
The SP8000 has onboard sensors, the vt1211 chip attached to the ISA bus. This is one of the drivers which has yet to be ported to the 2.6 kernel.
A kernel 2.6 version of the driver is avaiable and can be compiled as an external module (see links below).
I2C_ISA needs to be selected in the kernel in order to make the driver compile cleanly and not give errors on loading. This is done by, for example, selecting HW_MON, PCI and SENSORS_VIA686A.
The next problem (which I have yet to solve) is getting an /etc/sensors.conf that gives out temperatures which make sense. I used the one from this epiacenter forum post, but it gives out results consistent with my box being cooled by liquid nitrogen. Sadly not the case.
[edit] Hardware Random Number Generator
An often overlooked feature of the SP8000's CPU is the built-in random number generator. According to Via, the RNG uses the frequency instabilities of multiple free running oscillators as its source of entropy. Once enabled in the kernel a new device will be created at /dev/hw_random. For our applications to use it we need to:
# emerge sys-apps/rng-tools # rc-update add rngd boot # /etc/init.d/rngd start
The demon will now feed random data to the kernel's standard random devices (e.g. /dev/random).
This is a good thing as it means our little 800MHz CPU does not have to work to gererate random data and the data is truly random unlike any other method.
