Search:  
Gentoo Wiki

VIA_Epia_SP8000

This article is part of the Hardware series.
Laptops TV Tuner Cards Wireless Servers Storage Other Hardware Motherboards Related

Contents

Intro

The EPIA SP8000 is a fanless Mini-ITX format motherboard with an Eden processor clocked at 800 Mz.

Hardware

Architecture of the Board

Chipset

The board has a northbridge, the VIA CN400, and a southbridge, the VIA VT8237.

Eden Processor

This is appears to be an underclocked Nehemiah processor. It is equipped with a large passive heatsink to allow for fanless operation.

VIA CN400

This handles interface with the CPU, RAM and graphics (TV-in and -out, LVDS)

VIA VT8237

This handles interface I/O (USB, PS2, Ethernet) as well as AC '97 Audio and diskdrives (SATA, IDE and RAID).

I/O Ports

Back-of-the-Board I/O
On-Board Headers

My System

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.

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

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.

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.

Kernel Configuration and Modules

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])                                                             

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])

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       

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])                         

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])                                             

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                                                          

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])                                                       

Video

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])                                                      

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])                 

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])

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])

Software

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:


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

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.

As a side note, at the time of writing this there are reported problems with XvMC in conjunction with MythTV when using a 2.6.24 or newer kernel. It was necessary for me to downgrade to 2.6.23-r9 to get it working (this took months of ametuer sleuthing to discover). (Gentoo and Ubuntu references)

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.

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.

External Links

Retrieved from "http://www.gentoo-wiki.info/VIA_Epia_SP8000"

Last modified: Thu, 02 Oct 2008 23:13:00 +0000 Hits: 11,580