Recently I’ve bought a netbook – ASUS Eee 1225C (summary: 11-inch 1366×768 screen, 1.6GHz dual-core processor, 2GB RAM, GMA500 integrated graphics, 9h battery, 250GB HDD). In several countries it ships with Ubuntu pre-installed, but this is not the case in Poland. I could either to buy it with MS Windows 7 or without any OS, and of course the choice was simple (not because of the no-OS version being 350 PLN = about 110$ cheaper).
But getting it to run Ubuntu was a bit of adventure.
Many sources report that in 12.10 GMA500 support works out of the box, and in 12.04 requires some manual tuning. So I started by downloading 12.10 daily biuld (a bit before beta2) and tried to install it from USB stick. No luck. The live-usb system would hang about 10 seconds after boot, and I was unable to find any reason for that. And when it managed to boot up, I was welcomed with a black screen. Not a very optimistic beginning. But I am used to troubles with graphic drivers (my other machine has an ATI Radeon HD), so I tried text-mode installation by using minimal netboot ISO (still 12.10). I was disappointed that default bootable USB creator was unable to install the netboot ISO, so I used Unetbootin instead.
This time installation progressed successfully. I always get a bit sentimental when I see debian-installer :) Having finished installation, I had to install ubuntu-desktop package to get fully usable installation. Reboot and I saw the unity-greeter in 1024×768 resolution. Not my native, it should be a bit better. Then, I logged into Unity…
As you know, in 12.10 Unity2D is no more present. There are good reasons for it, and I do not want to complain about that. Instead Unity2D, the classic Unity uses CPU to render animations & graphics instead of GPU if hardware acceleration is not available (which clearly is the case with GMA500). Therefore I saw full Unity on my netbook, all animations were just as we know them, but… they lagged unbearably, and CPU usage was constantly 100%. That makes a lot of sense, as CPU has to do all the graphics stuff, so I expect the result I saw was not surprising. But I couldn’t stand waiting 20 secs for Dash to open, and battery life being decreased by 80%. I looked if there are any ways to disable fancy effects in Unity, but I didn’t find anything significant. Don’t get me wrong, I am a great fan of Unity, and will certainly continue using it on my other, more powerful machine, but as for netbook experience it needs to get a bit more efficient. Therefore, I decided to use 12.04.1 instead, so that I could use Unity2D.
The installation went much smoother. Well, 12.04 is stable, so I did not expect it to hang during installation. Live-USB of standard Ubuntu desktop ISO and in few moments the process was complete. Holding my breath I rebooted… success! Unity2D worked perfectly, very responsive and resource-saving. With a working desktop I felt a bit more comfortable – but one problem persisted – I was unable to use the native resolution (1366×768) and was forced to work on a smaller 1024×768. “Either kernel or xorg does not get on well with my GMA500″ – I thought.
The time has come to search the web. There is quite a lot of HowTos on the web that concern common problems with GMA500, but none of them explained my problems with resolution. I tried lots of boot arguments, that includes any combination of nomodeset, framebuffer, console=tty1, vb.handsoff and several more. I played with GRUB’s gfxmode and gfxpayload. No luck. I tried manually messing up Xorg.conf, but the intel driver always failed and VESA was used instead. I tried manually defining new modes with xrandr – that didn’t work at all. For some reason psb_gfx kernel module that works in 12.04 as the driver for GMA500 was not in use and I could not get it to work, though I tried really hard. I spent several days on that part, giving up from time to time, just to return to the problem on the next opportunity :)
Ubuntu Wiki claims that since Linux 3.3.4 the driver (renamed to gma500_gfx)works out of the box. So I tried downloading 3.4 kernel from mainline PPA. To my surprise it performed even worse, and eventually I have noticed it ships without psb_gfx nor gma500_gfx modules. Not much use for me. And I spent more time googling, examining Xorg logs, dmesg, hardware info, inspecting framebuffer capabilities and more.
But this adventure has a happy ending. Although it took me a week to figure out everything, I am now using awesome native 1366×768 resolution. Want to know the trick? I installed kernel from quantal backported to precise that is available in PPA https://launchpad.net/~ubuntu-x-swat/+archive/q-lts-backport. Despite this PPA is not to be used by end users, I found it to be the only way to get the most of my integrated graphics :) That plus the fbdev Xorg driver and I could finally admire the awesome 1366×768 in 11 inches. I will most probably apt-pin some of these packages to ensure they do not get updated to anything that for some reason does not work anymore.
One last thing was to add acpi_osi=Linux acpi_backlight=vendor to boot parameters, otherwise display brightness was not adjustable.
That all makes a lot of sense. I use 12.04 to have Unity2D, with quantal’s kernel that has gma500_gfx. I must say that despite this hassle the experience is oveally awesome! I love how Unity behaves on a netbook, and I love the 10h battery time under mild load.
Disclaimer – the above is not a guide nor explanation of GMA500 possible troubles. It’s just my story, if you encounter similar problems, better consult other sources and use this article just as an inspiration ;)