Image credit: Nicholas Moreau at WikiMedia

Oct 22, 2009

radeonhd 1.3.0 - experimental support for ATI Mobility Radeon HD4570

Hardware: Dell Studio 1555 ("new Studio 15") with ATI Mobility Radeon HD4570. lspci identifies it as:
01:00.0 VGA compatible controller: ATI Technologies Inc M92 [Mobility Radeon HD 4500 Series]

The Ubuntu 9.10 beta copy I am running at the moment has xserver-xorg-video-radeonhd 1.2.5, which did not work with my Mobility Radeon HD4570 when I tried it. However, radeonhd 1.3.0 has just added support for this chipset (a.k.a. "M92"), as per the brief changelog at the X.org wiki page for radeonhd.

Compiling the driver from source (tarball download) gets X working for me - 2D with DRI, as far as I can see. I haven't yet tried enabling 3D.

If you'd like to try out the Free Software driver right now, instead of continuing to use the proprietary ATI Catalyst "fglrx" driver, the procedure below should help. This will probably be of limited usefulness, until Ubuntu brings out radeonhd version 1.3.0 in the package repositories, but could be useful if you want to try compiling future versions of the driver.
You may be interested in this alternate procedure, at the Ubuntu community site.

Warning: This procedure could trash your GUI.

The following procedure assumes you are comfortable with a command-line interface and at least basic system administration in Linux. Mistakes will, in all likelihood, make X stop working - so you should be able to recover (basically, use a root shell to replace /etc/X11/xorg.conf with a backup copy, and reboot). In addition, the driver is marked "experimental" for this GPU. It seems to be working reasonably OK on my system, but YMMV.
I also assume that most pre-requisites for compiling from source are already installed in your copy of Ubuntu; if not, there are many pages out there that explain what to install.


Notes:
I used a slow manual process of running ./configure, grokking the log, adding packages and repeating till the configure script stopped complaining about missing packages. In the following list of dependency packages, it's possible that some of them are actually not necessary for this compile - if so, please add a correction in response to this post - thanks!

I later came across this Ubuntu forum thread, which mentions apt-file - that might have saved me a little guessing. (There's no .dsc file in the tarball, so dpkg-checkbuilddeps mentioned at the page wouldn't work here.)

I used Synaptic to find and mark these for installation - but any method that automatically installs dependency packages should be fine.

Instead of
the default "make install" to splatter the compiled files around the Ubuntu filesystem, I used checkinstall to create a .deb package that I could uninstall later, if I wanted, as described at slack-tux.org. I used the minimum possible inputs to checkinstall - didn't supply documentation, maintainer name, dependencies etc because this was basically just testing. If you want to create a proper package to distribute, see this Ubuntu wiki howto.

Outline procedure:

  1. Download ftp://ftp.freedesktop.org/pub/individual/driver/xf86-video-radeonhd-1.3.0.tar.gz into a temp folder.
  2. Un-tar.
  3. Install the following packages, and their dependencies:

    xserver-xorg-xdev
    libpci-dev
    libdrm-dev
    x11proto-xf86dri-dev
    x11proto-gl-dev
    libgl1-mesa-dev

  4. Run the configure script. I used these parameters to prevent it going under /usr/local, and to ensure DRI would be enabled:

    ./configure --prefix /usr --enable-dri=yes
    [Verify that the output does not end with a NOTE that DRI is disabled - if so, I may have forgotten to log a package name, apologies!]
  5. Run

    make
    I got some warnings, no errors.
  6. Install the "checkinstall" package using Synaptic or apt-get.
  7. Close Synaptic (or any other package management tools like Update Manager etc) if you have one open.
  8. Make sure the folder in which you ran make (the one extracted from the tarball) is your current directory, and run

    sudo checkinstall
    Answer the questions, tweak the package description if you need to send it out to friends (I didn't, because this package was just for trial).
    Checkinstall should automatically install the package after it builds it, but since I had Synaptic running, automatic installation failed. I then closed Synaptic and tried

    sudo dpkg -i xf86-video-radeonhd_1.3.0-1_i386.deb
    It failed again, because my package conflicted with the installed xserver-xorg-video-radeonhd (ver. 1.2.5, which I'd installed in my first attempt to try the driver). If you'd installed that package too, you'll need to remove it like I did:

    sudo dpkg --remove xserver-xorg-video-radeonhd
    Then I ran the dpkg -i command again, and it installed.
  9. Back up your existing /etc/X11/xorg.conf. 
  10. Create a new xorg.conf that uses the radeonhd driver. I grabbed a sample config from the second post at this page; you might want to do that too.
  11. Reboot and see if you have X working...

After rebooting with radeonhd, I found a few small problems like backlight stuck at lowest level, some display flickers and jiggles, GPU temperature quite high - 60 to 68 degrees C, compared to between 46 and 56 with fglrx under Ubuntu 9.04... (but that happens running in fb mode too). However, my session went without crashing for quite a few hours, and shut down beautifully too. Next thing is to try enabling 3D and see what happens.