July 9th, 2009

Fun with my Zotac Ion powered Mini-ITX Box

Last week, I finally got around to ordering my new small computer to hide under the TV. In the end, I opted for the higher-end machine - a Zotac Ion A motherboard bought from the lovely people at mini-itx.com. (The Zotac Ion A is a dual core atom CPU, with the NVidia Ion chipset powering it. Slightly higher power than the Intel board I'd been considering, but it has HDMI output, and really good hardware accelleration for video).

The motherboard (and case, memory, disk etc) all turned up Monday, and I've been playing with it off and on since then. I think this evening I'm almost there with it :)

First up, I opted for MythBuntu 9.04, as quite soon I'm planning to add USB tv tuners to it, and use it for TV watching. Having no DVD drive at the time (it only arrived today), I tried to do some hacky install using a usb stick and dd'ing the iso image on the hard disk. My advice now would be not to bother, and just boot mythbuntu in another machine, and use the tool on that to make a bootable usb stick to install from. Would've been much less effort if I'd done that originally...

Next up, the Ion chipset is too new for the default nvidia drivers. You need at least the 185 series ones, and maybe even 190. Go add the avernard repository to apt to get the newer drivers. With those, you get shiny hdmi etc, all good.

For the video playback accelleration, you need the vdpau libraries, and mplayer compiled for vdpau, and the right mplayer config (this last one caught me out!). Install nvidia-185-libvdpau and mplayer from avernard and you'll be most of the way there.

Next, go to here and grab qvdpautest, which'll let you test that your vdpau accelleration is working properly. You should get some numbers something like:

Intel(R) Atom(TM) CPU  330   @ 1.60GHz
NVIDIA GPU ION (C79) at PCI:3:0:0 (GPU-0)

VDPAU API version : 0
VDPAU implementation : NVIDIA VDPAU Driver Shared Library  185.18.14  Wed May 27 03:09:54 PDT 2009


MPEG DECODING (1920x1080): 56 frames/s
MPEG DECODING (1280x720): 136 frames/s
H264 DECODING (1920x1080): 52 frames/s
H264 DECODING (1280x720): 114 frames/s
VC1 DECODING (1440x1080): 63 frames/s

DVD playback at 720p at 136 frames a second, yey! (My TV only does 720 alas). Finally, you need to tweak your mplayer config. By default, it won't use vdpau output, and more crucially, it won't use the vdpau video codecs. Your ~/.mplayer/config file should look something like:


# HDMI doesn't do volume control, only on/off

# Should always work
# Shiny nvidia accelleration

# Prefer vdpau

Finally, try watching a h264 video file (eg a HD show from BBC iPlayer) and watch it be all smooth and only at 10% CPU! If mplayer runs at 100% cpu and keeps saying your computer is too slow, then you're not really using vdpau, so check again.

Oh, and sound. I wanted to use the HDMI port for sound output, which wasn't the default. Run aplay -l to see the order of the devices, mine was

**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 0: ALC662 Analog [ALC662 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 1: ALC662 Digital [ALC662 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 3: NVIDIA HDMI [NVIDIA HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

In order to make the HDMI output the default, create a /etc/asound.conf file along these lines:

pcm.!default {
    type hw
    card 0
    device 3
ctl.!default {
    type hw           
    card 0

Now, run alsamixer and un-mute the digital channels at the far end, and sound should come out nicely through your TV just like it does on mine! :)

Next up, getting those pesky USB DVB-T dongles working...