ATI Radeon X300 logo (courtesy of ati.com)
My Thinkpad T43 came with a 64 MB ATI Radeon X300. Since ATI is committed to giving its customers "proprietary, patented optimizations," if I do not want to use fglrx, ATI's binary, non-open sourced driver, I must go with radeon, a slow-performing open source driver without any 3D acceleration. While the open-source drivers are fine for everyday computer use, they do not work well when trying to do cool graphical things like running OpenGL screensavers or XGL. Since Ubuntu is among the distributions of Linux that has no compunctions about putting binary drivers in its repositories, installing the binary drivers is normally relatively easy, especially as there are a multitude of documents that describe how to do it.

But what are using the development version of Ubuntu, Edgy Eft? Now only does it use the 2.6.17 kernel (instead of 2.6.15) but it uses X.org 7.1. Alas, the binary ATI drivers need to be compatible with the version of X.org, and the current version of the drivers and kernel modules in the Ubuntu repositories is not. While there is a bug filed for the problem, it has not yet been fixed. Tired of using the radeon driver, I decided yesterday not to wait for updated packages and install the ATI drivers on my own. Cue fanfare!

I have painfully reconstructed the steps that I took to get it working (part of the problem was that I thought I had it working and started plowing ahead on XGL, only to realize that it was half-working - the computer was using the fglrx driver but there was still no 3D acceleration. While the documents I was using all tried to be complete walkthroughs to the process of getting ATI drivers working on Ubuntu (although many of them were targeted toward Dapper, the process still seemed to work), none of them had all of the information I needed. As a result, I will try to provide links to documents that helped whenever I can.

If you have Ubuntu's fglrx binary driver installed

You need to uninstall it. Go to Synaptic Package Manager (System -> Administration) and search for fglrx. Remove all of the packages you find. Since the fglrx driver interacts with the kernel, you will also find it useful to remove the linux-restricted-modules package.[1] Do that.

Installing the ATI binary driver

Go to ATI's website for Linux drivers and download the latest installer file (as the time of this writing, 8.28.8). You want the file called ati-driver-installer-.run. Download it to a folder, make it executable, and run it in order to build packages.

chmod +x ati-driver-installer-.run
./ati-driver-installer-.run --buildpkg Ubuntu/edgy

Depending how recently updated your Edgy installation is, you may run into problems with the ATI installer complaining about syntax errors. A recent Edgy update changed the shell sh from bash to dash. You will have to do some extra work on the command line by temporarily making the sh command redirect to bash instead.

sudo mv /bin/sh /bin/sh.bak
sudo ln -s /bin/bash /bin/sh
./ati-driver-installer-.run --buildpkg Ubuntu/edgy
sudo mv /bin/sh.bak /bin/sh

Installing the Kernel Module

The ATI installer package should have built several Debian packages ("debs") in the directory it was in. We should install fglrx-kernel-source and then uncompress the binary kernel modules it provides.

sudo dpkg -i fglrx-kernel-source_-1_i386.deb
cd /usr/src
sudo tar xvf fglrx.tar.bz2

Now install your new drivers and kernel modules. While I am using the 2.6.17-6.18 kernel with version 8.28.8 of the ATI drivers, your version number may be different.

sudo dpkg -i ~/xorg-driver-fglrx_8.28.8-1_i386.deb fglrx-kernel-2.6.17-6-686_8.28.8-1+2.6.17-6.18_i386.deb

Finishing

The driver also includes a program called atieventsd which might take up all of your CPU. I found a thread on a French SUSE forum that suggested removing a socket file would stop the problems. It worked for me:

sudo rm /var/run/atieventsd.socket

If you were not previously using fglrx, take this opportunity to modify your xorg.conf. Reboot and run "fglrxinfo" on the command line. If the driver (and 3D acceleration) are working properly, you should see something like this:

display: :0.0 screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: MOBILITY RADEON X300 Generic
OpenGL version string: 2.0.6011 (8.28.8)

Woot!

Next: XGL and Compiz.


--
[1] If you need linux-restricted-modules for some reason - madwifi drivers, perhaps? - you will either have to keep it installed and blacklist the Ubuntu-provided fglrx module from running or find some other way to get the drivers that you need.