AMD Catalyst

From ArchWiki
Revision as of 10:15, 4 April 2010 by Lordmetroid (talk | contribs) (Trying to clarify the procedure)
Jump to navigation Jump to search

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary heading Template:Article summary link Template:Article summary link Template:Article summary end Formerly known as fglrx, ATI has rebranded their proprietary Linux driver, which is now known as Catalyst. Currently, only the package name has changed, while the kernel module retains its original fglrx name, therefore any mention of fglrx below is specifically in reference to the kernel module, not the package.

Naming conventions

ATI's Radeon brand follows a naming scheme that relates each product to a market segment. Within this article, readers will see both product names (e.g. HD 4850, X1900) and code or core names (e.g. RV770, R580). Traditionally, a product series will correspond to a core series (e.g. the "X1000" product series includes the X1300, X1600, X1800, and X1900 products which utilize the "R500" core series – including the RV515, RV530, R520, and R580 cores).

For a table of core and product series, see Wikipedia:Comparison of AMD graphics processing units.

Supported devices

Since v. 9.4, the proprietary ATI driver supports only R600 and newer devices (that means, HD2xxx and newer). For older cards, you can only use xf86-video-ati.


Catalyst was once a precompiled package offered by Arch in the extra repository, but as of March 2009, official support has been dropped because of dissatisfaction with the quality and speed of development of the proprietary driver. The catalyst driver is available on AUR.

Stock Kernel


To install ATI's fglrx driver for the kernel26 package, you need to install either the catalyst or the catalyst-test package from the AUR which you can build via makepkg.

Warning: Most often the version of xorg-server available in [extra] is not supported by the official Catalyst drivers via the catalyst package in the AUR. Try the catalyst-test package instead.
Note: You may get an error about the Catalyst package conflicting with libgl. In that case, run the following code to remove libgl without checking dependancies:
pacman -Rd libgl

If your system is an x86 system try installing the Catalyst package again. However if your system is an x86_64 system, you will need to install the lib32-catalyst-utils package instead. Install the lib32-catalyst-utils from the AUR but replace the package build script with the script available at lib32-catalyst-utils for the best results.

Note: If you have installed the package catalyst-test instead of the catalyst package, replace the catalyst dependency requirement with catalysts-test.

For a stock kernel, that's it. Configure your xorg.conf as usual, if desired. If you need more information on catalyst, visit this thread or create a new one, and ask there.

Custom Kernels

To install catalyst for a custom kernel, you'll need to build your own catalyst-$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.

Obtaining PKGBUILD

Obtain the PKGBUILD and catalyst.install files from AUR.

Editing the PKGBUILD and building

Three changes need to be made here:

1. Change




where KERNEL_NAME is whatever you want (e.g. custom, mm, themostawesomekernelever)

2. Remove kernel26 from the dependencies list.

Finally, build and install the package. (makepkg -i or makepkg followed by pacman -U pkgname.pkg.tar.gz)


  • If you run multiple kernels, then install catalyst module packages for all kernels. They won't conflict with one another.

ATI/AMD Installer

Warning: Using the installer from is NOT recommended for inexperienced users! Doing so may cause file conflicts and X failures. The packages available through pacman are configured specifically for Arch Linux and so should be used instead.

If you have attempted a manual install from the official installer, and are finding that nothing works correctly anymore, there should be an uninstall script placed at /usr/share/ati - run that, then try the pacman packages.

If you must use the installer from ATI/AMD for some reason, the following steps might work for you:

  • Download AMD/ATI driver installer from the official site only.
  • Make it executable.
  • Execute a terminal emulator (e.g Konsole) and be root.
  • Install mesa package
   pacman -S mesa
  • (Re)Install Xorg
  • Check for other required things for ATI/AMD installer listed on their website
   #pacman -Q | grep NameOfPackage
  • Use aticonfig as described below to update xorg.conf
  • Add ModulesPath into xorg.conf pointing at module if necessary


ATI provides the aticonfig tool to modify an existing xorg.conf file and configure essentially every aspect of the card. For a complete list of aticonfig options, run:

$ aticonfig --help

If you don't have an xorg.conf file yet, run the following command to generate one:

# Xorg -configure

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:

     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

Just adapt one of those two lines for your personal setup.

Warning: Please check the generated xorg.conf file before you copy it to /etc/X11/xorg.conf and happily startx or reboot. Otherwise, you'll probably get a locked blank screen and won't be able to use your system anymore.

The config files generated by preceding steps are sometimes incorrect. If you want, you can compare the generated files to one of the Sample Xorg.conf files listed on the Xorg wiki page.

Please ensure that in the "Screen" section you have "DefaultDepth 24" and there is a "DRI" section with "Mode 666" in it. The fglrx driver needs those lines to work, but the generated files by preceding programs don't have it. Without those lines, you might get an unresponsive black screen after reboot. Besides, since most of the parts are now automatically detected in modern Xorg, you don't need to write so many things in xorg.conf as you did before with ancient Xorg versions. So, some config sections/values in the generated xorg.conf are redundant.

Here is a minimal working example:

Section "ServerLayout"
        Identifier     " Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
Section "Files"
        RgbPath      "/usr/share/X11/rgb"
        ModulePath   "/usr/lib/xorg/modules"
        FontPath     "/usr/share/fonts/misc"
        FontPath     "/usr/share/fonts/100dpi:unscaled"
        FontPath     "/usr/share/fonts/75dpi:unscaled"
        FontPath     "/usr/share/fonts/TTF"
        FontPath     "/usr/share/fonts/Type1"
Section "Module"
        Load  "extmod"
        Load  "dbe"
        Load  "xtrap"
        Load  "record"
        Load  "dri"
        Load  "glx"
        Load  "GLcore"
        Load  "freetype"
Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option      "Device" "/dev/input/mice"
        Option      "ZAxisMapping" "4 5 6 7"
Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
Section "Device"
        Identifier  "Card0"
        Driver      "fglrx"
        VendorName  "ATI Technologies Inc"
        BoardName   "Radeon Mobility X1400"
        BusID       "PCI:1:0:0"
Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth    24
        SubSection "Display"
                Viewport   0 0
                Depth     24
Section "DRI"
        Mode 0666

Next, make sure the fglrx module and any needed agp modules are loaded.

# modprobe fglrx 

Add them to the MODULES array of your /etc/rc.conf to ensure that they load when you boot.

Finally, run Xorg with startx or by using GDM/KDM and verify that direct rendering is enabled by running the following command in a terminal:

$ glxinfo | grep direct

If it says "direct rendering: yes" then you're good to go! If the glxinfo command is not found, you may need to install the mesa package as well.

Warning: In recent versions of Xorg, the paths of libs are changed. So, sometimes cannot be correctly loaded even if it's installed. Don't forget to check this if your GL is not working. Please read "Troubleshooting" section for details.

Troubleshooting (catalyst)

Rectangle/Checkerbox corruption with OpenGL programs

This was fixed in catalyst 8.9. It may occur though in later versions.

OpenGL programs like e.g. blender in windowed mode, show a rectangle/checkerbox corruption. This can be solved by using a Virtual display setting with a multiple of 64 bigger than your actual resolution like 1664 instead 1600 for width:

 Section "Screen"
   Identifier "Screen0"
   Device     "Card0"
   Monitor    "Monitor0"
   SubSection "Display"
     Depth     24
     Virtual 1664 1200

Black screen with complete lockups / hangs after reboot or startx

Faulty or corrupted amdpcsdb database

Fglrx and its Catalyst Control Center stores data on a database called amdpcsdb, located under /etc/ati. It isn't human readable, but only parsable by Catalyst Control Center. Sometimes, after updates, the settings in there aren't compatible with the new version of fglrx, so you end up with a black screen when starting X.

So, there is one thing to do.

Boot to init3, add the number 3 at the end of the menu.lst kernel options:

# rm /etc/ati/amdpcsdb

and restart Xorg (or even reboot).

Warning: Be careful. If you have saved settings through Catalyst Control Center, which are stored under that file, they may now have been lost. You should edit xorg.conf instead, by using aticonfig.

Be careful though. aticonfig stores its settings in amdpcsdb database like Catalyst Control Center. If you want that they're stored in xorg.conf instead, each time you use the aticonfig tool, add --input=/etc/X11/xorg.conf in the end of the command options as well.

Faulty ACPI hardware calls

It is possible that fglrx doesn't cooperate well with the system's ACPI hardware calls, so it autodisables itself and there is no screen output.

So try to run this:

  aticonfig --acpi-services=off

KDM disappears after logout

If you are running the catalyst proprietary driver and you get a console (tty1) instead of the expected KDM greeting when you log out, you must instruct KDM to restart the X server after each logout:

$ sudo nano /usr/share/config/kdm/kdmrc

Uncomment the following line under the section titled [X-:*-Core]:


KDM should now appear when you log out of KDE.

Bad screen resolution at login manager

If the resolution for your login manager is for example 1600x1200 and you want 1280x1024 you can fix it by using a xorg.conf (newer X-servers using the open source drivers normally don't need a xorg.conf, so if you don't have a xorg.conf you need to create one). In the "Screen" section add a modes lines:

 Section "Screen"
   Identifier "aticonfig-Screen[0]-0"
   Device     "aticonfig-Device[0]-0"
   Monitor    "aticonfig-Monitor[0]-0"
   DefaultDepth     24
   SubSection "Display"
     Viewport   0 0
     Depth     24
     Modes    "1280x1024" "2048x1536"#<-add this line to change the default login screen resolution

The first argument of modes is the resolution, which will be used by default. The second argument is the maximum resolution supported by your monitor. This is needed so that you are able to choose higher screen resolutions using for example the KDE systemsettings.

Direct Rendering Doesn't Work

This problem may occur when using the proprietary catalyst driver.

Warning: Make sure that you own a R6xx (HD2xxx) or newer card or the driver won't be enabled. You may encounter that error if you try to enable your display by using catalyst and a card older than the R6xx ones.
Warning: This error would also appear if you haven't rebooted your system after the installation or upgrade of catalyst. The system needs to load the fglrx.ko module in order to make the driver work.

If you have problem with direct rendering, run:

   $ LIBGL_DEBUG=verbose glxinfo > /dev/null

at the command prompt. At the very start of the output, it'll usually 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 that 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 xorg.conf somewhere:
   Section "DRI"
       Mode 0666
   libGL: OpenDriver: trying /usr/lib/xorg/modules/dri//
   libGL error: dlopen /usr/lib/xorg/modules/dri// failed (/usr/lib/xorg/modules/dri// cannot open shared object file: No such file or directory)
   libGL error: unable to find driver:
  • Something hasn't been installed correctly. If the paths in the error message are /usr/X11R6/lib/modules/dri/, 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 source /etc/profile into ~/.xsession or ~/.xinitrc, but may vary between login managers.
  • If the paths above in your error message _are_ /usr/lib/xorg/modules/dri/, then something hasn't been correctly installed. Try reinstalling the catalyst package.

Errors such as:

   fglrx: libGL version undetermined - OpenGL module is using glapi fallback

could be caused by having multiple versions of on your system. Run:

   $ sudo updatedb
   $ locate

This should return the following output:

   $ locate

These are the only three files you should have on your system. If you have any more (e.g. /usr/X11R6/lib/, 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:


Hibernate/Sleep Issues

Video fails to enter suspend/hibernate

If fglrx returns an error when attempting to suspend through hibernate scripts, a solution may be to add the following line to your "Device" section in /etc/X11/xorg.conf, which should allow the fglrx module to enter suspend mode.

Option      "UseInternalAGPGart" "no"

Video fails to resume from suspend2ram

ATI's proprietary catalyst driver cannot resume from suspend if the framebuffer is enabled. To disable the framebuffer, add vga=0 to your kernel options in /boot/grub/menu.lst, for example:

# (0) Arch Linux
title  Arch Linux
root   (hd0,0)
kernel /vmlinuz26 root=/dev/sda3 resume=/dev/sda2 ro vga=0
initrd /kernel26.img

System Freezes/Hard locks

  • To prevent system lockups, try adding the following lines to your fglrx "Device" section in xorg.conf
   Option "UseInternalAGPGART"         "no"
   Option "KernelModuleParm"           "agplock=0" # AGP locked user pages: disabled
Note: Neither option is necessary anymore since 8.24.18 because ATI has removed the internal AGP GART support from the driver.
  • As well, the radeonfb framebuffer 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.

Hardware Conflicts

Radeon cards used in conjunction with some versions of the nForce3 chipset (e.g. nForce 3 250Gb) won't have 3D acceleration. Currently the cause of this issue is unknown, but some sources indicate that it may be possible to get acceleration with this combination of hardware by booting Windows with the drivers from nVIDIA and then rebooting the system. This can be verified by issuing in a root console the following command:

    dmesg | grep agp

If you get something 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

...gets something similar to:

     (EE) fglrx(0): [agp] unable to acquire AGP, error "xf86_ENODEV"

Then you have this bug.

Some sources indicate that in some situations, downgrading the motherboard BIOS may help, but this cannot be verified in all cases. Also, a bad BIOS downgrade can render your hardware useless, so beware.

See bug for more information and a potential fix.

Compaq Presario Laptops

Even after installing the drivers and editing the configuration file as required, some laptops (e.g. Presario R4000 with Xpress 200M) 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 that it uses the "SidePort+UMA" option and 128M video memory plus another 128M taken from the system seems to work fine.

It could be a bug in the BIOS or in the Linux PCI code.

Temporary hangs when playing video

This problem may occur when using the proprietary catalyst driver.

If you experience temporary hangs lasting from a few seconds to several minutes occuring randomly during playback with mplayer, check /var/log/messages.log for output like:

Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160
Nov 28 18:31:56 pandemonium [<f8bc628c>] ? ip_firegl_ioctl+0x1c/0x30 [fglrx]
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160
Nov 28 18:31:56 pandemonium [<c0197038>] ? vfs_ioctl+0x78/0x90
Nov 28 18:31:56 pandemonium [<c01970b7>] ? do_vfs_ioctl+0x67/0x2f0
Nov 28 18:31:56 pandemonium [<c01973a6>] ? sys_ioctl+0x66/0x70
Nov 28 18:31:56 pandemonium [<c0103ef3>] ? sysenter_do_call+0x12/0x33
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160
Nov 28 18:31:56 pandemonium =======================

Adding the nopat kerneloption to /boot/grub/menu.lst and rebooting fixed the problem at least for me.

After a kernel upgrade: X doesn't start/modprobe doesn't find fglrx

Reinstall the catalyst drivers.