Intel Poulsbo on Arch Linux with EMGD

Things never been easy with pousbo on Linux. Since linux 3.0 I've been using open source driver shipped with kernel. A year of screen flickering and poor media performance is too much. So I'd given a try to closed source drivers .

Installation

We need Xorg 1.9 (five years old version)

## /etc/pacman.conf
## [xorg19]
## Server = http://catalyst.apocalypsus.net/repo/xorg19/$arch

$ yaourt -S xorg19/xorg-server xorg19/xorg-server-common xorg19/xf86-input-evdev

All hard work already done and pushed to AUR

$ yaourt -S xf86-video-emgd-1.16 emgd-xorg-conf
$ emgd-xorg-conf | sudo tee /etc/X11/xorg.conf.d/10-emgd.conf
Section "ServerLayout"
     Identifier     "Default Layout"
     Screen 0       "Screen0"        0 0 
EndSection

Section "Screen"
     Identifier    "Screen0"
     Device        "Intel_EMGD-0"
     Monitor       "Monitor0"
     SubSection    "Display"
         Depth     24
         Modes     "1366x768"
     EndSubSection
EndSection

Section "Device"
     Identifier    "Intel_EMGD-0"
     Driver        "emgd"
     VendorName    "Intel(R) DEG"
     BoardName     "Embedded Graphics"
     BusID         "0:2:0"
     Screen        0
EndSection

Section "Monitor"
     Identifier   "LVDS"
     ModelName    "LCD Panel used by EMGD" 
EndSection

Section "DRI"
     Mode         0666
EndSection

But few things should be fixed. UDEV updated and libudev.so.0 is not available anymore. And open source driver grubs required resources in boot time.

$ sudo ln -s /lib/libudev.so.1.2.1 /lib/libudev.so.0

$ startx
...
Screen(s) found, but none have a usable configuration.
Fatal server error:
  no screens found

## /etc/modprobe.d/10-emgd.conf
## blacklist gma500_gfx

Xorg starts, still "System is too slow" for some videos. Performance can be improved even more by offloading media decoding to graphics card with VAAPI

$ yaourt -Ss libva libva-intel-driver
$ vainfo
libva info: VA-API version 0.33.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/emgd_drv_video.so
libva info: Found init function __vaDriverInit_0_32
Intel(R) Embedded Media and Graphics Driver 1.16 Build 3196
Using XCB based dispatch table.
libva info: va_openDriver() returns 0

For example with mplayer

$ mplayer -vo vaapi -va vaapi

## .mplayer/config
## vo=vaapi
## va=vaapi
$ mplayer

Maintainance

Sure we want to prevent Xorg from update

## /etc/pacman.conf
## IgnorePkg   = xorg-server xorg-server-common xf86-input-evdev

Each time kernel updated module should be rebuild

$ sudo dkms autoinstall -k 3.7.8-1-ARCH

Linux 3.8 removed drm_connector_attach_property drm_connector_property_set_value and __devinit, have to write a patch . Glad to be helpful.

Conclusion

Things aren't perfect here. Sometimes screen just stops working, decoding with vaapi makes mplayer crash on rewind and gives green noise. At least flicker gone, so good!