Friday, June 28, 2013

Ubuntu on OEM Production 2550L2D-MxPC

One of the cheapest bare-bones mini PC on Newegg is the OEM Production 2550L2D-MxPC. I thought all the reasonably positive reviews meant it would be a good buy. I also saw it had an Intel graphics chip, which I know is well supported on Linux. Unfortunately I was wrong on both counts.

Summary:

  • Ubuntu 32-bit ONLY. Probably have to run 12.04.1 unless your googlefu and linuxfu is better than mine.
  • Do not bother buying more than 4GB of RAM! The kernel will ignore anything more.
  • A note in the box says the machine supports "800MHz and some 1066MHz DDR3 memory module. 1333MHz DDR3 memory module is not guarantee to work. [sic]" I got lucky that the 1066MHz G.SKILL F3-8500CL7S-4GBSQ I ordered worked.

The graphics chip is Intel GMA 3650, which is in the family of infamous GMA 3600s. These are the unwanted step children of Intel graphics chips.

For Windows, there is a Windows 7 (only) driver which plays full screen HD video smooth a butter.

Only a single proprietary binary Linux driver is available, and I hear no further support will be available for this kind of chip. Ubuntu appears to have officially stopped supporting this one driver because it's based on an old Linux kernel (3.2).

Note that both the Windows and Linux drivers are 32-bit only, so don't expect to run a 64-bit operating system and watch HD video.

This is how I got Ubuntu working on this thing.

I tried many different versions of Ubuntu, Mythbuntu, and Linux Mint before finally finding something that worked: Ubuntu 32-bit 12.04.1. This version of Ubuntu still uses a kernel compatible with the graphics driver. I tried starting with 12.04.2 then downgrading the kernel, but ended with X failing to start.

After Ubuntu was installed I did not download and apply any updates. This again would mess up my kernel. Magnus Deininger posted vital info about getting the right kernel. Running these commands removes the PAE version of the kernel. PAE allows 32-bit operating systems to support RAM > 4GB. Unfortunately the graphics driver is incompatible with it.

$ sudo apt-get install linux-headers-generic linux-image-generic
$ sudo apt-get remove linux-headers-.*generic-pae linux-image-.*generic-pae

I then rebooted. Checking for "Additional Hardware", the graphics driver appeared, and I installed it. The command-line to install it is

$ sudo cp /etc/lightdm/lightdm.conf /etc/lightdm/lightdm.conf.bak
$ sudo jockey-text --enable=kmod:cedarview_gfx
$ sudo cp /etc/lightdm/lightdm.conf.bak /etc/lightdm/lightdm.conf

The installation overwrites the /etc/lightdm/lightdm.conf file, so my login settings were messed up a bit. That's why I created a backup so I just restored the old version.

Finally I downloaded and installed Ubuntu updates. Sadly the Update Manager would hang forever at the very end. So after rebooting I'd run it again to have it tell me there were no more updates to apply. The kernel stays within the 3.2 family.

Unfortunately that's not the end. Silky full screen HD still didn't work because the video player needs VA-API (Video Acceleration API) support. Someone has made a special build of mplayer that supports VA API. A fine post shows how to install VA-API mplayer for Ubuntu.

$ sudo add-apt-repository ppa:sander-vangrieken/vaapi
$ sudo apt-get update
$ sudo apt-get install mplayer-vaapi

Once installed, open SMPlayer (or whatever MPlayer GUI you're using: Gnome Mplayer, KMPlayer, etc.) and in its Preferences, on the Video tab (in SMPlayer: General Video > Output driver) set the video output driver to "vaapi"

This fine post by paulzhol also suggests adding the following

Edit /usr/share/intel-cdv/X11/xorg.conf.d/61-cdv-pvr.conf to enable AIGLX

Section "ServerLayout"
        Identifier  "default screen"
        Option      "AIGLX"             "On"
EndSection

sigh. 5+ days pounding at this thing. It would be really nice if Ubuntu centered its update dependencies on these critical drivers. Also I'm pretty sure the Newegg reviews are being astro-turfed. Any comment about how Linux support sucks is heavily voted as not useful.