Getting along with the VIA EPIA-M10000 Mini-ITX HTPC motherboard

I got this motherboard for free with a 933MHz Ezra-T C3 processor. It is still the cheapest option for a HTPC/MythTV box. Linux has low enough system overhead to make it usable and also has fairly well maintained open source drivers for the aging VIA hardware. But there are a few things you need to know.

1. There are three “GSC” brand, 1000uF 10V capacitors on the motherboard. One is next to the Ethernet jack, one next to the floppy connector, and one near the CPU. All of these are badly designed, eventually fail, and must be replaced for system stability. See BadCaps.net for more information.

2. VIA released a 1.16 BIOS. Don’t use it. Use the 1.13 BIOS instead. See the following forum threads: Thread 1 Thread 2 The 1.13 BIOS is recent enough to work with the newest OpenChrome drivers, which is the only real reason to upgrade the BIOS anyway.

3. Linux kernel must be booted with the notsc option to disable the Pentium timestamp counter. Failure to do this will result in system instability.

4. On older CPU models, CPU frequency scaling has been disabled due to hardware bugs. Samuel and Ezra users miss this functionality. Fortunately, on my 933MHz Ezra-T, frequency scaling works, because it is using the new PowerSaver method instead of the old v1 and v2 methods. (If you have one of the older CPUs, you will want to make sure that at least the ACPI C3 power-saving state is functioning correctly at idle. This can be done with the powertop command.)

5. Only MPEG1 and MPEG2 decoding are accelerated by hardware on the original Unichrome chipset. (Unichrome Pro is claimed to accelerate MPEG4 but hardware documentation is scarce.) To accelerate MPEG1/2 videos, you must create a file /etc/X11/XvMCConfig containing the string libchromeXvMC.so.1. Then run Xine with -V xxmc. (Note: Use the OpenChrome drivers, and ensure that DRI is being correctly enabled.)

Mplayer takes more work. Follow the following steps to get XvMC working with the OpenChrome drivers and a slightly out of date version of Mplayer:

  • Download mplayer-1.0-rc2-XvMC_VLD.diff (latest version known to work)
  • svn co -r24967 --ignore-externals svn://svn.mplayerhq.hu/mplayer/trunk mplayer
  • cd mplayer && svn co -r "{2007-11-04 17:39:05 -0600}" svn://svn.mplayerhq.hu/ffmpeg/trunk/libavutil svn://svn.mplayerhq.hu/ffmpeg/trunk/libavformat svn://svn.mplayerhq.hu/ffmpeg/trunk/libavcodec svn://svn.mplayerhq.hu/ffmpeg/trunk/libpostproc
  • patch -p0 < ../mplayer-1.0-rc2-XvMC_VLD.diff (should apply cleanly)
  • Apply this patch to libavcodec/libx264.c from Gentoo bugtracker
  • Edit libavcodec/h264.c and remove static keyword from last_coeff_flag_offset_8x8
  • Configure mplayer as follows: CFLAGS="-fomit-frame-pointer -fno-PIC -march=c3 -mtune=c3" ./configure --prefix=/usr/local/mplayer-via --confdir=/etc/mplayer --disable-ivtv --enable-xvmc
  • Then make, you should get no errors and a binary mplayer output
  • If you get an error about can't find a register in class `GENERAL_REGS' when inline asm is being compiled in some files, follow instructions on this page until all such errors are resolved
  • make install and then when playing MPEG-1 or MPEG-2 video, run your special mplayer as /usr/local/mplayer-via/bin/mplayer -vo xvmc -vc ffmpeg12mc
  • Keep this mplayer around specifically for MPEG-1 and MPEG-2/DVD video playing. For other videos, use the newest mplayer version recompiled from your distribution with above CFLAGS for fastest performance.

6. Mplayer is fast enough to play MPEG-4/DivX videos with only very occasional hiccups, with the following provisions.

  • Recompile mplayer with --disable-cpu-autodetection. This will optimize mplayer for the Ezra, including enabling 3DNow!.
  • Edit /etc/mplayer/mplayer.conf and add lavdopts=fast=1:skiploopframes=all. This will speed up MPEG-4 decoding without noticeable loss of quality on a TV. It would also be a good idea to enable the framedrop option so that any hiccups that are encountered during playback will have minimal impact on the viewing experience.
  • Renice mplayer by running it with sudo nice -n -5 mplayer. This will keep desktop programs from interfering with video playback.

7. Flash videos will not play at full speed in the Flash browser plugin player due to its poor design. You must download the videos, either separately with a program like youtube-dl, or by pausing the player and waiting for it to buffer and then grabbing the buffered FlashXXXXXX file out of /tmp. Then, play the downloaded file with mplayer. Note that in all cases the Ezra-T CPU is insufficient for playback of high-definition (HD) Flash video using the newer and more complex codecs.

8. 512MB memory is barely enough for a GNOME session on Ubuntu Karmic. The best idea would be to install the maximum 1GB of PC2100 DDR RAM. But if you don’t want to spend the money, you might want to try using XFCE by installing the xfce4 metapackage and then selecting it the next time you log in. To really save RAM you will have to disable GNOME services from loading in the XFCE configuration manager.

9. Suspend-to-RAM (S3) does not currently work.

10. 3D acceleration is reported as not very stable or well-supported. This is mostly due to incomplete hardware docs from VIA and an active attempt by VIA to “end-of-life” the Unichrome product line.

11. If programs crash with “Illegal instruction”, this is due either to the program’s use of P6 opcodes such as cmov, or the program’s use of unsupported MMX-2 or SSE instructions. The Ezra and Ezra-T cores only support the instructions that K6/2 and K6-III processors support, which is to say, only P5 opcodes and only the first generation of both MMX and 3DNow instructions. Software may therefore need to be recompiled to target a K6/2 or K6-III processor, or more specifically for the c3 gcc target. On Ubuntu, the CFLAGS can usually be modified in the debian/rules script in the program’s source code package. You may also need to disable the use of assembly-code optimization on some specific packages.

One Response to “Getting along with the VIA EPIA-M10000 Mini-ITX HTPC motherboard”

  1. ale says:

    Thank you for reporting bug 14872. It took me a long time to build my first dining room mythtv frontend prototype (several months) using an epia m-10K, LVDS addon card, an ibook 12″ lcd display, a homebrew serial ir receiver and mythbuntu 9.10. Having to whait 1’30” from power on to mythfrontend to come up is quite boring… and not so wife-compliant.
    Hope it will be fixed soon.
    Bye, Alessandro.

Leave a Reply