This howto has been completely revamped to reflect the current state of the ATI drivers in arch. If anyone's interested in how it used to be done (a somewhat painful manual process) feel free to check this page's history.
With the release of Xorg 7 and its inclusion in the Arch repos, the dev team has added ATI's fglrx drivers to the
extra repo alongside it. This should make the process of installing and using these drivers as painless as possible.
- 1 Supported Devices
- 2 Installation
- 3 Configuration
- 4 Troubleshooting
- 5 External Resources
- 6 Open Source ATI Drivers
- 7 Something to add?
See ATI Linux Driver 8.32.5 Release Notes for a list of supported devices by this version of the drivers.
From the release of Xorg 7, Arch has provided pre-compiled fglrx packages in the
extra repository. If you use either of the
kernel26beyond kernels, the process is simple. If you use a custom kernel, a few extra steps need to be taken.
To install ATI's fglrx drivers for the
kernel26 package, you need to install the
# pacman -Sy ati-fglrx
To install ATI's fglrx drivers for the
kernel26beyond package, you need to install the
# pacman -Sy ati-fglrx-beyond
- The -beyond kernel patchset supercedes and replaces the -archck patchset. AFAIK, the archck kernel is no longer being maintained - if you want to update drivers for this kernel, you must follow the steps in custom kernels below.
- These packages contain only the kernel module, and depend on the
ati-fglrx-utilspackage is kernel-independent and provides the libraries and utilities for Xorg, including ATI's own
- After installing the package, you'll need to either
source /etc/profileor log out, then back in to set up the environment properly.
- If you run both
kernel26beyondthen install both ati-fglrx module packages. They won't conflict with one another.
To install fglrx for a custom kernel, you'll need to build your own
ati-fglrx-$kernel package, containing the kernel module compiled specifically for your kernel.
If you are at all uncomfortable or inexperienced making packages, read up the ABS wiki page first so things go smoothly.
ati-fglrx.install files from CVS or ABS. Either:
- Visit http://www.archlinux.org/packages.php?id=10416 and click "View CVS Entries" to find them, or
absas root and locate the files in
Editing the PKGBUILD and building
Three changes need to be made here:
where KERNEL_NAME is whatever you want (custom, mm, themostawesomekernelever)
kernel26 from the dependencies list.
(or directly insert the output of uname -r when running your custom kernel there)
Finally, build and install the package. (
makepkg -i or
makepkg followed by
pacman -A pkgname.pkg.tar.gz)
- No changes need to be made to the
ati-fglrx-utilspackage, which is completely kernel-independent. All you need to do is compile a kernel module.
- To build and run the fglrx kernel module with 2.6.16 kernels, patches are needed! Check out the cvs entries for ati-fglrx in current for the required patch.
With recent releases of their drivers, ATI has gotten rid of the
fglrxconfig tool in favour of the more streamlined, simpler, and more up-to-date
aticonfig tool. For a list of complete options that you can use with
aticonfig (and this is a long list!), run
at the command prompt. You can use this tool to set up an
xorg.conf file and configure essentially every aspect of the card.
To use this utility, make sure you have a working
xorg.conf file already, and back it up. For the mostpart,
aticonfig only modifies existing config files to work with fglrx. If you don't have an xorg.conf file yet, run
# Xorg -configure
to generate one.
The simplest way to use
aticonfig to adapt your
xorg.conf file is listed in the examples at the end of the output if you run
aticonfig without any command-line parameters:
Examples: 1. Setting up fglrx for the first time. Single head : aticonfig --initial --input=/etc/X11/xorg.conf Dual head : aticonfig --initial=dual-head --screen-layout=above This command will generate a dual head configuration file with the second screen located above the first screen.
Just adapt one of those two lines for your personal setup.
As always, it's a good idea to visually scan the resulting
xorg.conf file to ensure everything seems right. If you want, you can compare it to one of the Sample Xorg.conf files listed on the Xorg7 wiki page.
Finally, run Xorg with
startx and check if you have direct rendering by opening up a terminal and running
glxinfo | grep direct (you may need to install the mesa package to get glxinfo)
If it says "direct rendering: yes" then you're good to go!
Errors about AIGLX in /var/log/Xorg.0.log
If you get errors like:
(EE) AIGLX error: dlsym for __driCreateNewScreen_20050727 failed (/usr/lib/xorg/modules/dri/fglrx_dri.so: undefined symbol: __driCreateNewScreen_20050727) (EE) AIGLX: reverting to software rendering
it is because you use the new xorg package which uses AIGLX rather than XGL which is not supported by fglrx yet. This can be solved by adding the following lines to /etc/X11/xorg.conf, which disable AIGLX which triggers the old XGL driver:
Section "ServerFlags" Option "AIGLX" "off" EndSection Section "Extensions" Option "Composite" "Disable" EndSection
Direct Rendering Doesn't Work
Having trouble getting direct rendering working? Run
$ LIBGL_DEBUG=verbose glxinfo > /dev/null
at the command prompt. At the very start of the output, usually it'll give you a nice error message saying why you don't have direct rendering.
Common errors, and their solutions, are:
libGL error: XF86DRIQueryDirectRenderingCapable returned false
- Ensure you are loading the correct agp modules for your AGP chipset before you load the fglrx kernel module. To determine which agp modules you'll need, run
hwdetect --show-agp, then ensure that all modules listed from that command are in the
MODULES=array in rc.conf, before fglrx.
libGL error: failed to open DRM: Operation not permitted libGL error: reverting to (slow) indirect rendering
- For this, make sure you have the following section in your
Section "DRI" Mode 0666 EndSection
libGL: OpenDriver: trying /usr/lib/xorg/modules/dri//fglrx_dri.so libGL error: dlopen /usr/lib/xorg/modules/dri//fglrx_dri.so failed (/usr/lib/xorg/modules/dri//fglrx_dri.so: cannot open shared object file: No such file or directory) libGL error: unable to find driver: fglrx_dri.so
- Something hasn't been installed right. If the paths in the error message are
/usr/X11R6/lib/modules/dri/fglrx_dri.so, then ensure you've logged completely out of your system, then back in. If you're using a graphical login manager (gdm, kdm, xdm) ensure that /etc/profile is sourced every time you log in. This is usually accomplished by adding
~/.xinitrc, but may vary between login managers.
- If the paths above in your error message _are_
/usr/lib/xorg/modules/dri/fglrx_dri.sothen something hasn't been correctly installed. Try reinstalling the
fglrx: libGL version undetermined - OpenGL module is using glapi fallback
- This could be caused by having multiple versions of
libGL.soon your system. Run:
$ sudo updatedb $ locate libGL.so
This should return the following output:
$ locate libGL.so /usr/lib/libGL.so /usr/lib/libGL.so.1 /usr/lib/libGL.so.1.2 $
These are the only three libGL.so files you should have on your system. If you have any more (eg.
/usr/X11R6/lib/libGL.so.1.2), then remove them. This should fix your problem.
You might not get any error to indicate that this is a problem. If you are using X11R7, make sure you do not have these files on your system:
System Freezes/Hard locks
- To prevent system lockups, try adding the following lines to your fglrx "Device" section in
Option "UseInternalAGPGART" "no" Option "KernelModuleParm" "agplock=0" # AGP locked user pages: disabled
Note: Neither both options are anymore necessary since 8.24.18, because ATI removed the internal AGP GART support from the driver.
- As well, the
radeonfbframebuffer drivers have been known in the past to cause problems of this nature. If your kernel has radeonfb support compiled in, you may want to try a different kernel and see if this helps. Note: kernel26archck _DOES_ have radeonfb support compiled in.
Radeon cards used in conjuntion with some versions of the nForce3 chipset (e.g. nForce 3 250Gb) won't have acceleration. Currently the cause of this is unknown but some sources indicates that it will be neccesary to boot Windows with the drivers from nVIDIA, reboot the system and it will be possible to get 3D acceleration with this hardware. This can be verified issuing in a root console the following command:
dmesg | grep agp
If you get somthing similar to this (using an nForce3 based system)
agpgart: Detected AGP bridge 0 agpgart: Setting up Nforce3 AGP. agpgart: aperture base > 4G
and also if issuing this command...
tail -n 100 /var/log/Xorg.0.log | grep agp
...got something similar to:
(EE) fglrx(0): [agp] unable to acquire AGP, error "xf86_ENODEV"
Then you got this bug.
Some sources indicates that in some cases, downgrading the Motherboard BIOS helps, but this can't be verified in all cases. Also a bad BIOS downgrade can render your hardware useless, so beware.
See bug http://bugzilla.kernel.org/show_bug.cgi?id=6350 for more information and a potential fix.
Compaq Presario Laptops
After installing the drivers and editing the configuration file as required, some laptops (Presario R4000 with XPress200M) just come up with a blank screen. The problem seems to be incorrect memory detected by the kernel.(even if you have 128M of video memory lspci -v always reports 256M). Changing the BIOS settings so it uses "SidePort+UMA" option and using 128M video memory plus another 128M taken from system seems to work around fine as a workaround. It could be a bug in the BIOS or in the Linux PCI code.
More Info can be found here
- Unofficial ATI Linux Bugtracker
- Rage3D ATI Linux Forums
- ThinkWiki fglrx Problems page
- ATI fglrx 8.24.8 Release Notes
Open Source ATI Drivers
If you have a supported chipset (generally the older ones, see the manpage for radeon for specific cards), you can run the OSS ati drivers. These are (in my opinion) hassle-free and support (usually, check the manpage) 3D acceleration.
The package is xf86-video-ati.
- pacman -S xf86-video-ati
Edit xorg.conf, and add/modify the "Device section, changing "vesa" to "radeon". Other options are in the manpage.
Section "Device" Identifier "Card0" Driver "radeon" VendorName "All" BoardName "All" EndSection
Something to add?
As always, feel free to edit this wiki to reflect any differences or ommissions.