Intel GMA 500 (Poulsbo) graphics on Linux: a precise and comprehensive summary as to why you’re screwed

So, poking around idly on Google this morning, I came across the interesting fact that there is, in fact, a native Linux driver for Intel GMA 500 – Poulsbo – graphics on Linux.

Don’t get excited, though. It’s not like it’s actually any use.

That was the summary. Here’s the gory details…

As I wrote in my previous post, the GMA 500 is not really a follow up to all the previous Intel chips. It’s a bit of Intel’s platform with a PowerVR (those of you who’ve been breaking crap as long as I have may remember PowerVR as an early contender to 3DFX and NVIDIA; they’ve since scurried off into niche markets) chip slapped on top of it. So it’s basically a whole new architecture that needs a whole new driver.

Aside from the Vaio P and a couple of other systems, there’s one significant machine with the GMA 500 chip in it: the Dell Mini 12. Why’s it significant? Because Dell ship it with Ubuntu.

So, yes, there’s a native driver. Intel, Dell or some combination of the two contracted out to Tungsten Graphics to write a driver for it. This is presumably because Tungsten have been supporting PowerVR chips for a long time, so they know their way around the hardware. So, the driver was written, and included in the special-sauce version of Ubuntu that Dell uses, and also in Ubuntu Netbook Remix. It was even developed under the auspices of the Moblin project at first, and you can find the code in Moblin git – X.org driver, kernel module. Where it hasn’t been touched for eight months.

This is the first clue that all is not well. Up to that point it all looks fairly straightforward, but after that it rapidly goes to the dogs.

Trying to get the thing to work on a modern distribution, the first thing you notice is that it’s messy code. The kernel driver consists of a copy of about half of drm, with all sorts of stuff included and built that doesn’t really need to be. And it’s not remotely in sync with current drm. All it really ought to be is a few files which should have rapidly been merged into Mesa upstream. There’s even a comment in the code that shows the authors are aware of this, saying that one fairly trivial change should be done before the code is contributed upstream. But the change hasn’t been done to any Tungsten-, Dell-, Intel- or Ubuntu-sourced version of the code I can find, so it’s still a mess languishing in its own repository.

The second thing you notice is it doesn’t build with any kernel post-2.6.24, due to that issue and a couple of others.

The third thing you notice, if you’re lucky, is that it’s not even really the latest version of the code, and this is where things get really odd. As I mentioned, the copies of both the X driver and kernel module in moblin.org git have not been touched for eight months. However, squirrelled away in dank corners of the Ubuntu empire, you’ll find rather later versions of the code. It has eventually been figured out that the latest version of the X driver code is this one, if you combine the ‘upstream’ tarball (which is not, in fact, available anywhere ‘upstream’ that anyone I know of can find) and Ubuntu patch in that directory. The latest version of the kernel module code is stuffed in Ubuntu’s Miscellaneous Kernel Modules tarball – this one.

The further you dive down the rabbit hole, the odder things get. The X driver seems to depend on a proprietary firmware file, called msvdx_fw.bin, for…something. Apparently it’s needed for 3D acceleration and video playback acceleration to work. You can download this file from a post in an extensive and frequently messy and/or downright ill-informed Ubuntu forum thread on the topic. And, as far as I can tell, nowhere else. It also seems to depend on a supplementary X driver, Xpsb, for the same things – without both the firmware and Xpsb, 2D video playback acceleration and 3D acceleration don’t work. I don’t know where the heck you find that. The source trees definitely don’t build it.

Some of this is documented – in passing, seemingly more as an example case than anything else – here. A page that’s just sort of lying in the Ubuntu Wiki. Again, I only found it through the giant forum thread. The associated Launchpad project is listed as ‘Approved’, since May 2007, but ‘Not started’. With no other information.

So, anyway. I picked my way through this bizarre minefield and then tried to get the fricking thing to work.

First I hacked up a patch for the kernel module myself to make it build, not really knowing what I was doing. But it seems to more or less work. When it loads, it gives me a native resolution framebuffer. Out of interest, trying to start X with the fbdev driver at this point gets started and shows the grey dithered “X is starting up now” screen, but then hangs the system with caps lock and scroll lock lights flashing. Interesting result, but not what I was really looking at anyway.

Later on, while trying in vain to find some combination that would work, I found that Olivier Blin of Mandriva has been poking at this stuff, as he has a cleaner patch to make it build against 2.6.27 in his personal scratch directory: here. So I tried building with that patch instead of my own hack. They seem to work about the same.

Then I poked about at the X driver. It expects to build against various headers from the version of drm in the kernel module source, not the system copies (or at least not the system copies on Fedora 10). It also expects a particular xf86mm.h, which I pulled out of the relevant Ubuntu libdrm-dev package – so already having to hack stuff up here. With that and a few other minor tweaks, I got it to build.

But…yeah, it doesn’t work. With the newer version of the X driver from Ubuntu, it fails with a “could not mmap framebuffer (invalid argument)” error, almost immediately on trying to start X. With the older version from Moblin git, it just freezes on X startup. The system’s still running – I can power it off clean with the power button, it shuts down properly – but X doesn’t start and I can’t see a console either. There’s just a text cursor frozen at the top left of the screen. The last lines in Xorg.0.log are:

(II) Primary Device is: PCI 00@00:02:0
(WW) Falling back to old probe method for psb
(II) Debug: psbProbe

Okay, so after a whole day spent bashing around at this crap, I can very confidently and conclusively say, it’s utterly broken. By the looks of it, you can get it up and running, with a bit of futzing around, either by running Ubuntu Netbook Remix or running Ubuntu Hardy and forcing the Netbook Remix packages onto it – see the forum thread for details on that. But with any modern distro, it just doesn’t look like it’s going to work.

This is really silly, because the code is obviously 99% basically there and working. It just needs the people who actually know the code and the hardware to put it in the right places and not random obscure undocumented repositories, submit it upstream, and keep it up to date. But because, for whatever reason, the Intel, Tungsten, Dell and Ubuntu folks can’t get their fingers out of their asses and actually provide the code in a sensible, sane and open way, few people even know it exists, no-one’s seemingly working to keep it going with newer kernels, X.org and libdrm, and no-one has a freaking clue how to use it. And every Linux user with this chipset is getting screwed.

It’s not good enough, guys. Just get together, fix the freaking code, and get it in the kernel and X.org so distributions can make it just work and everyone will be happy. Thanks.

62 Responses

  1. pseudonymjames
    pseudonymjames January 31, 2009 at 12:28 am | | Reply

    Adam,

    Thanks for the update. I have been waiting for a post like this since the P was announced. As a mac user, I can’t get myself to use Windows again as a main operating system and the form factor for the P would be ideal for me, so I was waiting with someone with more linux knowledge to give it a go. I have been following that Ubuntu thread (I posted it for you on Engadget) and it didn’t inspire much hope for the P but I didn’t want to give up. It looks like I will have to keep waiting before I get my own P. Good luck!

  2. gregdek
    gregdek January 31, 2009 at 2:27 am | | Reply

    Welcome aboard, dude. 馃檪

  3. brteag00
    brteag00 January 31, 2009 at 9:09 am | | Reply

    Your conclusions are basically the same as those I came to. I’ve been a prolific poster in the Ubuntu forums thread you mentioned, though I don’t count myself in the “ill-informed” crowd. I knew it was a mess going in, but the hardware (Mini 12) fits my needs so perfectly that I couldn’t pass it up.

    FWIW, the two binary blobs, Xpsb.so and msvdx_fw.bin, came from the Dell-distributed Ubuntu image. The DRI file, psb_dri.so, and the hardware-specific libva driver, psb_drv_video.so, also came from there. As far as anyone can tell, they are redistributable. The Intel Embedded Graphics Driver release notes suggest that they’ll be available “officially” in the next IEGD release, which (judging from previous releases’ timing) should be RSN.

    You’re perfectly right to be upset that the driver situation is so screwed up for such a promising platform. On the other side of the coin, my Netbook Remix-based install is rock-solid and performs well. It’s not clear to me that there’s a whole lot to be excited about in Intrepid or Fedora 10 (except a new NetworkManager, which I pulled from a PPA.) And with GEM, DRI and the X server all in flux, the state of Linux graphics in general is a mess right now anyway, so it doesn’t really surprise me that Intel/Tungsten are waiting for things to settle down before they get their act together.

    I noticed that Phoronix picked up on the issue today. Hopefully, some better visibility will convince the people working on the drivers that a little more transparency is in their best interest, as well as ours.

  4. brteag00
    brteag00 January 31, 2009 at 2:44 pm | | Reply

    I think you misunderstood my intent. I am no Intel apologist, and I wasn’t saying the situation was acceptable in the long-run — I don’t want to be stuck running Hardy forever. I was saying that, given the circumstances, I feel fortunate that there’s SOME setup that works. I’ve certainly been around long enough to remember when that wasn’t necessarily the case.

    The odd mix of open and proprietary reminds me of an embedded environment – like what the Open Handset people go through when they write code to control GSM modem. No surprise, since Intel has aimed Poulsbo pretty squarely at the MID market.

    Anyways, /. picked up the story too, so hopefully we’ll see some movement on the issue. For all us frustrated Poulsbo users, thank you for agitating on this.

  5. slothman
    slothman January 31, 2009 at 4:10 pm | | Reply

    How can we help this along? Has anyone gotten “bug bounty” together so we could chip in for a reward for the developer who solves this?

  6. GMA500 support on Linux not quite there yet. | UMPCPortal - The Mobile Internet and Computing Reference Site

    […] AdamW on Linux and more 禄 Intel GMA 500 (Poulsbo) graphics on Linux: a precise and comprehensive su…. […]

  7. [Phoronix] Intel's Poulsbo Driver A Bloody Mess? - Overclock.net - Overclocking.net

    […] like a bloody mess. Adam Williamson of Red Hat (previously known for his Mandriva work) has shared some of his Poulsbo experiences. We will only be seeing more Intel Poulsbo devices enter the marketplace, so hopefully […]

  8. Linux: VDPAU y los avances en reproducci贸n de videos | FeedXtractor

    […] en dispositivos MID’s y netbooks, sus drivers tienen componentes privativos y han sido duramente criticados por su deficiente […]

  9. Linux: VDPAU y los avances en reproducci贸n de videos : Blogografia

    […] en dispositivos MID’s y netbooks, sus drivers tienen componentes privativos y han sido duramente criticados por su deficiente […]

  10. Linux: VDPAU y los avances en reproducci贸n de videos « Tecnolog铆a All-In-One Blogs

    […] en dispositivos MID’s y netbooks, sus drivers tienen componentes privativos y han sido duramente criticados por su deficiente […]

  11. mkelly
    mkelly February 23, 2009 at 4:34 pm | | Reply

    I just picked up a Vaio-P and noticed that when you’re in Sony’s Linux-based “crossbar” quickboot environment, you get a 1600×768 X session with what appears to be a native driver.

    Anyone know what version of Linux this quickboot environment is based on?

  12. chizu
    chizu February 24, 2009 at 11:10 pm | | Reply

    I’ve gotten native resolution to work using uvesafb and fbdev on Gentoo, a similar setup should work on Ubuntu. I’d be interested in hearing about results on older kernels (particularly if the backlight turns on after waking the laptop from sleep under the Ubuntu kernel):

    Here’s what I did in Gentoo:
    http://www.spicious.com/blog/2009/02/xorg-native-resolution-on-the-vaio-p/

    @mkelly
    The Linux included in the startup environment is Corel InstantOn. I have the filesystem images it uses, but haven’t started tearing them apart yet.

    Hopefully Intel and Tungsten/VMWare get us some specifications or at least something working.

  13. mc
    mc February 26, 2009 at 12:23 am | | Reply

    To add to what mkelly said:
    Since XMB uses Linux, you should be able to request the source code to the X environment that they used. If a binary driver was used, that might not be as helpful, but maybe it could be manually added to Fedora 10/11 or something. Perhaps you could browse the partition that XMB lives on and poke around for that driver.

    I wonder if we will see a VGN-P listing at http://www.sony.net/Products/Linux/Download/category1.html soon. The main search page is http://www.sony.net/Products/Linux/Download/search.html

    I have been waiting for a form factor like the Vaio P for a long time: A small touch type-able keyboard with a display sized to the keyboard for portability. Fanless operation, LED backlighting (lower power consumption), and higher resolution are also big factors for me. The moment that I see Linux completely work on it is the moment that I will be buying one.

  14. Nekohayo ! » Blog Archive » Mini 9 et Ubuntu 8.10: premi猫res impressions

    […] qui fonctionnent 脿 la perfection. J’ai toutefois 茅vit茅 le Mini 10 et Mini 12 脿 cause de probl猫mes de compatibilit茅 du chipset GMA 500 (et ils sont trop chers/encombrants, de toutes […]

  15. gozala
    gozala March 4, 2009 at 7:41 am | | Reply

    Hi Adam, I’m one of the guys thinking to buy this laptop (But I’m definitely not going to switch to windows) so I have some question regarding the laptop

    * Does WWAN (HSDPA) & GPS works ?
    * Web camera ?
    * Build in mic ??

    Thanks in advance

  16. gozala
    gozala March 4, 2009 at 8:56 am | | Reply

    One more question

    Do you think it could be used as primary computer or it’s just a netbook

  17. AdamW on Linux and more » Blog Archive » News from the Poulsbo front

    […] thanks to a hot tip in the comments to my original post, I’ve actually got native resolution display on my Vaio P […]

  18. virus7
    virus7 March 24, 2009 at 12:51 pm | | Reply

    thanks for Ur detailed post.
    the mini 12 is stylish, isn’t it?
    it’s a shame, hardware implemented so badly.
    my point is; not driver ever will help.
    try any ditro, use a generic vesa driver, use extensivly and watch it chrashing.
    so what?the driver is the reason?
    I do doubt that.
    no distro I familiar with gets the native resolution to work without that binary.
    may be dell tryed to save some money on the bios implementation as done before by other peaces of cheap hardware.

    play a dvd using the original binary, watch the mini 12 crash within secondes.
    too bad.
    such a beauty, cool technology mostly consumpting at 8 Watts power or less.
    the best way to find out is to install windows and see it playing dvd’s.
    microsoft likes to work arraound the bios code as a principle.
    this I must confess is in such bad cases a really good point for windows!
    It is neither the driver not the distro it is the implementation.
    send it back or trash it.

  19. wleewillard
    wleewillard April 22, 2009 at 5:48 pm | | Reply

    I was a little to quick to the game, and was hoping to use this as my traveling work laptop. Problem I am facing now is that I work for Red Hat, and I certainly can’t be running windows, but it doesn’t seem anyone can get this to work with Fedora, or any other flavor of Linux. Has anyone heard of anyone having luck using just an external monitor with this? I have the vaio P series cradle that has an ethernet port, and a vga connection. Even if the included screen doesn’t work, using an external monitor would be terrific, cause I could just use the work spaces.

    thanks for any advice!!!

  20. wleewillard
    wleewillard April 23, 2009 at 4:53 pm | | Reply

    So do I just need to wait for the kernal to be updated by the community for the GMA 500? Thanks

    Also have you seen this, would this work?

    knoppix 6 and eeebuntu remix of 8.10 both set the correct native 1600脳768 resolution.
    They both do it by merely allowing the receny xorg to do it automatically rather than by setting anything special in xorg.conf. However you can get regular ubuntu to do the same by overriding the monitor refresh rate detection in xorg.conf.

    sudo vi /etc/X11/xorg.conf

    find the Monitor section, looks similar to this:

    鈥-snip鈥-
    Section 鈥淢onitor鈥
    Identifier 鈥淢onitor0鈥
    ModelName 鈥淕eneric Monitor鈥
    # HorizSync 28.0 – 96.0 # Warning: This may fry old Monitors
    # VertRefresh 50.0 – 60.0 # Extreme conservative. Will flicker. TFT default.
    EndSection
    鈥-snip鈥-

    coomment out any HorizSync and VertRefresh lines that aren鈥檛 already commented out,
    then add these two lines before EndSection:

    HorizSync 30 – 80
    VertRefresh 50 – 90

    Then reboot.

    xorg automatically runs at 1600脳768 after that at least on xubuntu jaunty as of today.

    These are not specific or special numbers that actually reflect the limits of what the screen can do. They are merely wide enough to allow the automatically detected correct native 1600脳768 (16 & 24 bit) to be used.

    I haven鈥檛 yet tracked down why xorg seems to be a lot slower in native xubuntu installed onto the 8G recovery partition on the hd than either knoppix 6, puppy linux, or eeebuntu from intrepid (8.10) all running from either usb sticks or from a 4G memorystick pro duo(*).

    hd access I expect to be different, especially for puppy which loads completely into ram, but xorg itself is pretty slow. Tolerable given the hardware, but other versions and even Vista all perform better on the same hardware.

    (*) You can鈥檛 boot directly from the ms slot, but once you have grub in the mbr and grub support files on the hd, in the former recovery partition most likely, then you can take just the kernel and initrd from say, knoppix, and put them with the other grub boot files, and the rest of the knoppix cd on the memorystick, and add a stanza in menu.lst to tell grub to load the knoppix kernel and initrd, and then init in knoppix鈥檚 inird will find the knoppix image and user-persistent-data image on the memorystick and use it automatically. So you can have knoppix always available as a boot option without having to use a seperate usb stick or having to install more than a couple megs on the hd.

    Also, as long as you leave Vistas ntfs filesystem alone the InstantON/XMB feature still works after installing linux over the recovery partition. Or at least as long as there is an NTFS partition and filesystem with c:\InstantON and c:\Users\Public directories & contents saved from the original install.

  21. bitsenbloc » Blog Archive » Poulsbo driver sucks

    […] poulsbo driver in Ubuntu 9.04. Thus, I’ll have to continue using my Dell Mini 12 with the shitiest version […]

  22. wleewillard
    wleewillard April 30, 2009 at 12:40 pm | | Reply

    has anyone considered using an NDIS Wrapper, to use the windows driver, but still work with Linux..

  23. wleewillard
    wleewillard May 1, 2009 at 7:13 pm | | Reply

    Alright.. Let me do some more research… Does the HP Mini use the same graphics card? Because a friend of mine at the RH HQ was using a fedora OS with it, and had an external monitor running. Any ideas you can give me of what to ask some of the senior Fedora people?

  24. wleewillard
    wleewillard May 2, 2009 at 1:41 pm | | Reply

    Well crap.. Looks like I am SOL for now. Thanks!!

  25. wleewillard
    wleewillard May 4, 2009 at 6:01 pm | | Reply

    So another question. I have an old macbook I wanted to load up with fedora 11, where would I go to download the right image for it. I downloaded the entire image, but there are so many files and folders, I can’t tell which one to burn as an image. Also I need the 386 one right? Thanks by the way, do you take donations to keep your sight running, and for your time?

  26. zekeb
    zekeb May 5, 2009 at 1:47 pm | | Reply

    Hi Adam, I miss you over at the Mandriva forums, but glad you have a happy home with Fedora.

    I just got a new Mini10 and it sadly has the GMA 500 video device. I sure wish I had read your post before I bought it 馃檨

    I am running MDV 2009.1 on it and besides the horrible graphics, it runs flawlessly under gnome.

    I hope that this issue is resolved shortly because as you pointed out somewhere else, there are a number of “mainstream” netbooks itching for Linux out right now that use this chip.

    P.S. I will be in BC next week visiting my in-laws. Scare all the rain away for us, will ya? 馃檪

  27. wleewillard
    wleewillard May 7, 2009 at 4:47 am | | Reply

    Adam,

    Would there be anyway to use the drivers and codecs available in WinDVD within a linux operating system? I know that they help the GMA 500 perform much much better using a windows operating system.

  28. Dell shipping revamped Ubuntu 8.04 with the Mini 10 « YC’s playground

    […] Poulsbo chipset (just like the Mini 12), which is great for power consumption, but apparently a real chore when it comes to Linux support. In addition, also to keep the price low, there’s the ever […]

  29. Revisiting Altruism - Poulsbo & More

    […] we can’t get official figures from the Intel ARK, and the graphics drivers under Linux are a complete shambles apart from the custom 8.04 Ubuntu Builds Dell liaised with Canonical to develop. When I say […]

  30. Hello All! New to The Mini World. Quick Question - MyDellMini

    […] all due to chipset/video driver issues. This article is a little dated but gives some information: AdamW on Linux and more

  31. Acer Aspire One 1366×768 Graphics driver needed « Touchmods.

    […] http://wiki.x.org/wiki/ [4] Intel Pousbo Linux driver in Dell Mini12 Possibly related posts: (automatically generated)FOR SALE! ACER TRAVELMATE 6291Acer Aspire […]

  32. jhuckins
    jhuckins July 22, 2009 at 7:58 am | | Reply

    I have been pulling my hair out just trying to configure a frame buffer device at 800 x 600 resolution in RHEL 5.3 on a Poulsbo system.

    After porting our application that uses Qt Embedded 3.3 without X-Windows support, we are currently stuck using the QVFB virtual frame buffer to run the app, which, of course is bogus.

    Can anybody provide me with specific details of how to configure the platform to support a /dev/fb* device for our app?

    Thanks in advance,
    Jeff

  33. jhuckins
    jhuckins July 22, 2009 at 8:55 am | | Reply

    OK, since I’m a newby wrt kernel framebuffer device modules, how do I get the module working? As far as I know, I do have the kernel module built.

    Regards,
    Jeff

  34. Fit-PC2 review: The world’s smallest desktop PC | Roy Tanck's weblog

    […] The current state of Linux drivers for the Poulsbo chipset has rightfully been described as ‘a mess‘. There is a driver available for some Linux distributions, but it does not work with the […]

  35. Acer Aspire One 1366×768 Graphics driver needed « Touchmods

    […] http://wiki.x.org/wiki/ [4] Intel Pousbo Linux driver in Dell Mini12 Possibly related posts: (automatically generated)No […]

  36. when Ritsuko times out » Why Intel Sucks

    […] And this is also the Intel that, for a more recent example, is abandoning support for the GMA500 chipset in Linux. There are open source drivers for Poulsbo, of course, but they are broken. […]

  37. Nokia’s Booklet 3G hates Linux. | Open attitude.

    […] Intel GMA 500 (Poulsbo) graphics on Linux: a precise and comprehensive summary as to why you鈥檙e sc… […]

  38. Ubuntu on a booklet 3G « How to do something differently…

    […] on a booklet 3G Ok, so after reading around on the net, it seems like linux on the Nokia Booklet 3G is a no go. Mostly due to the GMA500 GPU. […]

  39. You are such a geek… » Intel GMA500 Support Matrix

    […] Why you are screwed with the Poulsbo […]

  40. Thiago Marcos P. Santos » Acer Aspire One 751h 11.6″

    […] [1] Mais detalhes sobre porque evitar uma Intel GMA500. Meu feedback geral do netbook 茅 positivo, mas o futuro dos drivers de v铆deo 茅 preocupante. […]

  41.   Poulsbo @MeeGo by /dev/stdout

    […] posts from Adam Williamson (http://www.happyassassin.net/2009/01/30/intel-gma-500-poulsbo-graphics-on-linux-a-precise-and-compre…) were very useful and based on that I decided to take a look at Mandriva’s svn […]

  42. Clusterf@ck | Libre Bytes
    Clusterf@ck | Libre Bytes July 22, 2010 at 2:00 am |

    […] intel-gma-500-poulsbo-graphics-on-linux-a-precise-and-comprehensive-summary-as-to-why-youre-screwed/ […]

  43. Poulsbo updates … for those who don’t know « Taljurf's Blog

    […] , I’m always after any news about poulsbo drivers. First of all, many of us know why we are “screwed” , so (until lately) we had no choice except to use proprietary drivers which Adam Williamson made […]

Leave a Reply to slothman Cancel reply

Your email address will not be published. Required fields are marked *