ATI Linux driver packages for Debian

Warning: these instruction are obsolete; I'm leaving them here only for historical reference.
Use the official Debian packages!
Current package version: 8.19.10-1

This page explains how to build Debian packages from the ATI Linux driver for the following ATI products:

  • RADEON™ 8500, 9000, 9100, 9200, 9500, 9550, 9600, 9700, 9800
  • RADEON™ X800, X700, X600, X300 series (AGP and PCI Express)
  • MOBILITY™ RADEON™ 9000, 9200, 9600, 9800, X700
  • MOBILITY™ RADEON™ 9000/9100 IGP Series
  • FireGL™ 8700, 8800, E1, E2, X1, X2, X3, Z1, T2
  • MOBILITY™ FireGL™ 9100, T2
  • I can't guarantee that list is correct and/or complete, and I don't know if any card not listed here is supported, so don't ask. Please look at the driver's release notes for the official list of supported cards.
Important: I do not work for ATI, I'm only packaging their driver as a service to the community. I do not have the full source code for the driver, I'm just unpacking the packages available from the ATI website and repacking them as Debian packages. Therefore, I can not fix bugs in the driver and I can not help people with any problems not related with installation of these Debian packages.
Although the ATI installer can create Debian packages based on my work, I do not support those packages. Please do not try to upgrade from the packages produced by the ATI installer to the packages you'll find here or to official Debian packages. If you do and run into trouble, at least avoid filing bug reports in the Debian BTS.

You must completely remove the packages built by the ATI installer before installing packages from this page or the official Debian fglrx packages.

0. News
1. Overview
1.1. The driver
1.2. Supported cards
2. Requirements
3a. Source
3b. Binaries
4. Install/compile
5. Configure X
6. Bugs/workarounds
Overriding ChipID
AMD64 notes
7. Working setups
8. Compare
9. Mailing list

A. Thanks
B. Links
C. Changelog
D. Historical notes
G. Games
S. Source from CVS
T. Translating

0. News

Sep 1, 2006
I apologize for not answering mails and not releasing new versions, but during the past month I've been on vacation, then back to work and I haven't had much time to work on the fglrx packages.
Apr 18, 2006
These packages are hopelessly out of date and I don't think I'll have time to update them in the near future, because I believe it's more useful to work on the official Debian packages.

Therefore, I've removed the prebuilt binary packages; if you really want to use these packages, I assume you are able to build binary packages from source as clearly explained in section 3a. Source. Everyone else, please use the official Debian packages if you're using sid, or the ATI installer packages if you're using sarge or Ubuntu.

November 27, 2005
Official packages entered sid today.

Upgrading from these installer packages to the new Debian packages is supposed to be smooth and hassle-free. Pay attention to the control panel package: it has been renamed from "fglrx-control-qt3" to "fglrx-control", but hopefully I added the correct Conflicts and Replaces fields to make this a smooth upgrade. If the upgrade doesn't work as expected, please report any problems to me.

Going forward, my plan is as follows: I will maintain the old installer packages until we can add AMD64 support to the official packages. I will also try to build binaries for sarge (and etch, if the packages don't go into testing fast enough) as required, but I don't think there are many people that need them... if you are the kind of people that want the latest fglrx drivers, you probably left sarge even before it was released.

Have fun. ;)

November 13, 2005
Driver version 8.19.10 is available.
November 9, 2005
I've prepared binary packages for Ubuntu breezy and Ubuntu dapper.
Those packages didn't work. They're gone now.
November 5, 2005
Driver version 8.18.8 is available, but it's a minor update and I don't think I need to update my packages yet.
October 23, 2005
My home server is being hit pretty hard by hundreds of people downloading the new driver version. Please use the mirror at if you can.
October 22, 2005
Driver version 8.18.6 is available.
October 22, 2005
Since a few days, the ATI site checks the HTTP referer and therefore will not allow direct linking to files such as the release notes and the driver itself. There's a patch for the build script in the mailing list archives, but there's nothing I can do about the release notes. While it's not my business to comment on ATI's policy about linking to their site, I would be an hypocrite if I didn't tell you I strongly believe they're stupid.
October 22, 2005
Started a short fglrx FAQ with some common questions I have to answer about my packages.
August 20, 2005
Driver version 8.16.20 is available, release notes are here.
(the list of supported products above is outdated, please refer to the release notes)
June 9, 2005
Driver version 8.14.13 is available, release notes are here.
June 5, 2005
Binary packages of version 8.12.10-2.1 for XFree86 were built against libgcc1 4.0 by mistake. Fixed packages have now been uploaded. Sorry for any inconvenience.
June 2, 2005
Package version 8.12.10-2 fixes a few problems, most notably a build problem with tar 1.15 that wants options before file names.
April 17, 2005
I've prepared experimental kernel module packages that match the prebuilt kernel images currently available in the official Debian archive. If you use these packages, please send me an email and tell me if they work.
April 9, 2005
Driver version 8.12.10 is available, release notes are here.
March 27, 2005
Add patches to support kernel 2.6.11 (and no, there are no Easter eggs inside).
February 17, 2005
Driver version 8.10.19 is available, release notes are here.
WARNING: These packages include slightly experimental AMD64 / X.Org support. Please see the notes for amd64 users.
February 5, 2005
There was a bug in fglrx-driver 8.8.25-2's preinst script: the diversion of 32-bit on AMD64 was using the wrong directory.
January 29, 2005
Package version 8.8.25-2 supports AMD64 and X.Org. I do not build AMD64 / X.Org packages myself because I don't have an AMD64 box nor an X.Org setup, but some users are contributing packages (see below).
I'd also like to know if (and how) I can build AMD64 packages on an i386 box.
January 18, 2005
Driver version 8.8.25 is available, release notes are here.

1. Overview

First things first: read the instructions below carefully before doing anything else!

This is not for the faint of hearth or the uninitiated. If you never tried to build a Debian package from source, learn how to do that before you come back here.

I don't mean to be offensive, but building kernels and modules correctly is difficult; pretending it isn't (or whining because it is) ain't going to help you in doing it. If at any time you don't feel confident with what you are doing, by all means stay with what you have and don't risk breaking your system.

Note: You will need to become root to run apt-get and dpkg. Please don't stay logged in as root any longer than necessary; rather, I'd suggest to install sudo and use that.

1.1. The driver

The driver as a whole is made of three main components: the driver proper, a replacement libGL and a kernel module. The driver and libGL are in the fglrx-driver package, the kernel module's source code is in the fglrx-kernel-src package.

Note that the driver will work without the kernel module, but without 3D acceleration. If you're not interested in 3D acceleration, you can do without the kernel module.

1.2. Supported cards

The list of supported cards at the beginning of this page comes from the driver's release notes, but it is known to be somewhat incomplete. Here's a complete list of chipsets supported by the fglrx driver, as reported by the driver itself in the X server log file.

If your card is not supported, you can force the driver to recognize it as a different card by overriding the ChipID.

2. Requirements

2.0. Remove NVidia stuff

Make sure you completely remove all NVidia driver stuff before proceeding. I've been told that you should use this command:
/usr/bin/nvidia-installer --uninstall

Of course, this is relevant only if you previously had tried to use a NVidia graphics card in your system.

2.1. Kernel source

You need to install the kernel source code that corresponds to your running kernel and configure it with make-kpkg. This is obviously easy if you already compile your own kernel, but it's going to require a bit of work if you are using a prebuilt kernel.

Alternatively, if you are using a prebuilt kernel, install the official kernel-headers or linux-headers package that matches the kernel you're using and skip this section entirely. However, you still have to check that the kernel you're using has all the correct configuration options. As a guideline, kernels for 686 and k7 CPUs should work fine, but kernels for the venerable 386 might not include AGP, DRM and/or MTRR support.

Note: You must compile your kernel and the ATI kernel module with the same compiler version, otherwise the module won't work. If you are using a prebuilt kernel, you'll need to find out which version of GCC was used to build it (look into /proc/version) and make sure you're using the same. This is beyond the scope of this document and is left as an exercise; if you can't figure it out, take it as an hint that this whole mess is beyond your abilities.

You don't need to actually compile the kernel, but you do need to configure it properly. If you don't want to compile and install your own kernel, just install the sources for the same kernel version that you are using and use the configuration that came with your kernel package:

apt-get install kernel-source-2.x.y
cd /usr/src
tar xjvf kernel-source-2.x.y.tar.bz2
cd kernel-source-2.x.y
cp /boot/config-2.x.y-flavour .config
make-kpkg --append-to-version "-flavour" --revision 2.x.y-z --config old configure

"-flavour" is supposed to be a placeholder. You need to replace it with the correct value for your kernel, for example something like "-1-686" for prepackaged Debian kernels. It's the text that follows the kernel version in the output from uname -r and in the file names in the /boot directory.

"2.x.y-z" is the version of the kernel-image package you have installed. It should also be the same version as the kernel-source package.

If you already have a configured kernel source tree, you can use it, but make sure that it's exactly the same configuration you are using.

2.1.1 Recommended kernel options

The following kernel options might affect the fglrx module. This list shows the options I've been using successfully for the past two years; these options are correct for kernel 2.6.10, but they should be the same for any 2.6.x kernel and probably for 2.4.x kernels too.
Kernel option(s) Notes
Make sure that CONFIG_MODVERSIONS is set correctly!
CONFIG_MTRR=y The fglrx driver needs MTRR (Memory Type Range Register) support
Enable any AGP chipset drivers you might need, for example CONFIG_AGP_INTEL, CONFIG_AGP_NVIDIA, etc... CONFIG_AGP_ATI is required only if you actually have an ATI AGP chipset on your motherboard; it has nothing to do with the fact that your AGP video card is an ATI.

Do not set CONFIG_AGP=y if you want to use fglrx's built-in AGP support.

There is a difference here between kernel 2.4 and 2.6:

  • with 2.4, the chipset drivers are part of the main AGP module;
  • with 2.6, the chipset drivers have been split out of the main AGP module and will be compiled as separate modules.

The important part is having CONFIG_AGP=m. If you are absolutely sure that you always want to use the kernel's builtin AGP support, you can set CONFIG_AGP=y, but I do not recommend this as there are no advantages with respect to CONFIG_AGP=m.

Do not compile the DRM modules into your kernel, because they would conflict with the fglrx kernel module. The best course of action is to enable them as modules and let the user-space drivers load the modules they require.

Hardware detection tools might try to load the radeon DRM module automatically during startup; if that happens to you, either tweak the tools' configuration or disable the radeon DRM module.

# CONFIG_FB is not set
CONFIG_FB_VESA=y is supposed to work, but it appears that it can cause "mtrr overlapping" errors;
CONFIG_FB_RADEON=y definitely causes problems, so disable it.
CONFIG_TMPFS=y ATI says POSIX shared memory is required!

If any of your kernel configuration options differ from the ones above and you are having problems, please try with the options exactly as above or be prepared to explain why your choice should make no difference.

2.2. AGP support

You need some support for your AGP chipset. You have two choices: the ATI driver's built-in AGP support or the kernel agpgart driver. It's difficult to say in advance which one is better or will work at all, because it depends on the exact driver and kernel versions you're using, but the kernel driver should be your preferred choice if it works for you. To use the kernel driver, add the following line to the "Device" section of your X server config file:

Option "UseInternalAGPGART" "no"

The X server configuration is discussed in more detail below, but the AGP configuration is important so I'm mentioning this detail early because I'd like to make sure that it sticks in your memory somewhere.

The error unable to acquire AGP, error "xf86_ENOMEM" in your X server log usually means that you are using the built-in AGP support with an unsupported chipset. Set "UseInternalAGPGART" to "no" and load the kernel driver (see below for details) which will hopefully support your AGP chipset.

If you want to use the ATI driver's built-in AGP support instead, set "UseInternalAGPGART" to "yes" (it's the default setting, so you can just omit it) and make sure that the kernel driver is not compiled into your kernel: either compile it as a module or disable it entirely. Beware that discover (and possibly other hardware detection tools) might try to load the kernel driver automatically during startup. If that happens to you, you can tweak discover's configuration or you can simply move the agpgart.* files away from /lib/modules.

If neither one supports your chipset, try using the kernel driver with the agp_try_unsupported=1 option on the kernel command line or as a parameter when you load the module.

Note that in the 2.6 kernel the AGP chipset drivers are separate from the agpgart driver itself, so if you build them as modules you will need to load the agpgart module and a chipset module such as via-agp, nvidia-agp, etc.

2.3. Required packages

If you want to build the source packages, make sure you have installed debhelper, kernel-package (for make-kpkg), libqt3-mt-dev, xlibs-dev, libxtst-dev, fakeroot, rpm and wget.

apt-get install debhelper kernel-package libqt3-mt-dev xlibs-dev libxtst-dev fakeroot rpm wget
You should also install libncurses5-dev if you want to be able to use make menuconfig in the kernel source tree.

If you will build only the kernel module, you need debhelper, kernel-package and fakeroot.

Once you've sorted out all this, you can proceed to download the following package sources or the prebuilt packages.

3a. Source

These scripts will package the ATI driver version 8.19.10. You can ask for a different version by setting the PVERSION environment variable (see below).

The scripts will detect which version of the X server is currently installed on your machine and download the matching driver package. You can ask for a different version by setting the XTYPE and XVERSION environment variables (again, see below).

Download the files above into a directory of your choice (preferably /usr/src) and unpack with

dpkg-source -x fglrx-installer_8.19.10-1.dsc

Then cd into the newly created fglrx-installer-8.19.10 directory and run

dpkg-buildpackage -b -rfakeroot -tc -uc -D

The build script will download the driver from the ATI site, then it will build the following packages in the parent directory:

Now you can install the packages and compile the kernel module.

3a.1. Building a specific driver version

If you want to build a specific driver version, use the following command:

PVERSION=8.14.13 dpkg-buildpackage -b -rfakeroot -tc -uc -D

The following driver versions are supported: 8.8.25, 8.10.19, 8.12.10, 8.14.13, 8.16.20, 8.18.6, 8.18.8, 8.19.10.

3a.2. Building for a specific X version

If you want to build for a specific X version, use the following command:

XTYPE=XFree86 XVERSION=4.3.0 dpkg-buildpackage -b -rfakeroot -tc -uc -D

The following X server versions are supported:

You can of course use XTYPE, XVERSION and PVERSION at the same time.

3b. Binaries

No packages are available at the moment; look in the News section at the top of the page for more details.

I often get requests for packages of older driver versions: I would love to help, but I don't have enough time to do so. Really. I'm sorry but I have a life to live besides building packages.

4. Install packages and compile the kernel module

You need to install the "fglrx-driver" and "fglrx-kernel-src" packages; the "fglrx-driver-dev" package contains header files and the libfglrx_gamma.a static library and you need it only if you develop ATI-specific OpenGL applications; the "fglrx-control-qt3" package installs the control panel and can be useful for multi-monitor configurations; the "fglrx-sources" package contains the control panel source code and a sample application and it is not required for normal use.

If you configured your /etc/apt/sources.list with one of my prebuilt package repositories, install the packages with apt, aptitude, dselect or similar tools. For example, with apt-get:

apt-get install fglrx-driver fglrx-kernel-src

If you downloaded the packages or built your own, install them with dpkg:

cd ..
dpkg -i fglrx-driver_8.19.10-1_arch.deb
dpkg -i fglrx-kernel-src_8.19.10-1_arch.deb

After you have installed the packages, you'll also need to install a suitable kernel module to enable 3D acceleration. I've prepared kernel module packages for the prebuilt kernel images currently available in the official Debian archive: if you are using one of the supported kernels, install a prebuilt package and skip to section 5. Configure X.

If you are using a custom kernel, you'll have to build the kernel module yourself; change directory to /usr/src and unpack the module sources:

cd /usr/src
tar xjf fglrx.tar.bz2
Make sure to remove any old /usr/src/modules/fglrx* directory after an upgrade of the sources package.

You can build the kernel module in several ways. Using module-assistant is usually easiest and is therefore recommended.

4.1a Build with module-assistant (recommended)

If you have never built modules with module-assistant before, you should prepare the build environment by running:

module-assistant prepare

In the usual environment, module-assistant should detect all requirements. Example (assuming that you build for the running kernel):

module-assistant a-i fglrx

module-assistant will unpack the sources for you, if necessary. Make sure to remove any old /usr/src/modules/fglrx directory after an upgrade of the fglrx package, because module-assistant will not do that for you.

If you prefer to build the packages with m-a from your own user account (with ~/src/linux being the kernel source):

mkdir -p ~/src/modass
module-assistant -u ~/src/modass -k ~/src/linux install fglrx

Note: A detailed explanation of module-assistant is beyond the scope of this document. Please refer to the module-assistant documentation.

4.1b Build with the make-kpkg command

cd /usr/src/kernel-source-2.x.y
fakeroot make-kpkg --append-to-version "-flavour" --added-modules fglrx modules_image

"-flavour" is supposed to be a placeholder. You need to replace it with the correct value for your kernel, for example something like "-1-686" for prepackaged Debian kernels. Refer to 2.1. Kernel source for more details.

This will build a new package, which you will have to install:

dpkg -i /usr/src/fglrx-kernel-2.x.y_8.19.10-1+kernelversion_arch.deb

Important: If you build your own packages, please upgrade to debhelper 4.2.11 (see Debian bug #248624), otherwise you will need to run update-modules yourself after installing the module.

4.1c Build with the supplied script

This will build a module that matches the running kernel; you need to have the correct kernel source and configuration in place.
cd /usr/src/modules/fglrx

Provided that the module was compiled without error, become root and install it:

mkdir /lib/modules/$(uname -r)/misc
cp fglrx.ko /lib/modules/$(uname -r)/misc/
depmod -ae

4.1d Build with the kernel's makefile (only on kernel 2.6.x)

This will build a module that matches the kernel sources you start from. If you are unable to build a working module in any other way, please try this method and install the module by hand. If this module works, building it with make-kpkg is just a matter of using the correct parameters.
cd /usr/src/kernel-source-2.x.y
make SUBDIRS=/usr/src/modules/fglrx modules
(replace /usr/src/kernel-source-2.x.y with the path to your kernel sources)

Provided that the module was compiled without error, become root and install it as shown in the previous section.

4.2 Loading the kernel module

At this point, the kernel module is installed and ready for use; to make sure that it's working, you should now try to load it. You'll do this only once to check that the module was compiled and installed correctly: you won't need to load it manually every time, because the X driver will load it as needed.

If you are currently running X, your card will be in use and you won't be able to load the module. Please end your X session, log in to a text console and stop any display manager you're running. Then, unload the “radeon” module with the following command:
rmmod radeon

Now try to load the module by entering the following command as root:

modprobe -v fglrx

If everything goes well, modprobe prints the path of the module it loaded.

If modprobe can't load the module, make sure you've installed it correctly, make sure you've read the paragraph about bug #248624 above, and look at the output of dmesg for any errors. Please include the full error message from modprobe -v fglrx and the output from dmesg and lsmod if you choose to contact me at this point!

Unresolved symbols: If you get any "unresolved symbol" errors, look carefully at the unresolved symbol's name and try to understand which configuration option it might be related to. For example, unresolved symbols containing "mtrr" are obviously caused by a missing CONFIG_MTRR=yes.

If you see errors like "unresolved symbol dev_base_R863b01ad", with a few hexadecimal digits at the end of the symbol names, it means that the module was compiled with CONFIG_MODVERSIONS=yes but the running kernel was not. In other words, the configuration of your kernel source tree does not reflect that of the running kernel. Go back to section 2.1, make sure that you configured your kernel source tree correctly and double check that CONFIG_MODVERSIONS is not set.

If you still can't load the module, please read Question 4.7: When I try to run "modprobe fglrx" it doesn't work from the Gentoo ATI Radeon FAQ before contacting me.

5. Configure X

The driver package provides an automatic configuration tool called fglrxconfig. Just don't use it, OK? fglrxconfig is useful if you want a dual-head setup, but before you try that please make sure that a single-head setup works by editing your X server configuration file as outlined below. Also note that fglrxconfig will overwrite your existing X server configuration file!

Edit your /etc/X11/XF86Config-4:

Section "Module"
  # These modules are required for 3D acceleration
  Load "GLcore"
  Load "glx"
  Load "dri"
  # Load "extmod" but omit DGA extension
  # (the DGA extension is broken in the fglrx driver)
  SubSection "extmod"
    Option "omit xfree86-dga"

Section "Device"
  Identifier "ATI"
  Driver     "fglrx" # this is the important bit

# If X refuses to use the screen resolution you asked for,
# uncomment this; see "Bugs and Workarounds" for details.
  #Option "NoDDC"

# === Video Overlay for the Xv extension ===
  Option "VideoOverlay" "on"
# === OpenGL Overlay ===
# Note: When OpenGL Overlay is enabled, Video Overlay
#       will be disabled automatically
  Option "OpenGLOverlay" "off"
# === Use internal AGP GART support? ===
# If OpenGL acceleration doesn't work, try using "yes" here
# and disable the kernel agpgart driver.
  Option "UseInternalAGPGART" "no"

Section "Screen"
  Identifier "your screen"
  Device     "ATI"
  Monitor    "your monitor"
  DefaultDepth 24
  SubSection "Display"
    Depth 24
    Modes "1280x960" # this is only an example,
                     # use your preferred resolution here

Section "DRI"
  Mode 0666

Stop and restart your X server. Figuring out how to do that on your system is left as an exercise, but usually you'll have to switch to a virtual console (text mode) by pressing Ctrl+Alt+F1, then stop and restart your display manager (kdm, gdm, etc.). If you know no better than to reboot your system, you will be in a lot of trouble if things don't work as expected: you might be stuck with just the console, or things could go really wrong and you could have to reboot into single user mode because your display and keyboard are completely locked. So please do learn how to properly stop and restart the X server.

If it breaks your system, you keep all the pieces and I don't care. (But let me know what happened, OK?)

After your X server starts, check if OpenGL acceleration is enabled. Open a shell and type fglrxinfo or glxinfo: the "OpenGL renderer string" should say something like "RADEON 9600 XT Generic"; if it says "Mesa GLX Indirect" instead, it means that there is a problem.

6. Bugs and Workarounds

Full-screen mode

Full-screen mode is somewhat broken: sometimes you'll end up with a garbled display, and your only chance of getting your desktop back is blindly closing the program that caused this. I didn't find a workaround yet.

[This problem was frequent in older driver versions, but it rarely happens now.]

DGA extension

Recent versions of the driver implement the DGA extension, but there are problems: MPlayer for example will lock your screen if you use -vo dga(*). Xavier says:

I just gave it a try and the result was a reboot of my computer (I tried launching xdtv). I think DGA implementation is still a bit buggy :)

Therefore, I suggest to disable the DGA extension in your X server configuration (see above).

* Last tested with driver version 8.12.10.

DVI (digital) output not working

The DVI port works with driver version 8.18.6; I'll leave this note here for a while for reference.

It appears that the ATI driver does not support the DVI port on my Radeon 8500 LE: the monitor goes into standby mode as soon as X starts up. It's not a hardware problem, because I can see Linux boot in text mode on the DVI port; also, the Windows XP driver works fine (not that I would want to run XP for anything but a few games).

This is what I see in the XFree86 log with my card:

(--) Chipset ATI R200 QL (R8500) found
(II) fglrx(0): Primary head:
 Monitor   -- NONE
 Connector -- None
 DAC Type  -- Unknown
 TMDS Type -- NONE
 DDC Type  -- NONE
(II) fglrx(0): Secondary head:
 Monitor   -- NONE
 Connector -- VGA
 DAC Type  -- Primary
 TMDS Type -- NONE
 DDC Type  -- VGA_DDC

Several people told me that they are happily using DVI on different cards, so I borrowed a 9600 XT from a friend and DVI worked out of the box, without even having to adjust the XFree86 configuration. With the borrowed 9600 XT, the primary head says something along the lines of "Connector: DVI-I", "TMDS Type: Internal".

Someone also suggested that I try with

  Option "MonitorLayout" "TMDS, AUTO"
in the XFree86 config file, but this doesn't make any difference.

Currently, I don't know of anybody who can use the DVI port on an 8500 with the fglrx driver. If you do, please share your experience.

Update: As of April 2005, I've installed Ubuntu's X.Org 6.8.2-10 packages, and I was curious to see if my DVI port works with the X.Org “radeon” driver. At first I got a blank screen again, but with the MonitorLayout option, the DVI port does finally work.

DVI on IBM T41p laptop

Carsten wrote about his experience on a IBM T41p laptop:

I've installed the latest package from you (8.10.19-1) and it works fine apart from the DVI as you mentioned on your website. I'm using a IBM T41p with a ATI Technologies Inc M10 NT [FireGL Mobility T2] (rev 80). Apart from that the driver even works together with radeonfb used for the terminals. Also suspend to RAM seems to work fine. After wakeup X and terminals come up cleanly again. Thus, I would use this driver always if there weren't this DVI problem ... until then I'll work with the standard radeon driver from X.

Flickering with digital displays

Jack reports that he's seeing lots of static at 1600x1200 on his digital display. He says that "this problem at 1600x1200 is a known issue due to approaching the video bandwidth limit of the hardware", because "the TMDS standard for DVI is fixed at 165 MHz which means that you are pushing things to get 1600x1200 at 60 Hz". He researched the issue and he found this article from ATI: Horizontal lines or screen flicker within Windows when using a DVI flat panel.

He further says: "The only fixes are to 1) reduce the refresh rate at higher resolutions to keep the pclk away from the upper limit of 165 MHz or 2) replace the DVI connection with an analog one."

Non-standard screen sizes

It appears that the ATI driver will refuse any screen size that your monitor doesn't list in its VESA DDC info; for example, I can't get my preferred resolution of 1280x960(*) with my Samsung CRT monitor. The symptoms are the following: if multiple resolutions are listed in XF86Config (such as "1280x960" "1152x864" "1024x768" "800x600"), the display will open at 1024x768 with a noticeable delay (a couple of seconds).

There are two workarounds:
  1. List only one resolution (1280x960 in my case): the display will open at that resolution with no delay, but you won't be able to switch resolutions with Ctrl,Alt,+ and Ctrl,Alt,-
  2. Use Option "NoDDC" in the "Device" section, as shown above: this is harmless as long as you got your monitor timings right.

* I'd kill with my bare hands whoever came up with 1280x1024, which has non-square pixels unless you give up some screen real estate. The aspect ratio of a traditional CRT is 4/3 and all standard resolutions (such as 640x480, 800x600 and 1024x768) have that aspect ratio; the aspect ratio of 1280x1024 is 5/4, so pixels are slightly wider than a square and things on your display will look compressed in the vertical direction. Now call me picky, but I do notice it and i don't like it.

Kernel 2.6.5: broken "make clean"

Kernel 2.6.5's "make clean" removes include/linx/version.h and several other files that are required to build external modules.

A workaround is the following:

$ make-kpkg ...options... kernel_image
$ make-kpkg clean
$ make-kpkg ...options... configure
$ make-kpkg ...options... modules_image
(i.e do an extra "make-kpkg configure" before "make-kpkg modules_image")

Another workaround is to apply a patch that restores a sane behavior (from the Linux Kernel mailing list).

Do not install kernel-package 8.086 that "fixes" this problem by not doing a make clean: it's worse because the kernel makefile will now relink all kernel modules during the build of external modules.

Stock fglrx kernel module doesn't work with CONFIG_REGPARM

Binary-only modules break with kernel 2.6's CONFIG_REGPARM because it changes the kernel ABI. Starting with version 3.7.6-5, I have applied this patch for the fglrx kernel module that should fix this problem. Upstream version 3.9.0 should have fixed this problem, according to the release notes, but users report that it is still broken. Starting with version 3.9.0-3, I have applied yet another patch, kindly supplied by Alexandru Fomin, that hopefully fixes it once and for all.

Upstream versions 3.11.1 and later have this problem fixed properly.

Broken SiS AGP support

Kevin Schlichter reports: "I'm running an SiS chipset, and found that the AGP support doesn't work in the 2.4 series, and not in the 2.6 series until 2.6.5. I think there are some patches available, but I didn't test any of them."

Overriding ChipID

If your card is not supported, you can force the driver to recognize it as a different card by overriding the ChipID. Look up the PCI ID of your card with lspci -n, then search for a similar model and ID in the list of supported chipsets. Put the new ID in the X config file's Device section:

Section "Device"
  Identifier "ATI"
  Driver     "fglrx"
  ChipID     0x1234 # replace 1234 with the ID you want to use
  [more options as needed]

For example, the unsupported Mobility Radeon 9600 with PCI ID 0x4E52 works fine if you tell the driver to use it as if it was PCI ID 0x4E50. Thomas Wollner wrote: "my card is an Mobility Radeon 9600 M10 with pci-id 4e52 and is not found by the driver. this card is also known under pci-id 4e50. how can i tell the fglrx driver to see the 4e52 card as an 4e50?"

I told him to try with ChipID 0x4E50 in the XFree86 config file's Device section; he answered that "it worked!!!" and provided the following excerpt from the XFree86 log file:

(**) ChipID override: 0x4E50
(**) Chipset MOBILITY RADEON 9600/9700 (M10/M11 4E50) found

Several people have confirmed that the ChipID override works for them; the most common unrecognized chips are those with PCI IDs 4e51 and 4e52 (they are integrated chips only found on laptops, as far as I know) and they work fine with ChipID 0x4E50.

AMD64 notes

lib or lib64?

Debian is a “pure” amd64 system, so 64-bit libs go into /.../lib and 32-bit libs go into /emul/ia32-linux/.../lib. This means that the fglrx driver requires a link from /usr/X11R6/lib64 to lib because it is compiled for a “hybrid”(???) system that puts 64-bit libraries into /.../lib64.

My packages currently don't create such a link automatically because I'm not sure it doesn't break or cause problem to something else. Also, I think this link is currently being created by the Debian installer (or more likely by some base package like base-files), so you might not need to create it yourself. If this link doesn't exist on your system, you can create it with the following command:

ln -s lib /usr/X11R6/lib64

This link is required for 3D acceleration to work.

By the way, several people wrote to ask where the link should be created. The answer is to read ln's info page and learn about symlinks. Enter the command exactly as shown and the link will be in the correct place, no matter which directory you are in. Trust me.

??? Is “hybrid” the correct name used by Red Hat, SuSE and others?

7. Working setups

I maintain a list of setups that are reported to work fine. Please send me a note if your configuration differs significantly from those already listed.

7.1. Compatibility with kernel options

CONFIG introduced status notes
HIGHMEM4G ? works  
PREEMPT ? works  
REGPARM 2.6.5? works requires patch (already included in my packages)
4KSTACKS 2.6.6 works  
1GLOWMEM CK patch works Con Kolivas' 1g_lowmem_i386 patch

Unless otherwise noted, the driver is known to work with any combination of these options enabled and of course with all of them disabled.

I'm currently running with 1GLOWMEM, PREEMPT and 4KSTACKS. I used to use HIGHMEM4G, but 1GLOWMEM is better if you have “only” 1G of RAM.

8. How does this driver compare to the driver in XFree86 4.3?

Please note: this section was written a long time ago, when both the ATI driver and the XFree86 driver were less mature. I didn't test the XFree86 driver ever since, so this might be wrong or completely irrelevant by now. If you have up-to-date details, please let me know.
First, here's the hardware I'm running this on: Here's a mixed list of performance considerations and problems with OpenGL applications:

Contrary to what I had previously written here, the ATI driver does support the Xv extension, but you need to have Option "VideoOverlay" "on" in your X server configuration (see above).

Roberto JP says: "There are a few more advantages, from a developer's viewpoint. The ATI driver supports many more (important) OpenGL extensions than the open source driver does. If you're using vertex or fragment programs (i.e pixel shaders) in your software, this is very important."

9. Mailing list

Once upon a time, there was a mailing list for discussion about these packages. Now that official Debian packages are available, these packages have become largely obsolete and the mailing list is no longer useful.

An archive of the mailing list is still available for historical purposes.

A. Thanks

B. Links

Translations of this page

C. Changelog

fglrx-installer (8.19.10-1) experimental; urgency=low

Flavio Stanchina — Sun, 13 Nov 2005 19:04:08 +0100

fglrx-installer (8.18.8-1) experimental; urgency=low

Flavio Stanchina — Sun, 13 Nov 2005 17:37:43 +0100

fglrx-installer (8.18.6-1) experimental; urgency=low

Flavio Stanchina — Sat, 22 Oct 2005 16:05:04 +0200

fglrx-installer (8.16.20-1) experimental; urgency=low

Flavio Stanchina — Sat, 20 Aug 2005 11:08:25 +0200

fglrx-installer (8.14.13-2) experimental; urgency=low

Flavio Stanchina — Mon, 13 Jun 2005 11:42:23 +0200

fglrx-installer (8.14.13-1) experimental; urgency=low

Flavio Stanchina — Sun, 12 Jun 2005 18:48:53 +0200

fglrx-installer (8.12.10-2.1) experimental; urgency=low

Flavio Stanchina — Thu, 2 Jun 2005 23:33:27 +0200

fglrx-installer (8.12.10-2) experimental; urgency=low

Changes by Eduard Bloch:
Flavio Stanchina — Thu, 2 Jun 2005 13:06:41 +0200

fglrx-installer (8.12.10-1) experimental; urgency=low

Flavio Stanchina — Sat, 9 Apr 2005 17:51:11 +0200

fglrx-installer (8.10.19-2) experimental; urgency=low

Flavio Stanchina — Sun, 27 Mar 2005 11:52:40 +0200

fglrx-installer (8.10.19-1) experimental; urgency=low

Flavio Stanchina — Thu, 17 Feb 2005 11:12:57 +0100

fglrx-installer (8.8.25-3) experimental; urgency=low

Flavio Stanchina — Sat, 5 Feb 2005 16:13:51 +0100

fglrx-installer (8.8.25-2) experimental; urgency=low

Flavio Stanchina — Sat, 29 Jan 2005 15:31:17 +0100

fglrx-installer (8.8.25-1) experimental; urgency=low

Flavio Stanchina — Tue, 18 Jan 2005 21:58:49 +0100

D. Historical notes

Click here to learn how this package was born.

Versions 3.2.5 and later officially support the Radeon products again. These products were initially listed as supported in the documentation for version 2.9.6 of the driver, but later on all references to them were removed, leaving only the FireGL series as officially supported. However, the driver itself was not changed and later versions (up to and including version 2.9.13, which was the latest version available from ATI until 3.2.5 came along) still supported the consumer products too. I still can't understand why it was so, but now support for the Radeons is officially back and everyone should be happy.

G. Games with OpenGL support

So you now have OpenGL working and you want a game that puts it to good use? That would be Doom 3. The Linux demo is freely available.

Several id Software games have a Linux version and/or demo. Quake 2 is still one of the best games ever; unfortunately, the Linux version is not available from id Software's site, but there is a package in Debian.

The Wolfenstein derivatives are also quite good. Enemy Territory is particularly addictive and it also happens to be free, but you'll need to find some friends to play with because it is multiplayer only.

Tux Racer is one of the cutest games around. And now, PlanetPenguin Racer is delivering even more challenging tracks.

S. Source from CVS

If you are interested in the latest, greatest and probably broken package source, you can get it from my CVS repository here:

$ cvs login
CVS password: [enter empty password here]
$ cvs co fglrx-installer

I moved the source for the official Debian packages from CVS to git. Please see the official Debian packages page for the details.

T. Translating this page

Several users are translating this page into various languages. Here are a few “official” guidelines:

$Id: fglrx-installer.gtml,v 1.14 2007-02-11 23:25:17 flavio Exp $