HOWTO: Compiling Intel Atom Poulsbo GMA 500 graphics driver on Debian
Purpose: Finally here is a step-by-step guide to get the Intel Poulsbo (PSB) GMA 500 graphics driver working under Debian testing/unstable. Over the last 3 months or so since I wrote an introductory post regarding this whole issue, I have got several emails and comments with a request to put up such a guide. Sorry I could not do this earlier because of work. Recently the work has just got a lot busier. I know, by looking at the length of the post you might get discouraged or scared and decide not to embark on this journey, but trust me and follow with me and you will be there. Towards the end of this post I have a link from where you can download all the packages and file required to get the driver working. In any case here it is…
Disclaimer
As I may or may not have noted in my previous post, I don’t claim this to be the perfect method. In fact this is not a perfect method as we have to overwrite some files later in the installation process. I bet Debian Developers will never accept such a kind of workaround. So please use this method at your own risk. This is for folks who don’t care about right or wrong method as long as they can get a native driver for their GMA 500 graphics controller on their Intel Atom notebooks. You have been WARNED!!!
Setup Environment
Kernel: 2.6.30-2-686
Debian: Testing (Squeeze)
We need two components namely the “kernel” and the “Xorg” component to get Poulsbo (psb) driver working in Debian testing/unstable. Also make sure that you just have one and only kernel installed. The reason is that if you have multiple kernel installed you might have trouble generating the kernel components.
Step 1: Add Jaunty Ubuntu Mobile sources
Add the following line to your /etc/apt/sources.list file:
deb-src http://ppa.launchpad.net/ubuntu-mobile/ppa/ubuntu jaunty main
Save and quit file.
Update repositories with the new sources:
# apt-get update
Alternatively you can get the packages from here.
Step 2: Prepare your system
We need to make sure that we have kernel header files and some other development packages installed for the currently running kernel:
# apt-get install devscripts dkms module-assistant dpatch autotools-dev quilt libx11-dev pkg-config xserver-xorg-dev x11proto-gl-dev x11proto-video-dev libgl1-mesa-dev libxvmc-dev x11proto-core-dev x11proto-fonts-dev x11proto-randr-dev x11proto-render-dev x11proto-xinerama-dev x11proto-xf86dri-dev x11proto-xf86dga-dev x11proto-xf86misc-dev libxfixes-dev libxdamage-dev libexpat1-dev
# m-a prepare
Update: If you are using Debian Stable (Lenny), you need to download the package from Debian Testing and then install it on Debian Stable. The package installs just fine without complaining about any incompatibility or missing libraries.
Step 3: Install PSB source packages (Kernel Component)
In this Step we will just see how to build kernel components for the PSB driver, psb.ko and drm.ko:
# cd; mkdir -p psb/drm; cd psb/drm
# apt-get source psb-kernel-source
# cd psb-kernel-source-4.41.1
We will be taking care of any modification that are supplied in the debian/control file. If you really want to see what I am saying then please refer to Adam’s git repository. Many thanks to him!
Now before you can build kernel components you need to edit the following files:
drm_os_linux.h
drm_fops.c
drm_sysfs.c
psb_i2c.c
debian/control
debian/rules
You can download the above six modified files from here and overwrite the original files in the psb-kernel-source-4.41.1 directory. If you want to see the changes then refer to the git repository above. I could have setup my own git repository here but I am having trouble setting up gitweb on my bluehost domain account. If I ever get a chance to resolve it, I will setup the git repository and highlight all the changes.
Now we are ready to compile the kernel modules:
# debuild -i -us -uc -d -b
If the compilation went without any fatal errors then the following packages will be created:
# ls -l ../psb-*.deb
-rw-r--r-- 1 root root 90422 2009-10-27 17:42 ../psb-kernel-headers_4.41.1-1squeeze1_all.deb
-rw-r--r-- 1 root root 402272 2009-10-27 17:42 ../psb-kernel-source_4.41.1-1squeeze1_all.deb
-rw-r--r-- 1 root root 156944 2009-10-27 17:41 ../psb-modules_4.41.1-1squeeze1_i386.deb
# cd ..
Let’s install the following packages:
# dpkg -i psb-kernel-headers_4.41.1-1squeeze1_all.deb psb-modules_4.41.1-1squeeze1_i386.deb
Your kernel modules, psb.ko and drm.ko, will be installed automatically at the following location:
# ls -l /lib/modules/2.6.30-2-686/updates/char/drm
total 392
-rw-r--r-- 1 root root 207207 2009-11-04 02:07 drm.ko
-rw-r--r-- 1 root root 180389 2009-11-04 02:07 psb.ko
Now just copy these modules to their proper locations so that they can get loaded during boot time:
Updated:
# cd /lib/modules/2.6.30-1-686/kernel/drivers/gpu/drm/
# cp drm.ko drm.ko.orig
# cd /lib/modules/2.6.30-1-686/updates/char/drm
# cp psb.ko drm.ko /lib/modules/2.6.30-1-686/kernel/drivers/gpu/drm/
# depmod -ae
You may add the modules to your /etc/modules so that they load early in the boot process.
# nano /etc/modules
drm
psb
Save and quit the file.
Congratulations! You have successfully installed the kernel module You are one step closer to bliss. :-)
Step 4: Install source packages (XOrg Component)
So our next job is to install XOrg components, psb_drv.so and other related files.. In this step we are going to compile a lot of packages. Create a separate directory for xorg stuff:
# cd; mkdir -p psb/xorg; cd psb/xorg
Then download these source packages:
# apt-get source libdrm-poulsbo libva psb-firmware psb-meta xpsb-glx xserver-xorg-video-psb
Step 4(a): Compile libdrm-poulsbo package
# cd libdrm-poulsbo-2.3.0
# nano debian/control
and comment the following lines as shown in blue:
Architecture: any
#Conflicts: libdrm-dev
#Replaces: libdrm-dev
Depends: libdrm-poulsbo1 (= ${binary:Version})
......
Depends: ${shlibs:Depends}, ${misc:Depends}
#Conflicts: libdrm2
#Replaces: libdrm2
and build the package:
# debuild -i -us -uc -d -b
This will results into the following packages being created:
# ls -l ../libdrm-poulsbo*.deb
-rw-r--r-- 1 root root 18420 2009-10-27 15:20 ../libdrm-poulsbo1_2.3.0-1squeeze1_i386.deb
-rw-r--r-- 1 root root 34168 2009-10-27 15:20 ../libdrm-poulsbo1-dbg_2.3.0-1squeeze1_i386.deb
-rw-r--r-- 1 root root 24786 2009-10-27 15:20 ../libdrm-poulsbo-dev_2.3.0-1squeeze1_i386.deb
# cd ..
Step 4(b): Compile psb-firmware package
# cd psb-firmware-0.30
# debuild -i -us -uc -d -b
# ls -l ../psb*.deb
-rw-r--r-- 1 root root 11260 2009-10-27 15:00 ../psb-firmware_0.30-1squeeze1_all.deb
# cd ..
Step 4(c): Compile psb-meta package
# cd psb-meta-1.1/
# debuild -i -us -uc -d -b
# ls -l ../poulsbo*.deb
-rw-r--r-- 1 root root 1736 2009-10-27 15:06 ../poulsbo-driver-2d_1.1-1squeeze1_all.deb
-rw-r--r-- 1 root root 1750 2009-10-27 15:06 ../poulsbo-driver-3d_1.1-1squeeze1_all.deb
# cd ..
Step 4(d): Compile libva package
Before we compile this package we need to install the following packages that we just built above:
# dpkg -i --force-overwrite libdrm-poulsbo*.deb
# cd libva-0.29/
# debuild -i -us -uc -d -b
# ls -l ../libva*.deb
-rw-r--r-- 1 root root 11876 2009-10-27 15:15 ../libva1_0.29-1squeeze1_i386.deb
-rw-r--r-- 1 root root 29318 2009-10-27 15:15 ../libva-dev_0.29-1squeeze1_i386.deb
# cd ..
Note: If the above force-overwrite command does not work then try the following:
# dpkg -i –force-overwrite libdrm-poulsbo*.deb psb-firmware_0.30-1squeeze1_all.deb
Thanks Jon_J.
Step 4(e): Compile lxpsb-glx package
Before we compile this package we need to install the following packages that we just built above:
# dpkg -i libva*.deb
# cd xpsb-glx-0.18
# debuild -i -us -uc -d -b
# ls -l ../xpsb-glx*.deb
-rw-r--r-- 1 root root 1191406 2009-10-27 16:11 ../xpsb-glx_0.18-1squeeze1_i386.deb
# cd ..
Step 4(f): Compile xserver-xorg-video-psb package
# cd xserver-xorg-video-psb-0.31.0
# debuild -i -us -uc -d -b
# ls -l ../xserver-xorg-video-psb*.deb
-rw-r--r-- 1 root root 83848 2009-10-27 17:48 ../xserver-xorg-video-psb_0.31.0-1squeeze1_i386.deb
# cd ..
Now we will install the rest of the packages that we have built so far:
# dpkg -i poulsbo-driver-*.deb xserver-xorg-video-psb_0.31.0-1squeeze1_i386.deb xpsb-*.deb libva*.deb
Congratulations once again if you have come so far and all your packages were being built and installed successfully.
To cross-check if you have compiled and installed all the packages successfully here is the list:
# dpkg -l | grep squeeze1
ii libdrm-poulsbo-dev 2.3.0-1squeeze1 Userspace interface to kernel DRM services -- developme
ii libdrm-poulsbo1 2.3.0-1squeeze1 Userspace interface to kernel DRM services -- runtime
ii libdrm-poulsbo1-dbg 2.3.0-1squeeze1 Userspace interface to kernel DRM services -- debugging
ii libva-dev 0.29-1squeeze1 Video Acceleration (VA) API for Linux -- development fi
ii libva1 0.29-1squeeze1 Video Acceleration (VA) API for Linux -- runtime
ii poulsbo-driver-2d 1.1-1squeeze1 Metapackage for the 2D Poulsbo (psb) X11 driver.
ii poulsbo-driver-3d 1.1-1squeeze1 Metapackage for the 3D Poulsbo (psb) X11 driver.
ii psb-firmware 0.30-1squeeze1 Binary firmware for the Poulsbo (psb) 3D X11 driver
ii psb-kernel-headers 4.41.1-1squeeze1 Kernel module headers for the Poulsbo (psb) 2D X11 driv
ii psb-modules 4.41.1-1squeeze1 Kernel module built for -686 kernel
ii xpsb-glx 0.18-1squeeze1 X11 drivers for Poulsbo (psb) 3D acceleration
ii xserver-xorg-video-psb 0.31.0-1squeeze1 X.Org X server -- Intel Poulsbo (2D)
At this stage you should have all the above packages installed.
Step 5: Add Symlinks
Now we need to do some “dirty” hack in order to make this driver work:
# rm /usr/lib/libdrm.so.2.4.0
# ln -s /usr/lib/libdrm.so.2.3.0 /lib/libdrm.so.2
# ln -s /usr/lib/libdrm.so.2.3.0 /lib/
Step 6: Copy xorg.conf
Finally you will need a valid xorg.conf file to make the driver work. You can download my working xorg.conf file from here.
# cp xorg.conf /user/X11/xorg.conf
One important thing to verify is that the following line is un-commented in the xorg.conf file:
Option "IgnoreACPI" "1"
otherwise you will see a blank/black display when the system boots.
Step 7: Reboot!
Finally reboot your system and cross your fingers. Did you see your GDM or KDM screen? If yes, then chances are that the psb driver has worked. Congratulations once again. Your hard work paid off.
Step 8: Verify
Here are some steps to verify if your psb drivers is actually loaded or not.
To check for the kernel component (drm.ko and psb.ko):
# dmesg | grep drm
Output:
[ 9.762315] [drm] Initialized drm 1.1.0 20060810
[ 9.824743] [drm] psb - 5.0.1.0046
.........................................
[ 12.207384] [drm] intel_lvds_set_backlight: the level is 100
[ 12.207391] [drm] LVDSGetPWMMaxBacklight: the max_pwm_blc is 31250.
[ 12.207402] [drm] fb0: psbfb frame buffer device
[ 12.207412] [drm] intel_lvds_prepare
[ 12.207417] [drm] intel_lvds_set_power: 0
[ 12.207422] [drm] intel_lvds_set_backlight: the level is 0
[ 12.207428] [drm] LVDSGetPWMMaxBacklight: the max_pwm_blc is 31250.
[ 12.268109] [drm] LVDS: set mode 1024x768 4
[ 12.268169] [drm] intel_lvds_commit
I haven’t verified yet, but I think this driver uses the new KMS feature.
To check if the XOrg driver, psb, has been loaded or not:
# cat /var/log/Xorg.0.log | grep driver
Output:
(WW) AllowEmptyInput is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.
X.Org XInput driver : 4.0
(II) Loading /usr/lib/xorg/modules/drivers//psb_drv.so
(II) PSB: driver for Intel GMA500 chipsets: Intel GMA500
(II) Loading /usr/lib/xorg/modules/drivers//Xpsb.so
(II) PSB(0): [Xpsb] Disable hog plug daemon in PSB driver.
ABI class: X.Org XInput driver, version 4.0
Lastly if you are lazy and don’t want to go through this entire process then you can download all the packages and files from here.
Update: I have uploaded the kernel config file, at the above link, that I used to compile these packages.
That’s it guys. Have fun.
Would really appreciate if you can report success or failure on your system. Feel free to point out any improvements and errors. I would really to make this as easy as possible. So if you know a better method for steps please chip in.
Happy PSB’ing!
Lear about the latest technology with testking 642-902 course! pass your certification exam with highest score using testking 70-640 questions and testking 646-204 practice test.


Email Subscription









November 5th, 2009 at 3:39 pm
[...] one of my next post, we will see step-by-step instructions on how to compile and install the Poulsbo (GMA 500) graphics [...]
November 6th, 2009 at 2:33 am
Great, thank you !
I’ll try it this week-end…
Reply to this comment
November 7th, 2009 at 3:18 am
Great work ! Thank you very much, this is the unique howto for GMA 500 that allows me to install debian on my acer aspire !
Reply to this comment
November 8th, 2009 at 2:17 pm
Thanks for the howto, although I managed to compile psb for 2.6.30 before, I have not been able to make 3d work, until your blogpost.
Just for the record, I have compiled everything here (kernel included) with gcc optimized for the Atom cpu (package lpia-wrapper from Ubuntu), in hope I’ll get some performance improvement.
I suggest to apply the patch described at http://bbs.archlinux.org/viewtopic.php?pid=620607#p620607
to be able to dim the display brightness more. And look also at drm/psb-kernel-source-4.41.1/intel_lvds.c, to be able to do it via /sys interface as well (not only through xbacklight). If you replace 1 with 0 in the patch, you’ll be able to make the display completely black with just the brightness control – you might or might not want this.
Reply to this comment
December 14th, 2009 at 11:25 am
Hello!
Thank you very much for the great post. I followed this guide to my dell mini 10 with gma500 and the only problem i have is that i can’t dim my display. My /sys/class/backlight is empty. I tried xbackligh,setpci with no results too. Am i missing something?
Thank you
Reply to this comment
December 19th, 2009 at 2:24 pm
I’m glad to finally have Debian Squeeze on my Dell Mini-10 using its default resolution! Thank you so much! :)
I didn’t compile anything, I just used the files linked.
I came across one stumbling block, and repeated the procedure over 3 times. I found an omission that prevented me getting this installed using the collection of files.
At the command above:
# dpkg -i –force-overwrite libdrm-poulsbo*.deb
I changed it to the following and finally got the firmware installed:
# dpkg -i –force-overwrite libdrm-poulsbo*.deb psb-firmware_0.30-1squeeze1_all.deb
Reply to this comment
Admin Reply:
January 20th, 2010 at 10:45 am
Thanks for your input. I have added your info.
Reply to this comment
December 31st, 2009 at 3:40 pm
Thanks!!! you are my new god…..
I’m now enjoying my new resolution. Great HowTo, thanks a lot
Reply to this comment
January 7th, 2010 at 6:11 am
Hy guys
I got a Acer O751H and i have this cursed GMA 500, but 1 thing odd is the touchpad ‘tap to click’ not working on kde4, but it works under tty’s after installed gpm package, im running debian Squeeze on this netbook. Any clues on how to make it work in kde4 the tap to click?
thx in advance
Reply to this comment
January 10th, 2010 at 5:20 am
Thanks a lot! You’ve made a really nice work. By reading your HOWTO (and, I should admit, by installing the precompiled packages provided by you, without recompiling them from source ;-)), I was able to use that damn-crazy Poulsbo driver with Debian Squeeze on my ASUS 1101HA.
It’s a pity that this driver is not going to be included in the official Debian repos (mainly because of binary blobs and file overwriting….). And it’s even worse that we would probably never have any free driver for this chip-shit.
Reply to this comment
February 2nd, 2010 at 4:30 pm
Will these instructions work on Debian stable (lenny), or is there something here that requires testing/unstable?
Reply to this comment
Admin Reply:
February 15th, 2010 at 10:16 am
John,
These instructions should work on Debian Stable except for the fact that you will need to install the dkms package manually from Debian Testing since DKMS is not a part of current Debian Stable Release.
Reply to this comment
February 10th, 2010 at 3:38 pm
Hmm, on this page…
http://linux.koolsolutions.com/2009/07/25/info-state-of-intel-poulsbo-chipset-graphics-driver/
He said…
“I took the pointers provided by these people and was able to compile and install the Poulsbo’s XOrg driver (psb.ko) and framebuffer driver (psbfb) on my Debian Stable (Lenny system)”
I have Lenny too, but I’m stuck with “DKMS isn’t installed” so I should have forgotten something, but if he got his working then we should too !
Reply to this comment
February 11th, 2010 at 10:36 pm
John…
You’re right…I’m on a pure stable Lenny and I HAD to install the dkms from backport, no way without this. I then have successfully compiled psb.
Dear Admin, thanks a lot for the whole damn work you’ve done here !
Could you post here an ikconfig file from the Lenny kernel you used please ?
Thanks again for this nice usefull blog.
Reply to this comment
Admin Reply:
February 15th, 2010 at 10:11 am
Yes, you need to install DKMS package from Debian Testing if you are using Debian Stable. That’s what I ended up doing too. The only drawback in Debian Stable is that you cannot get 3D acceleration working on Stable. I have posted the .config file also now.
Reply to this comment
February 24th, 2010 at 11:53 am
Hi there!
I’m trying to switch my new eeepc 1201ha featuring gma500 to linux and this guide seems to be my only hope.
I installed a Debian Squeeze and tried to follow these steps, but the first debuild you wrote comes with a fatal error at line 1330:
applying patch use_udev to ./ … failed.
Do you have any idea?
Reply to this comment
RaptorBlue Reply:
February 26th, 2010 at 4:38 pm
Hi Aster,
do not copy the file drm_sysfs.c from the .tar file as described. As it seems the newer version is already patched.
Good Luck!
Raptor
P.S. Please let me know when you have working packages.
Reply to this comment
stefan Reply:
September 8th, 2010 at 12:25 am
Hi,
I had the same Problem like Aster, and didn’t replace drm_sysfs.c but no it stucks with another error:
http://pastebin.de/9788
Would be glad if you could help me, if I solve the problem on myself I will let you know.
Stefan
Reply to this comment
February 26th, 2010 at 4:49 pm
Hi Admin,
thanks for the work you have done.
Nevertheless i experienced a problem with the xorg driver.
During the boot process the display is changed to high resolution (when loading the psb kernel module).
But the xserver does not start anymore (your xorg.conf). The error log says: dlopen: dlopen: /usr/lib/xorg/modules/drivers/psb_drv.so: undefined symbol: resVgaShared
Any ideas on this?
Thx
Raptor
Reply to this comment
February 27th, 2010 at 11:08 am
First off, thank you for all your hard work. I’m running Gentoo, and can’t get the psb driver to work. I have everything installed, kernel mod loads and works, your xorg, etc. The moment that I try to start X I get a blank screen, X just hangs when it loads the psb driver. Only way to get into the system at that point is to ssh in. Half the time it just totally locks the system up and not even ssh is possible. Some system info:
System: VGN-P788K (2gb ram, 64gb ssd)
Kernel: 2.6.32 (Tux on Ice)
Gentoo packages and revisions:
Xorg-x11: 7.4-r1
Xorg-Server: 1.7.5
psb-kmod: 4.41.1_p10-r1
psb-firmware: 0.30_p3
xf86-video-psb: 0.32.0_p1
As long as I don’t ‘force’ X to use the psb driver, it will load and run fine ‘autoselecting’ the mesa driver…. Any suggestions?
Thank you!
Reply to this comment
March 3rd, 2010 at 2:55 pm
hi,
this looks great, i really want to be able to code on the move with my vaio p.
I’m willing to go with debian, but i thought i should ask, can this method be adapted to some other common distros? fedora 8,9,10?
i can guess at reasons why not, but i’m not that much a of a linux buff.
thanks for any constructive replies.
Reply to this comment
March 21st, 2010 at 10:41 pm
Hi
First of all, thanks for the great walkthrough! But I am having a problem. When I run debuild -i -us -uc -d -b, it comes out with this error:
/root/psb/drm/psb-kernel-source-4.41.1/drm_memory.c: In function ‘agp_remap’:
/root/psb/drm/psb-kernel-source-4.41.1/drm_memory.c:267: error: ‘struct agp_memory’ has no member named ‘memory’
make[5]: *** [/root/psb/drm/psb-kernel-source-4.41.1/drm_memory.o] Error 1
Any ideas? Thanks in advance.
Reply to this comment
Steve McIntyre Reply:
April 10th, 2010 at 5:17 pm
That’s a change in the kernel AGP code responsible:
commit 07613ba2f464f59949266f4337b75b91eb610795
Author: Dave Airlie
Date: Fri Jun 12 14:11:41 2009 +1000
agp: switch AGP to use page array instead of unsigned long array
This switches AGP to use an array of pages for tracking the
pages allocated to the GART. This should enable GEM on PAE to work
a lot better as we can pass highmem pages to the PAT code and it will
do the right thing with them.
Signed-off-by: Dave Airlie
It’s not too hard to look at the other kernel code in the same commit and update the psb code to match.
Reply to this comment
warrenpw Reply:
April 30th, 2010 at 10:51 pm
Thanks for the reply! However, I think that I would only break the driver worse. Do you think you could post a little how-to?
Reply to this comment
March 28th, 2010 at 5:22 pm
Can I upgrade kernel to a new version or every new kernel needs a new installation of the packages?
like apt-get dist-upgrade is ok or i must stick with my current kernel to keep the driver working?
Reply to this comment
March 30th, 2010 at 11:02 am
Could you provide us with some update on installing these drivers? I’m trying to do it on my Vaio P, but when I use debuild, I’m just shown with a message that there is no such package and can’t install with from repos. I’ve tried to install these packages you’ve prepared as well, but on Debian Lenny I get “dlopen: /usr/lib/xorg/modules/drivers/psb_drv.so: undefined symbol: resVgaShared” and so, psb module fails to load. It’s the same error as RaptorBlue’s. I’ve tried to edit /usr/lib/xorg/modules/drivers/psb_drv.so and remove resVgaShared, but after that I’m getting “Fatal server error: Caught signal 11 (Segmentation fault). Server aborting”. Any idea about it?
Reply to this comment
March 31st, 2010 at 4:15 pm
Well, after trying out testing, it seems that the errors I reported are still present in squeeze.
Reply to this comment
April 3rd, 2010 at 1:50 am
Out of the pure curiosity did I try Ubuntu 10.04 and it seems to have the same problems as Debian, i.e. resVgaShared error while loading psb module.
Reply to this comment
April 10th, 2010 at 5:33 pm
Trying to do this on current squeeze, I’ve had to hack a few places to get things to build. The kernel and Xorg in squeeze are newer than the psb code in a few places so wouldn’t wotk without this.
I’ve managed to build everything in the end, but when I start X it locks up. The Xorg.0.log file shows that I’m loading bits just fine, but:
(II) Module glx: vendor=”X.Org Foundation”
compiled for 1.7.5, module version = 1.0.0
ABI class: X.Org Server Extension, version 2.0
(==) AIGLX enabled
(II) Loading extension GLX
(II) LoadModule: “psb”
(II) Loading /usr/lib/xorg/modules/drivers/psb_drv.so
(II) Module psb: vendor=”X.Org Foundation”
compiled for 1.7.6, module version = 0.29.0
Module class: X.Org Video Driver
ABI class: X.Org Video Driver, version 6.0
(II) Debug: psbSetup
(II) PSB: driver for Intel GMA500 chipsets: Intel GMA500
(II) Primary Device is: PCI 00@00:02:0
(WW) Falling back to old probe method for psb
(II) Debug: psbProbe
(–) Chipset Intel GMA500 found
(II) PSB(0): Debug: Allocating new device
(II) PSB(0): Debug: psbPreInit
(II) PSB(0): psb_drv – 5.0.1.0046
(II) Loading sub module “vbe”
(II) LoadModule: “vbe”
(II) Loading /usr/lib/xorg/modules/libvbe.so
(II) Module vbe: vendor=”X.Org Foundation”
compiled for 1.7.5, module version = 1.1.0
ABI class: X.Org Video Driver, version 6.0
(==) PSB(0): Depth 24, (–) framebuffer bpp 32
(II) Loading sub module “fb”
(II) LoadModule: “fb”
(II) Loading /usr/lib/xorg/modules/libfb.so
(II) Module fb: vendor=”X.Org Foundation”
compiled for 1.7.5, module version = 1.0.0
ABI class: X.Org ANSI C Emulation, version 0.4
(–) PSB(0): Linear framebuffer at 0×0
(==) PSB(0): RGB weight 888
(==) PSB(0): Default visual is TrueColor
(**) PSB(0): Option “IgnoreACPI” “1″
(==) PSB(0): Use hardware cursor.
(**) PSB(0): Not using ACPI for LVDS detection.
(II) Loading sub module “dri”
(II) LoadModule: “dri”
(II) Reloading /usr/lib/xorg/modules/extensions/libdri.so
(II) PSB(0): Debug: psbPreinitXpsb
(II) Loading sub module “Xpsb”
(II) LoadModule: “Xpsb”
(II) Loading /usr/lib/xorg/modules/drivers/Xpsb.so
(II) Module Xpsb: vendor=”Tungsten Graphics Inc.”
compiled for 1.6.0, module version = 0.1.0
and there it stops. I guess X in Squeeze is just too new and stuff compiled for 1.6.0 is just not going to work. I’ll try again using a lenny install on the same hardware; I had only updated to squeeze to try to get this hardware working, *then* found the guide here!
Reply to this comment
May 26th, 2010 at 8:18 pm
would you recommend following this guide for ubuntu?
Reply to this comment
Piotr Kubaj Reply:
June 1st, 2010 at 4:11 am
https://wiki.ubuntu.com/HardwareSupportComponentsVideoCardsPoulsbo
Poulsbo works on Ubuntu Lucid with the guide above. The guide for Debian here is only for xorg-server 1.6.x.
Reply to this comment
June 8th, 2010 at 11:02 pm
What is the status of this at this point in time? I had Ubuntu 10.04 Lucid working with the the info above:
https://wiki.ubuntu.com/HardwareSupportComponentsVideoCardsPoulsbo
Upgraded the kernel and it broke my xserver! Now I am searching for new solutions. I am glad I had it dual-booting.
What is the word with Squeeze?
Reply to this comment
July 22nd, 2010 at 3:00 am
[...] howto-compiling-intel-atom-poulsbo-gma-500-graphics-driver-on-debian [...]
August 12th, 2010 at 2:36 pm
thanks man, realy good guide
Reply to this comment
September 3rd, 2010 at 7:36 am
Hangs here at me :( I use a FitPC2
applying patch use_udev to ./ … failed.
make: *** [patch-stamp] Error 1
dpkg-buildpackage: error: debian/rules build gave error exit status 2
debuild: fatal error at line 1327:
dpkg-buildpackage -rfakeroot -d -us -uc -i -b failed
Reply to this comment
September 3rd, 2010 at 1:19 pm
While trying to build xpsb-glx under squeeze:
$ debuild -i -us -uc -d -b
…
dpkg-shlibdeps: error: couldn’t find library libva.so.0 needed by debian/xpsb-glx/usr/lib/xorg/modules/dri/psb_drv_video.so (ELF format: ‘elf32-i386′; RPATH: ”)
I went hunting for the library:
$ dpkg –contents libva1_1.0.1-3_i386.deb
…
lrwxrwxrwx root/root 0 2010-09-03 15:00 ./usr/lib/libva.so.1 -> libva.so.1.0.1
So it seems as though libva has been replaced with libva1?
Anyone have any idea on how to fix this? Thanks!
b.g.
Reply to this comment
Admin Reply:
September 3rd, 2010 at 4:02 pm
Did you install the libva packages before trying to compile the xpsb-glx component as mentioned in Step 4(e)?
# dpkg -i libva*.deb
The libva packages should be available from Step 4(d) and prerequisite of producing libva packages is to install libdrm-poulsbo packages:
# dpkg -i –force-overwrite libdrm-poulsbo*.deb
And the libdrm-poulsbo* packages are generated by Step 4(a).
So there is a whole chain of dependencies and that’s why the Step 4 in broken down into 4a, 4b, 4c, 4d, 4e.
Hope this helps.
Reply to this comment
September 3rd, 2010 at 5:19 pm
Yes. It looks like the packages I built provide libva.so.1, but require libva.so.0.
Reply to this comment
September 7th, 2010 at 8:24 am
Aha! I just noticed that the libva source code I have here is libva-1.0.1, not libva-0.29 as your example shows. I’m restarting the procedure after doing this:
$ sudo apt-get source libva=0.29
… but then things die due to a configure script complaint about a missing libdrm_psb. It looks like I pulled in the wrong libdrm-poulsbo sources, too:
$ ls libdrm-poulsbo*dsc
libdrm-poulsbo_2.3.0-0ubuntu1~904um1.dsc
Hmmm….
Reply to this comment
September 7th, 2010 at 8:41 am
In particular, where you say that the build process should yield this:
# ls -l ../libdrm-poulsbo*.deb
../libdrm-poulsbo1_2.3.0-1squeeze1_i386.deb
I’m getting this:
$ ls -l ../libdrm-poulsbo*.deb
../libdrm-poulsbo1_2.3.0-0ubuntu1~904um1_i386.deb
So even though I’m supposedly pulling from the same repository that you are, my build results aren’t the same as yours. Ideas?
Reply to this comment
Admin Reply:
September 7th, 2010 at 9:35 am
Yes it is good idea to match the version of the packages. Also you download all the compiled packages from here too:
http://linux.koolsolutions.com/wp-content/uploads/debian/
Reply to this comment
Bill Gatliff Reply:
September 7th, 2010 at 11:00 am
Do you have the sources for the packages on koolwal.net? I really need those, for traceability.
Reply to this comment
Admin Reply:
September 7th, 2010 at 11:46 am
The line:
apt-get source libdrm-poulsbo libva psb-firmware psb-meta xpsb-glx xserver-xorg-video-psb
fetches the sources from:
deb-src http://ppa.launchpad.net/ubuntu-mobile/ppa/ubuntu jaunty main
Looks like the libva-0.29 packages are still there to download:
http://ppa.launchpad.net/ubuntu-mobile/ppa/ubuntu/pool/main/libv/libva/
Reply to this comment
September 7th, 2010 at 2:07 pm
Ok, I found one problem— I was sitting behind an apt-proxy server that had cached the libva package from a different distro. Oops!
I cleared all of that out, and started from scratch. Now I’m stuck here when building xserver-xorg-video-psb-0.31.0:
$ debuild -i -us -uc -d -b
…
make[3]: Entering directory `/home/user/psb/xorg/xserver-xorg-video-psb-0.31.0/src’
/bin/bash ../libtool –tag=CC –mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -fvisibility=hidden -I/usr/include/xorg -I/usr/include/pixman-1 -I/usr/include/drm -I/usr/include/X11/dri -Wall -I.. -g -O2 -c -o psb_accel.lo psb_accel.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -fvisibility=hidden -I/usr/include/xorg -I/usr/include/pixman-1 -I/usr/include/drm -I/usr/include/X11/dri -Wall -I.. -g -O2 -c psb_accel.c -fPIC -DPIC -o .libs/psb_accel.o
In file included from psb_accel.h:40,
from psb_accel.c:45:
Xpsb.h:41:27: error: xf86Resources.h: No such file or directory
In file included from psb_accel.c:46:
psb_driver.h:50:21: error: xf86RAC.h: No such file or directory
psb_accel.c: In function ‘psbTexOffsetStart’:
psb_accel.c:1369: warning: unused variable ‘pScrn’
make[3]: *** [psb_accel.lo] Error 1
make[3]: Leaving directory `/home/user/psb/xorg/xserver-xorg-video-psb-0.31.0/src’
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/user/psb/xorg/xserver-xorg-video-psb-0.31.0′
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/user/psb/xorg/xserver-xorg-video-psb-0.31.0′
dh_auto_build: make -j1 returned exit code 2
make: *** [build-stamp] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
debuild: fatal error at line 1327:
dpkg-buildpackage -rfakeroot -d -us -uc -i -b failed
I checked, and xf86Resources.h is in the lenny version of xserver-xorg-dev, but it isn’t anywhere that I can find it in squeeze. I even checked packages.debian.org. My build machine has this:
$ dpkg -l xserver-xorg-dev
ii xserver-xorg-dev 2:1.7.7-3
What version of xserver-xorg-dev are you building with?
Reply to this comment
Admin Reply:
September 8th, 2010 at 9:19 am
Yes you right. Wonder why the removed in from Squeeze. That means either you will have to get it from Lenny or Unstable without pulling in a whole lot of other dependencies.
I don’t remember the version of xserver-xorg-dev at the time of writing this guide as it is almost an year ago.
Reply to this comment
October 4th, 2010 at 2:31 am
Thanks for the howto.
I Have a issue when i load the psb module.
[ 7.411834] psb 0000:00:02.0: PCI->APIC IRQ transform: INT A -> IRQ 16
[ 7.411943] psb 0000:00:02.0: setting latency timer to 64
[ 7.412058] [drm] psb – 5.0.1.0046
[ 7.428835] [drm:psb_do_init] *ERROR* Debug is 0×00000001
[ 7.429008] [psb:0x01:psb_msvdx_init] MSVDX: psb_msvdx_init
[ 7.429018] [psb:0x01:psb_msvdx_init] Enabling clocks
[ 7.429024] [psb:0x01:psb_msvdx_init] MSVDX: Setting up RENDEC
[ 7.444739] [psb:0x01:psb_msvdx_init] MSVDX: RENDEC A: 10000000 RENDEC B: 10200000
[ 7.444750] [psb:0x01:psb_setup_fw] MSVDX: psb_setup_fw
[ 7.444756] [psb:0x01:psb_setup_fw] MSVDX: Detected Poulsbo D1 or later revision.
[ 7.444765] [psb:0x01:psb_setup_fw] MSVDX: RAM bank size = 4096 bytes
[ 7.444775] psb 0000:00:02.0: firmware: requesting msvdx_fw.bin
[ 7.466880] [psb:0x01:psb_setup_fw] MSVDX: Retrieved pointers for firmware
[ 7.466891] [psb:0x01:psb_setup_fw] MSVDX: text_size: 2841
[ 7.466899] [psb:0x01:psb_setup_fw] MSVDX: data_size: 1046
[ 7.466907] [psb:0x01:psb_setup_fw] MSVDX: data_location: 0x82882c80
[ 7.466915] [psb:0x01:psb_setup_fw] MSVDX: First 4 bytes of text: 0x9040c001
[ 7.466924] [psb:0x01:psb_setup_fw] MSVDX: First 4 bytes of data: 0x809058b0
[ 7.466931] [psb:0x01:psb_setup_fw] MSVDX: Uploading firmware
[ 7.470832] [psb:0x01:psb_upload_fw] MSVDX: Upload done
[ 7.471885] [psb:0x01:psb_upload_fw] MSVDX: Upload done
[ 7.477776] [psb:0x01:psb_setup_fw] MSVDX: MTX Initial indications OK
[ 7.477783] [psb:0x01:psb_setup_fw] MSVDX: MSVDX_COMMS_AREA_ADDR = 00002cc0
[ 7.477789] [psb:0x01:psb_setup_fw] MSVDX releasing firmware resouces….
[ 7.944918] psb 0000:00:02.0: LVDS: EDID invalid.
[ 8.428867] psb 0000:00:02.0: LVDS: EDID invalid.
[ 9.749494] [drm] fb0: psbfb frame buffer device
[ 10.275961] [drm] Initialized psb 4.41.1 20090416 on minor 0
There is a problem with EDID block. get-edid failed too :
VBE/DDC service about to be called
Read EDID
Performing real mode VBE call
Interrupt 0×10 ax=0x4f15 bx=0×1 cx=0×0
Function supported
Call failed
The EDID data should not be trusted as the VBE call failed
Error: output block unchanged
Have you an idea about this ?
Debian Lenny
kernel : 2.6.32.7
I just compil module drm.ko et psb.ko.
Reply to this comment
October 4th, 2010 at 2:42 am
When i use the command startx,
a black screen appaers. xorg didnt’t find psb module :
(II) LoadModule: “psb”
(WW) Warning, couldn’t open module psb
(II) UnloadModule: “psb”
(EE) Failed to load module “psb” (module does not exist, 0)
Whereas the command modprobe psb is ok .
Have you an idea about this ?
Reply to this comment
Admin Reply:
October 19th, 2010 at 4:27 pm
have you checked if the module “psb” is in the:
/lib/modules//drivers…..
Reply to this comment
October 21st, 2010 at 6:41 pm
[...] Compiling Intel Atom Poulsbo GMA 500 Linux graphics driver οח Debian аחԁ Ubu… [...]
October 21st, 2010 at 7:42 pm
[...] Compiling Intel Atom Poulsbo GMA 500 Linux graphics driver οח Debian аחԁ Ubu… [...]
December 17th, 2010 at 11:42 am
Hola despues de añadir el repositorio jaunty, le doy el apt-get update y me dice que no encuentra las keys publicas de ese repositorio. Me podriais decir como las instalo?
Gracias
Reply to this comment
February 9th, 2011 at 1:34 am
Hi,
Many thanks for this guidance. Will there be a updated version of this howto, now there is a stable release of debian?
Hope to hear from ya!
Marco
Reply to this comment
Kushal Koolwal Reply:
February 9th, 2011 at 9:15 am
Yes there will be one. I have been able to get the Poulsbo driver working with Debian Squeeze. I just need some time to write a post about it.
Reply to this comment
marco van der grient Reply:
February 18th, 2011 at 10:18 am
http://wiki.debian.org/IntelEmbeddedMediaGraphicsDriver
Myabe you can use this info to make a working howto?
Cheers, Marco
Reply to this comment
February 9th, 2011 at 9:37 am
That’s great news. Awesome, and thank you for your time and knowledge!
Reply to this comment
February 19th, 2011 at 2:54 am
Hey Everyone,
Just a quick question about the performance of the EMGD driver on the AO751h, is the video working in full screen or is there still a problem with frame dropping? Oh, also the 3D performance, is it fully working?
Reply to this comment
May 7th, 2012 at 1:50 am
[...] there a good part of your problem, its too old. Possible solution- http://linux.koolsolutions.com/2009/…ver-on-debian/ Found here- http://forums.debian.net/viewtopic.php?f=7&t=45942 Debian wiki 'Intel Embedded [...]