Difference between revisions of "AMD Catalyst"

From ArchWiki
Jump to: navigation, search
(Video acceleration: -cleanup)
(Remove rc.conf related material)
(45 intermediate revisions by 22 users not shown)
Line 3: Line 3:
 
[[es:ATI Catalyst]]
 
[[es:ATI Catalyst]]
 
[[fr:ATI#Catalyst]]
 
[[fr:ATI#Catalyst]]
[[it:ATI Catalyst]]
+
[[it:AMD Catalyst]]
 +
[[zh-CN:AMD Catalyst]]
 
{{Article summary start}}
 
{{Article summary start}}
{{Article summary text|An overview of ATI's proprietary Linux "Catalyst" video card driver.}}
+
{{Article summary text|An overview of AMD's proprietary Linux "Catalyst" video card driver.}}
 
{{Article summary heading|Related}}
 
{{Article summary heading|Related}}
 
{{Article summary wiki|ATI}}
 
{{Article summary wiki|ATI}}
{{Article summary wiki|Intel}}
 
{{Article summary wiki|NVIDIA}}
 
 
{{Article summary wiki|Xorg}}
 
{{Article summary wiki|Xorg}}
 
{{Article summary heading|Resources}}
 
{{Article summary heading|Resources}}
Line 16: Line 15:
 
{{Article summary end}}
 
{{Article summary end}}
  
Owners of '''ATI/AMD''' video cards have a choice between ATI's proprietary driver ({{AUR|catalyst}}) and the [[ATI|open source driver]] ({{Pkg|xf86-video-ati}}). This article covers the proprietary driver.
+
Owners of '''ATI/AMD''' video cards have a choice between AMD's proprietary driver ({{AUR|catalyst}}) and the [[ATI|open source driver]] ({{Pkg|xf86-video-ati}}). This article covers the proprietary driver.
  
ATI's Linux driver package ''fglrx'' ('''F'''ire'''GL''' and '''R'''adeon '''X''') is now known as ''Catalyst'' to fall in line with the naming scheme of the Windows driver. Only the package name has changed, while the kernel module retains its original ''fglrx.ko'' filename. Therefore, any mention of fglrx below is specifically in reference to the ''kernel module'', '''not the package'''.
+
AMD's Linux driver package ''catalyst'' was previously named ''fglrx'' ('''F'''ire'''GL''' and '''R'''adeon '''X'''). Only the package name has changed, while the kernel module retains its original ''fglrx.ko'' filename. Therefore, any mention of fglrx below is specifically in reference to the ''kernel module'', '''not the package'''.
  
Catalyst was once a precompiled package offered by Arch in the ''[extra]'' repository, but as of March 2009, official Arch support [http://www.archlinux.org/news/ati-catalyst-support-dropped/ has been dropped] because of dissatisfaction with the quality and speed of development.
+
As of October 2012, binary packages are being offered.  Currently, packages are available in the [community] repository, but it's unknown what will happen when an Xorg upgrade will break the driver.  In the past, Catalyst [https://www.archlinux.org/news/ati-catalyst-support-dropped/ has been dropped] from official Arch support because of dissatisfaction with the quality and speed of development.  Also, a legacy driver for Radeon HD 2xxx 3xxx 4xxx is not available in [community] yet. For more information, see [https://bbs.archlinux.org/viewtopic.php?pid=1166052#p1166052/ this] this forum post and onwards.
  
Compared to the open source driver, Catalyst performs worse in 2D graphics, but has a better support for 3D rendering. Supported devices are [http://en.wikipedia.org/wiki/Radeon ATI/AMD Radeon] video cards with chipset R600 and newer (as of Catalyst 9.4). See [http://en.wikipedia.org/wiki/Comparison_of_AMD_graphics_processing_units this table], or the Xorg [http://www.x.org/wiki/RadeonFeature#Decoder_ring_for_engineering_vs_marketing_names "Decoder ring",] to translate ''model'' names (X1900, HD4850) to/from ''chip'' names (R580, RV770 respectively).
+
Compared to the open source driver, Catalyst performs worse in 2D graphics, but has a better support for 3D rendering. Supported devices are [[wikipedia:Radeon|ATI/AMD Radeon]] video cards with chipset R600 and newer (as of Catalyst 9.4). See [[wikipedia:Comparison_of_AMD_graphics_processing_units|this table]], or the Xorg [http://www.x.org/wiki/RadeonFeature#Decoder_ring_for_engineering_vs_marketing_names "Decoder ring",] to translate ''model'' names (X1900, HD4850) to/from ''chip'' names (R580, RV770 respectively).
  
 
== Installation ==
 
== Installation ==
{{Warning|
 
Since Catalyst 12.4 AMD will provide only important updates of it's catalyst driver for Radeon HD < 5xxx graphic cards...
 
  
'''All Radeon HD 2xxx 3xxx 4xxx owners''' please switch to the new repository:
+
There are four ways of installing Catalyst on your system. One way is to use the official [community] repository, but this does not contain all the packages just yet. (At this time of writing, October 2012, there's no xvba-video and lib32 driver yet. Also, a legacy driver is still missing). Another one is to use Vi0L0's (Arch's unofficial Catalyst maintainer) repository. This repository does contain all the necessary packages. The third method you can use is the AUR; PKGBUILDs offered here are also made by Vi0L0 and are the same he uses to built packages for his repository. Lastly, you can install the driver directly from AMD.
  
[catalyst-hd234k]
+
Before choosing the method you prefer, you will have to see which driver you need. Since Catalyst 12.4, AMD has separated its development for Radeon HD 5xxx and Radeon HD 2xxx, 3xxx and 4xxx cards. For Radeon HD 2xxx, 3xxx and 4xxx cards, there's the '''legacy''' Catalyst driver, for Radeon HD 5xxx there is the regular Catalyst. Regardless of the driver you need, you will also need the Catalyst utilities.
<nowiki>Server = http://catalyst.apocalypsus.net/repo/catalyst-hd234k/$arch</nowiki>
+
  
Alternatively, there's also the {{AUR|catalyst-total-hd234k}} package.}}
+
{{Note|After the instructions for every method of installing, you will find general instructions '''everyone''' has to perform, regardless of the method you used.}}
  
{{Note|
+
=== Installing the driver ===
'''Catalyst 12.6 legacy beta news''':
+
==== Installing from the official repository ====
 +
This is the most simple and straightforward way, as it requires no unofficial repositories and because this package uses [[Dynamic Kernel Module Support|DKMS]] to automatically rebuilt the kernel modules when the kernel is upgraded. If this repository holds the packages you need, I suggest you take this one.  
  
- '''<nowiki>supports Radeon HD 2xxx 3xxx 4xxx ONLY</nowiki>'''.
+
To install Catalyst, you can use [[Pacman|pacman]]:
  
- supports 3.4 kernel.
+
# pacman -S catalyst-dkms catalyst-utils
  
- supports xorg-server 1.12.
+
{{Note|Don't forget to install {{Pkg|linux-headers}} for [[Dynamic Kernel Module Support|DKMS]] to function properly.}}
  
- it includes OpenCL binaries for the SDK.}}
+
{{Note|If pacman asks you about removing '''libgl''' - you may safely say "Y"}}
  
{{Note|
+
{{Note|If you are using systemd, you should enable the DKMS service. SysV init users do not have to do this. For more information on enabling service files, see [[systemd]].}}
'''Catalyst 12.6 stable news''':
+
  
- '''<nowiki>supports Radeon HD >= 5xxx</nowiki>'''.
+
If you are on 64 bit and also need 32 bit OpenGL support, install lib32-catalyst-utils. Note that you will have to enable the [multilib] repository first.
  
- supports 3.4 kernel (through patches).
+
# pacman -S lib32-catalyst-utils
  
- supports xorg-server 1.12.
+
Later on, a legacy driver will also be offered here.
  
- it includes OpenCL binaries for the SDK.
+
==== Installing from the unofficial repository ====
 +
If you need packages that currently aren't hosted by the official repository and don't fancy building the packages from the [[Arch User Repository|AUR]], this is the way to go. The repository is maintained by our unofficial Catalyst maintainer, Vi0L0. All packages are signed and I consider them safe to use. As you will see later on in this article, Vi0L0 is also responsible for many other packages that will help you get your system working with your ATI graphic cards.  
  
- GNOME3 support looks good.
+
Vi0L0 has two different Catalyst repositories, each having different drivers:
 +
*[catalyst]; for the regular Catalyst driver needed by Radeon HD 5xxx and up.
 +
*[catalyst-hd234k]; for the legacy Catalyst driver needed by Radeon HD 2xxx, 3xxx and 4xxx cards.  
  
- KDE's direct rendering works without tearing.}}
+
{{Warning|The Legacy driver does not support Xorg 1.13 for now. Support should be added by AMD in a century or two, but this could be sooner. Should you want to use this driver, see [[#Xorg repositories]] for instructions on how to roll back to or hold back Xorg 1.12.}}
  
 +
To enable one of these, you will have to edit {{ic|/etc/pacman.conf}} and add the repository of choice's information '''above all other repositories in {{ic|/etc/pacman.conf}}:
  
Almost''[*]'' all catalyst's packages mentioned below (like catalyst-utils) are available on [[AUR]] (read [[#Installing_from_AUR| Installing from AUR]] for more details) and on [[#.5Bcatalyst.5D_repository| unofficial [catalyst] repository]].
+
# nano /etc/pacman.conf
  
To install AMD's fglrx driver for the {{ic|linux}} package, you need to install either '''catalyst''' (driver for stock kernel) + '''catalyst-utils''' (required libraries/utilities) packages or '''catalyst-total''' package.
+
For [catalyst], it's this:
  
''[*]''catalyst-total is available only on AUR, as it was designed to be the fastest way of building catalyst drivers for AUR users
+
[catalyst]
 +
<nowiki>Server = http://catalyst.apocalypsus.net/repo/catalyst/$arch</nowiki>
  
If you are using '''x86_64''' architecture and want '''32-bit OpenGL support''' - install '''lib32-catalyst-utils''', just make sure that you did uncomment [multilib] repository in /etc/pacman.conf before installing this package - note: if you are using catalyst-total then you do not need this package.
+
For [catalyst-hd234k], you have to add the following:
  
Please note that there are some '''additional packages''' which can be useful, every one of them '''can replace catalyst package''' and provide fglrx modules for '''multiple kernels''' installed on your system, these packages are:
+
[catalyst-hd234k]
 +
<nowiki>Server = http://catalyst.apocalypsus.net/repo/catalyst-hd234k/$arch</nowiki>
  
- '''catalyst-generator''' - able to generate fglrx modules packed into pacman's packages - most secure and KISS-compatible package in this side-note, althought it has to be operated manually;
+
You must also [[User:Vi0L0|add Vi0L0's GPG key]] so that pacman trusts the repositories.
  
- '''catalyst-hook''' - mkinitcpio' hook which will automatically update fglrx modules with every kernel's update;
+
# pacman-key --keyserver pgp.mit.edu --recv-keys 0xabed422d653c3094
 +
# pacman-key --lsign-key 0xabed422d653c3094
  
- '''catalyst-daemon''' - that delivers 'automatic update of fglrx modules with every kernel's update' functionality done by init script.
+
Once you have added this, update pacman's database and install the packages:
  
You will find more details about those packages in [[#Tools| Tools section]].
+
# pacman -Syu
 +
# pacman -S catalyst catalyst-utils
  
{{Note| If pacman asks you about removing '''libgl''' - you may safely say "Y"}}
+
{{Note|If pacman asks you about removing '''libgl''' - you may safely say "Y"}}
  
After installing you need to ensure xorg.conf is [[#Configuration| created and/or configured]] before rebooting.
+
If you are on 64 bit and need 32 bit OpenGL support, install lib32-catalyst-utils. Note that you will have to enable the [multilib] repository first:
  
If you are using '''x86_64''' architecture and want '''32-bit OpenGL support''' - install [https://aur.archlinux.org/packages.php?ID=24824 AUR's lib32-catalyst-utils], just make sure that you have uncommented [multilib] repository in /etc/pacman.conf. Note: if you are using catalyst-total then you do not need this package.
+
# pacman -S lib32-catalyst-utils
  
{{Note| With '''every''' Catalyst update you should remove '''amdpcsdb''' file in this way: stop your X/DE, remove {{ic|/etc/ati/amdpcsdb}}, start your X/DE, and then run {{ic|amdcccle}} - otherwise you may experience bad catalyst's versioning in amdcccle.}}
+
Both repositories also contain other packages, that can ''replace'' the Catalyst package and provide fglrx modules for ''multiple'' kernels that are installed on your system:
{{Warning|
+
*Make sure that you own a '''R6xx''' ('''HD2xxx''') or newer card or the driver '''won't''' be enabled. You will encounter an error if you try to enable your display using Catalyst and a card older than the R6xx series.
+
  
*It appears that Catalyst 9.10-10.11 does not support nForce4 motherboard chipsets.}}
+
* Catalyst-generator; this package is able to generate fglrx modules packed into pacman compliant packages - most secure and KISS-compatible package in this side-note, although it has to be operated manually.
 +
* Catalyst-hook; A hook for [[mkinitcpio|mkinitcpio]] which will automatically update fglrx modules with every kernel's update. '''This is basically the same as catalyst-dkms from [community]'''.
 +
* Catalyst-daemon; this delivers an automatic update of the fglrx module with every kernel update, done by an init script. '''This is the same as Catalyst-hook and also catalyst-dkms from [community]. Also, systemd users have no use for this package, as systemd has no init script support'''.
  
{{Warning|Whether or not you install catalyst package from AUR, you will have to reinstall/update fglrx every time the kernel is updated.  Otherwise, X '''will''' fail to start. Please remember that you can alway use catalyst-hook or catalyst-daemon package which will perform automatic fglrx update - read [[#Automatic_re-compilation_of_fglrx_module_with_every_kernel_update| this section]] for more details}}
+
You will find more details about those packages in [[#Tools| Tools section]].
 +
Lastly, both repositories also contain the '''xvba-video''' package, which enables video acceleration described [[#Video_acceleration]] and the '''AMDOverdriveCtrl''' package, which is a GUI to control over- and underclocking. See [[#GPU/Mem frequency, Temperature, Fan speed, Overclocking utilities]]
  
''If you need more information on catalyst, visit [http://bbs.archlinux.org/viewtopic.php?id=57084 this thread].''
+
==== Installing from the AUR ====
 +
The last way to install Catalyst is from the [[Arch User Repository|AUR]]. If you want to built the packages specifically for your computer, this is your way to go. Note that this is also the most tedious way to install Catalyst; it requires the most work and also requires manual updates upon every kernel update.
  
=== Installing from AUR ===
+
{{Warning|If you install the Catalyst package from the AUR, you will have to rebuild Catalyst every time the kernel is updated. Otherwise X '''will''' fail to start.}}
 +
{{Warning|The Legacy driver does not support Xorg 1.13 for now. Support should be added by AMD in a century or two, but this could be sooner. Should you want to use this driver, see [[#Xorg repositories]] for instructions on how to roll back to or hold back Xorg 1.12.}}
  
Addresses of [[AUR]] packages mentioned on the top of [[#Installation| Installation section]]:
+
All packages mentioned above in Vi0L0's unofficial repository are also available on the [[Arch User Repository|AUR]]:
 +
* {{AUR|Catalyst}};
 +
* {{AUR|Catalyst-utils}};
 +
* {{AUR|Lib32-catalyst-utils}};
 +
* {{AUR|Catalyst-generator}};
 +
* {{AUR|Catalyst-hook}};
 +
* {{AUR|Catalyst-daemon}}.
  
*{{aur|catalyst}} - driver for stock kernel
+
The AUR also holds some packages that are '''not''' found in any of the repositories. These packages contain the so-called ''Catalyst-total'' packages and the beta versions:
*{{aur|catalyst-utils}} - required libraries/utilities
+
* {{AUR|Catalyst-total-hd234k}};
*{{aur|lib32-catalyst-utils}} - 32-bit OpenGL support for x86_64 systems
+
* {{AUR|Catalyst-total}};
*{{aur|catalyst-total}} - catalyst-hook + catalyst-utils + lib32-catalyst-utils
+
* {{AUR|Catalyst-test}};
*{{aur|catalyst-generator}} - Generator of catalyst-{kernver} packages with fglrx module inside
+
* {{AUR|Lib32-catalyst-test}};
*{{aur|catalyst-hook}} - Auto re-compile the fglrx module when kernel update (mkinitcpio's hook)
+
* {{AUR|Catalyst-total-pxp}};
*{{aur|catalyst-daemon}} - Auto re-compile the fglrx module if kernel was updated (init script)
+
  
==== Custom Kernels ====
+
The ''Catalyst-total'' packages are made to make the lives of AUR users easier. It builds the driver, the kernel utilities and the 32 bit kernel utilities. It also builds the Catalyst-hook package, which is explained above.
{{Note| catalyst-generator is able to build catalyst-{kernver} packages for you so you do not actually need to perform all those steps manually, although this section should stay because it can be useful}}
+
  
To install catalyst for a custom kernel, you'll need to build your own {{ic|catalyst-$kernel}} package.
+
''Catalyst-total-pxp'' builds Catalyst with experimental powerXpress support.
  
If you are at all uncomfortable or inexperienced making packages, read up the [[ABS]] wiki page first so things go smoothly.
+
For more information on building from the AUR, read [[#Installing_from_AUR| Installing from AUR]].
  
'''Obtaining PKGBUILD'''
+
==== Installing directly from AMD ====
 +
{{Warning|Using the installer from ati.com/amd.com is '''not''' recommended! It may cause file conflicts and X failures and you will miss Arch-specific fixes. You '''must''' be familiar with booting to the command-line if you wish to attempt this.}}
  
Obtain the {{ic|PKGBUILD}} and {{ic|catalyst.install}} files from [https://aur.archlinux.org/packages.php?ID=29111 AUR].
+
{{Note|If you have attempted a manual install from the official installer and cannot recover your desktop:
 +
# /usr/share/ati/fglrx-uninstall.sh
 +
}}
  
'''Editing the PKGBUILD and Building'''
+
1.) Download the installer from AMD or elsewhere (whereas *-* will be the version): {{ic|ati-driver-installer-*-*-x86.x86_64.run}}
  
Three changes need to be made here:
+
2.) Make sure it's executable: {{ic|# chmod +x ati-driver*}}
1. Change:{{ic|1=pkgname=catalyst}} to {{ic|1=pkgname=catalyst-KERNEL_NAME}}
+
where KERNEL_NAME is whatever you want (e.g. custom, mm, themostawesomekernelever)
+
  
2. Remove {{ic|linux}} from the dependencies list.
+
3.) Ensure you're using a basic video driver like vesa and remove conflicting drivers (i.e. {{ic|xf86-video-ati}}) with pacman.
  
3. Build and install the package.  ({{ic|makepkg -i}} or {{ic|makepkg}} followed by {{ic|pacman -U pkgname.pkg.tar.gz}})
+
4.) Symlink {{ic|/usr/src/linux}} to {{ic|<nowiki>/usr/src/{kernelsource}</nowiki>}}. 64-bit users also symlink{{ic|/usr/lib64}} to {{ic|/usr/lib}}.
  
{{Note| If you run multiple kernels, then install catalyst module packages for all kernels.  They won't conflict with one another.}}
+
5.) Be sure to have your build environment setup: {{ic|# pacman -Syu base-devel linux-headers}}
  
=== Unofficial repositories ===
+
6.) Now run {{ic|# ./ati-driver-installer-*-*-x86.86_64.run}} (Files will extract to a temporary folder and scripts will run...)
  
There are some unofficial repositories containing the newest (or older) catalyst packages along with the appropriate libs and software in order to use the driver.
+
Assuming nothing went horribly wrong...
If you want to know what packages are inside any given repository you need to first add repository to pacman.conf, perform ''pacman -Sy'' command and then list repository with pacman -Sl command:
+
# pacman -Sl catalyst
+
  
==== [catalyst] repository ====
+
7.) Check {{ic|/usr/share/ati/fglrx-install.log}} for issues. There should also be a {{ic|/lib/modules/fglrx/make.{ker_version}.log}}.
It contains ''newest stable catalyst driver'' and some additional packages.
+
This repository should always work with the ''stock kernel'' from [core] and it is updated most frequently.
+
  
To use it:
+
{{Note|If you modify the make scripts, save to a different filename. Otherwise uninstall will not complete successfully.}}
  
1.) Edit {{ic|/etc/pacman.conf}} and add these lines above all other repositories (even above [core] and [extra]):
+
=== Configuring the driver ===
 +
After you have installed the driver via your chosen method, you will have to configure X to work with Catalyst. Also, you will have to make sure the module gets loaded at boot. Also, one should disable [[KMS|kernel mode setting]].
  
[catalyst]
+
==== Configuring X ====
Server = <nowiki>http://catalyst.apocalypsus.net/repo/catalyst/$arch</nowiki>
+
To configure X, you will have to create an xorg.conf file. Catalyst provides its own {{ic|aticonfig}} tool to create and/or modify this file.
 +
It also can configure virtually every aspect of the card for it also accesses the {{ic|/etc/ati/amdpcsdb}} file. For a complete list of {{ic|aticonfig}} options, run:
  
2.) Update with:
+
  # aticonfig --help | less
  # pacman -Syu
+
  
3.) Install catalyst:
+
{{Warning|Use the --output option before committing to /etc/X11 as an xorg.conf file will override anything in /etc/X11/xorg.conf.d}}
# pacman -S catalyst catalyst-utils
+
  
'''Note:''' If you are updating from catalyst =< 10.8 steps 2 and 3 look like this:
+
{{Note|If you want to adhere to the new xorg.conf.d: Append your {{ic|aticonfig}} string with ''--output'' so that you can adapt the Device section to {{ic|/etc/X11/xorg.conf.d/20-radeon.conf}}. The drawback of this is that many {{ic|aticonfig}} options rely on an xorg.conf, and thus will be unavailable.}}
# pacman -Sy
+
# pacman -Rdd catalyst
+
# pacman -S catalyst catalyst-utils
+
  
4.) Don't forget to set up your {{ic|/etc/X11/xorg.conf}}. Use {{ic|aticonfig --initial}}, if it doesn't exist.
+
Now, to configure Catalyst. If you have only one monitor, run this:
  
5.) Reboot.
+
# aticonfig --initial
  
For x86_64 users, the lib32-catalyst-utils package is needed to run 32-bit OpenGL applications and Wine games.
+
However, if you have two monitors and want to use both of them, you can run the command stated below. Note that this will generate a dual head configuration with the second screen located above the first screen.
  
Repository also contains '''xvba-video''' package so you may easily use video acceleration described [[#Video_acceleration|below]], plus '''catalyst-daemon''', '''catalyst-hook''' and '''catalyst-generator''' packages.
+
# aticonfig --initial=dual-head --screen-layout=above
  
'''[catalyst]''' repository contains [https://aur.archlinux.org/packages.php?ID=26687 xorg-server-catalyst-maximize-fix] package. This package is fixing problems with '''maximizing/resizing''', use it mainly if you have [https://wiki.archlinux.org/index.php/ATI_Catalyst#Catalyst_10.6.2F10.7.2F10.8.2F10.9_:_black.2Fgrey.2Fwhite_boxes.2Fartifacts_in_firefox.2Fthunderbird disabled ATi 2D Acceleration Architecture]. To remove xorg-server and install xorg-server-catalyst-maximize-fix just type:
+
{{Note|See [[#Double Screen (Dual Head / Dual Screen / Xinerama)]] for more information on setting up dual monitors.}}
  
# pacman -Rdd xorg-server xorg-server-common
+
You can compare the generated file to one of the [[Xorg#Sample_xorg.conf_Files|Sample Xorg.conf]] examples listed on the Xorg page.
# pacman -S xorg-server-catalyst-maximize-fix
+
  
==== Archived repositories ====
+
Although the current Xorg versions auto-detect most options when started, you may want to specify some in case the defaults change between versions.
  
There are some archived repositories placed in [http://catalyst.apocalypsus.net/repo/catalyst http://catalyst.apocalypsus.net/repo/catalyst] or [http://catalyst.apocalypsus.net/repo/catalyst-hd234k http://catalyst.apocalypsus.net/repo/catalyst-hd234k], please browse this site and look for files with *.db extension, if you have found interesting catalyst repository tell pacman to use it.
+
Here is an example (with notes) '''for reference'''. Entries with '#' should be required, add entries with '##' as needed:
For catalyst-hd234k-12.4 pacman.conf entry looks like:
+
  
 
{{bc|1=
 
{{bc|1=
[catalyst-hd234k-12.4]
+
Section "ServerLayout"
Server = http://catalyst.apocalypsus.net/repo/catalyst-hd234k/$arch
+
        Identifier    "Arch"
 +
        Screen      0  "Screen0" 0 0          # 0's are necessary.
 +
EndSection
 +
Section "Module"
 +
        Load ...
 +
        ...
 +
EndSection
 +
Section "Monitor"
 +
        Identifier  "Monitor0"
 +
        ...
 +
EndSection
 +
Section "Device"
 +
        Identifier  "Card0"
 +
        Driver      "fglrx"                        # Essential.
 +
        BusID      "PCI:1:0:0"                    # Recommended if autodetect fails.
 +
        Option      "OpenGLOverlay" "0"            ##
 +
        Option      "XAANoOffscreenPixmaps" "false" ##
 +
EndSection
 +
Section "Screen"
 +
        Identifier "Screen0"
 +
        Device    "Card0"
 +
        Monitor    "Monitor0"
 +
        DefaultDepth    24
 +
        SubSection "Display"
 +
                Viewport  0 0
 +
                Depth    24                        # Should not change from '24'
 +
                Modes "1280x1024" "2048x1536"      ## 1st value=default resolution, 2nd=maximum.
 +
                Virtual 1664 1200                  ## (x+64, y) to workaround potential OGL rect. artifacts/
 +
        EndSubSection                              ## fixed in Catalyst 9.8
 +
EndSection
 +
Section "DRI"
 +
        Mode 0666                                  # May help enable direct rendering.
 +
EndSection
 
}}
 
}}
  
You can also view archive catalyst PKGBUILDs and use them to build catalyst package which fit your needs, you can find it inside tar.gz archives [http://catalyst.apocalypsus.net/tarball here].
+
{{Note|With '''every''' Catalyst update you should remove '''amdpcsdb''' file in this way: kill X, remove {{ic|/etc/ati/amdpcsdb}}, start X and then run {{ic|amdcccle}} - otherwise the version of Catalyst may display wrongly in amdcccle.}}
  
==== Xorg-server repositories ====
+
''If you need more information on Catalyst, visit [https://bbs.archlinux.org/viewtopic.php?id=57084 this thread].''
  
 +
==== Loading the module at boot ====
 +
How you should handle this depends on the init system you're using; either SysVinit or systemd. In either case, you have to blacklist ''radeon'' in {{ic|/etc/modprobe.d/modprobe.conf}}. For more information, see [[Modprobe|blacklisting in this article]]. '''Users of the [community] package do not have to do this, it's automatically done for them when installing the package'''.
  
'''[xorg111]'''
+
{{Note|The systemd method is recommended, as Arch is slowly switching over to this and the rc.conf method is actually deprecated.}}
  
catalyst < 12.6 isn't supporting xorg-server 1.12, that's why this repo appeared.
+
===== The systemd method =====
 +
* Disable the {{ic|radeon}} module from auto-loading. If it occurs in any file under {{ic|/etc/modules-load.d/}}, remove the file (or, if the file contains multiple modules, just remove the radeon one).
 +
* Either add {{ic|fglrx}} on a new line of an existing module file located under {{ic|/etc/modules-load.d/}}, or create a new file and add {{ic|fglrx}}.
  
To use this repo you need to edit /etc/pacman.conf and add those lines above all other repositories:
+
==== Disable kernel mode setting ====
  
{{bc|1=
+
Disabling kernel mode setting is important, as the driver doesn't take advantage of [[KMS]] yet. If you do not deactivate KMS, your system might freeze when trying to switch to a tty or even when shutting down via your DE.
[xorg111]
+
Server = http://catalyst.apocalypsus.net/repo/xorg111/$arch
+
}}
+
  
'''[xorg110]'''
+
For [[GRUB Legacy|GRUB Legacy]], edit {{ic|menu.lst}} by adding {{ic|nomodeset}} to the kernel parameters. For example:
  
This repository contains xorg-server packages of 1.10 line - catalyst driver in version < 11.11 was not supporting xorg-server 1.11.
+
kernel /boot/vmlinuz-linux root=/dev/sda1 ro '''nomodeset'''
  
To use this repo you need to edit /etc/pacman.conf and add those lines '''above all''' other repositories:
+
For [[GRUB2|GRUB 2]], edit {{ic|/etc/default/grub}} and add ''nomodeset'' to the kernel parameter options, e.g.
  
{{bc|1=
+
GRUB_CMDLINE_LINUX="nomodeset"
[xorg110]
+
Server = http://catalyst.apocalypsus.net/repo/xorg110/$arch
+
}}
+
  
'''[xorg19]'''
+
Then run, as root;
  
Catalyst <= 11.3 isn't supporting '''xorg-server >= 1.10''' (checked also with IgnoreAbi flag) - that's the reason why [xorg19] repo with xserver 1.9 and some additional packages arrived.
+
# grub-mkconfig -o /boot/grub/grub.cfg
  
To use it you need edit /etc/pacman.conf and add those lines above all other repositories:
+
For [[Syslinux|Syslinux]], edit {{ic|/boot/syslinux/syslinux.cfg}} and add ''nomodeset'' to the {{ic|APPEND}} line, e.g.:
  
{{bc|1=
+
APPEND root=/dev/sda2 ro ''nomodeset''
[xorg19]
+
Server = http://catalyst.apocalypsus.net/repo/xorg19/$arch
+
}}
+
  
'''[xorg18]'''
+
==== Checking operation ====
  
Catalyst < 10.10 isn't working with xorg-server >= 1.9 (checked also with IgnoreAbi flag).
+
Assuming that a reboot to your login was successful, you can check if fglrx is running properly with the following commands:
To use it you need edit /etc/pacman.conf and add those lines above all other repositories:
+
  
{{bc|1=
+
$ lsmod | grep fglrx
[xorg18]
+
$ fglrxinfo
Server = http://catalyst.apocalypsus.net/repo/xorg18/$arch
+
}}
+
  
'''[xorg17]'''
+
If you get output, it works. Finally, run X with {{ic|startx}} or by using GDM/KDM and verify that direct rendering is enabled by running the following command in a terminal:
  
Supported since catalyst 10.4
+
$ glxinfo | grep direct
  
[xorg17] repository contains xserver 1.7 packages, use it only if you are experiencing problems with newer xservers.
+
If it says "direct rendering: yes" then you're good to go! If the glxinfo command is not found, you might need to install the {{Pkg|mesa-demos}} package.
  
Repository contains [http://catalyst.apocalypsus.net/tarball/xorg-server-1.7-backclear.tar.gz xorg-server-backclear] (patched with backclear patch) and [https://aur.archlinux.org/packages.php?ID=35686 xorg-server-1.7-catalyst-maximize-fix] (patched with fedora patch) packages. Both this patches fix problems with '''maximizing/resizing''' but they are doing it in different way - you may choose which patched xserver is best for you. To remove xorg-server and install xorg-server-backclear just type:
+
{{Note|You can also use:
# pacman -Rdd xorg-server
+
$ fgl_glxgears
# pacman -S xorg-server-backclear
+
as the fglrx alternative test to glxgears.
Similar with xorg-server-1.7-catalyst-maximize-fix
+
}}
 +
{{Warning|In recent versions of Xorg, the paths of libs are changed. So, sometimes {{ic|libGL.so}} cannot be correctly loaded even if it's installed. Check this if your GL is not working. Please read "Troubleshooting" section for details.}}
  
To use [xorg17] repo please put those lines at the top of all other repositories in '''/etc/pacman.conf''':
+
If you have trouble, see [[#Troubleshooting]].
  
{{bc|1=
+
=== Custom Kernels ===
[xorg17]
+
Server = http://catalyst.apocalypsus.net/repo/xorg17/$arch
+
}}
+
  
'''[xorg16]'''
+
To install catalyst for a custom kernel, you'll need to build your own {{ic|catalyst-$kernel}} package.
  
[xorg16] repository contains xserver 1.6 packages, use it only if you are experiencing problems with newer xservers.
+
If you are at all uncomfortable or inexperienced with making packages, read up the [[ABS]] wiki page first so things go smoothly.
{{bc|1=
+
[xorg16]
+
Server = http://catalyst.apocalypsus.net/repo/xorg16/$arch
+
}}
+
  
=== Tools ===
+
# Obtain the {{ic|PKGBUILD}} and {{ic|catalyst.install}} files from [[AUR|Catalyst]].
 +
# Editing the PKGBUILD. Two changes need to be made here:
 +
## Change {{ic|1=pkgname=catalyst}} to {{ic|1=pkgname=catalyst-$kernel_name}}, where $kernel_name is whatever you want (e.g. custom, mm, themostawesomekernelever).
 +
## Change the dependency of {{ic|linux}} to {{ic|$kernel_name}}.
 +
# Build your package and install; run {{ic|makepkg -i}} or {{ic|makepkg}} followed by {{ic|pacman -U pkgname.pkg.tar.gz}}
  
==== catalyst-generator ====
+
{{Note|If you run multiple kernels, you have to install the Catalyst-utils packages for all kernels. They won't conflict with one another.}}
[https://aur.archlinux.org/packages.php?ID=34773 catalyst-generator] is a package able to build and install ''fglrx modules'' packed into nice catalyst-{kernver} pacman's packages.
+
  
It creates ''catalyst-{kernver}'' packages using [[makepkg]] and installs them with [[pacman]]. ''{kernver}'' is the kernel version for which each package was built (e.g. catalyst-2.6.35-ARCH package was built for 2.6.35-ARCH kernel).
+
{{Note|Catalyst-generator is able to build catalyst-{kernver} packages for you so you do not actually need to perform all those steps manually. For more information, see [[#Tools| Tools section]].}}
  
To build and install catalyst-{kernver} package for booted kernel as an '''unprivileged user''' (safer way) type this:
 
{{ic|catalyst_build_module}}
 
You will be asked for root's password to proceed to package installation.
 
It is important to run this command '''after''' installing catalyst-generator.
 
  
This package '''doesn't support auto re-compilation functionality''' so after kernel updates you will have to ''manually'' update catalyst-{kernver} package.  Do it in this way (without rebooting):
+
=== PowerXpress support ===
  
1.) As root:
 
# catalyst_build_module remove
 
  
This will remove all unused {{ic|<nowiki>catalyst-{kernver}</nowiki>}} packages
+
PowerXpress technology allows switching from integrated graphics (IGP) to discrete graphics on notebooks, either to increase battery life or to achieve better 3D rendering capabilities.
  
2.) As unprivileged user:
+
To use such functionality on Arch you will have to:
# catalyst_build_module ''new_kernel_version''
+
* Get and build {{AUR|catalyst-total-pxp}} package from the [[Arch User Repository|AUR]], or
Where ''new_kernel_version'' is a version of kernel which you just updated/installed. e.g.:
+
* Install '''catalyst-utils-pxp''' package from the [catalyst] repository (plus additional lib32-catalyst-utils-pxp, if needed).
catalyst_build_module 2.6.36-ARCH
+
or:
+
catalyst_build_module all
+
which will built catalyst-{kernver} packages for all kernels.
+
  
If you want to remove {{ic|catalyst-generator}} - it's best to run this as root before removing catalyst-generator:
 
catalyst_build_module remove_all
 
(This will remove all catalyst-{kernver} packages from the system.)
 
  
catalyst-generator isn't able to remove all those catalyst-{kernver} packages automatically while being removed because there can not be more than one instance of pacman running. If you forget to type `catalyst_build_module remove_all` before typing `pacman -R catalyst-generator` - catalyst-generator will tell you which catalyst-{kernver} packages you will have to remove after removing catalyst-generator.
+
To perform a switch into Intel's IGP you will also have to install the '''libgl''' package and Intel's drivers: '''xf86-video-intel''' and '''intel-dri'''.
  
{{Note| If you see those warnings:
+
{{Note|Unfortunately there are some problems with the new Intel drivers and for now the '''last noted working version of xf86-video-intel is 2.20.2-2''', so you will probably have to downgrade from the latest version that you have gotten from Arch's repositories (although we recommend to test the newest one before downgrading - there's always some possibility that it will work).
  
'''WARNING:''' Package contains reference to $srcdir
+
You can get '''xf86-video-intel 2.20.2-2''' from [http://catalyst.apocalypsus.net/files/xf86-video-intel-2.20.2/ here]; just download the one for your architecture and install it with {{ic|pacman -U}}.
 +
Be aware that '''xf86-video-intel 2.20.2-2''' works with '''xorg-server 1.12''', so if you want to use it you will have to downgrade xorg-server as well. For information on this, see [[#Xorg repositories]].}}
  
'''WARNING:''' '.pkg' is not a valid archive extension.
+
Now you can switch between the integrated and the discrete GPU, using these commands:
  
while building catalyst-{kernver} package - do not be concerned, it's normal.
+
{{bc|1=
 +
# aticonfig --px-igpu    #for integrated GPU
 +
# aticonfig --px-dgpu    #for discrete GPU
 
}}
 
}}
  
==== Automatic re-compilation of fglrx module with every kernel update ====
+
Just remember that fglrx needs /etc/X11/xorg.conf configured for AMD's card with 'fglrx' inside.
  
{{Note| Here catalyst_build_module script is working on fglrx modules files, not on pacman's packages.
+
You can also use the '''pxp_switch_catalyst''' switching script that will perform some additional usefull operations:
Most of catalyst_build_module script options mentioned in catalyst-generator section is supported, type '''catalyst_build_module help''' to check which ones exactly.
+
* Switching xorg.conf - it will rename xorg.conf into xorg.conf.cat (if there's fglrx inside) or xorg.conf.oth (if there's intel inside) and then it will create a symlink to xorg.conf, depending on what you chose.
 +
* Running {{ic|aticonfig --px-Xgpu}}.
 +
* Running {{ic|switchlibGL}}.
 +
* Adding/removing fglrx into/from {{ic|/etc/modules-load.d/catalyst.conf}}.
 +
 
 +
Usage:
 +
{{bc|1=
 +
# pxp_switch_catalyst amd
 +
# pxp_switch_catalyst intel
 
}}
 
}}
Since catalyst 10.9 that funcionality has been removed from catalyst package mainly because of [https://bbs.archlinux.org/viewtopic.php?pid=825546#p825546 this] and [https://bbs.archlinux.org/viewtopic.php?pid=825785#p825785 that].
 
  
Still it can be very useful if you are using more than one stock kernel, or you do not like to rebuild catalyst package with every kernel update.
+
If you have got problems when you try to run X on Intel's driver you may try to force '''"UXA" acceleration'''; just make sure that your xorg.conf for Intel's GPU got '''Option "AccelMethod"  "uxa"''', like here:
Known mkinitcpio's hook functionality has been moved to [https://aur.archlinux.org/packages.php?ID=40834 AUR's catalyst-hook].
+
{{bc|1=
 +
Section "Device"
 +
  Identifier  "Intel Graphics"
 +
  Driver      "intel"
 +
  #Option      "AccelMethod"  "sna"
 +
  Option      "AccelMethod"  "uxa"
 +
  #Option      "AccelMethod"  "xaa"
 +
EndSection
 +
}}
  
Also there is a new package able to provide similar functionality called [https://aur.archlinux.org/packages.php?ID=40832 catalyst-daemon].
+
== Xorg repositories ==
 +
Catalyst is notorious for its slow update process. As such, it is common that a new Xorg version is pushed down from upstream that will break compatibility for Catalyst. This means that Catalyst users either have to hold the Xorg packages from updating, or use a backported repository that only contains the Xorg packages that should be hold back. Vi0L0 has stepped in to fulfil this task and provides several backported repositories.  
  
Please note that those packages provides only re-building scripts and source files needed to build fglrx module, and they depend on catalyst-utils package.
+
If you want to use pacman to hold back packages from updating, see [[pacman|skip package from being upgraded]]. Packages you should hold back, are:
 +
*xorg-server-*
 +
*xf86-input-*
 +
*xf86-video-*
  
Auto re-compilation is enabled by default after installing selected package, if you want to turn it off just run this command as root:
+
If you want to use the backported repositories, you have to edit {{ic|/etc/pacman.conf}} and add the information of the repository '''above all other repositories''', even above your Catalyst repository, should you use one.
# catalyst_build_module autooff
+
You can also turn it on with:
+
# catalyst_build_module auto
+
  
catalyst_build_module is storing all informations about compilling/installig fglrx module in '''log''' file placed in /var/log/catalys-install.log. But you do not need to remember it, you will be informed about that fact whenever installation fails.
+
===[xorg112]===
 +
The current version of Catalyst doesn't support xorg-server 1.13 at the moment.
  
===== catalyst-hook =====
+
[xorg112]
In '''catalyst-hook''' 'automatic re-compilation' functionality is done by a '''fglrx hook''' on [[mkinitcpio]] with combination of forcing to update package '''linux-headers''' in first place.
+
<nowiki>Server = http://catalyst.apocalypsus.net/repo/xorg112/$arch</nowiki>
  
The hook will call '''catalyst_build_module''' command to update fglrx module for the version of your new kernel, and additionally it will call '''catalyst_build_module remove''' command to remove unneeded flgrx module(s).
+
===[xorg111]===
 +
Catalyst < 12.6 doesn't support xorg-server 1.12.
  
{{Note| If you are using this functionality it's '''important''' to look at the installation process of linux (or any other kernel) package. fglrx hook will tell you is everything all right.}}
+
[xorg111]
{{Note| If your '''custom kernel''' is using some '''non-standard mkinitcpio configuration file''' (ie. linux-zen is using /etc/mkinitcpio-zen.conf) you'll have to manually add '''fglrx''' to HOOKS array so it can be auto-recompiled with kernel's update.}}
+
<nowiki>Server = http://catalyst.apocalypsus.net/repo/xorg111/$arch</nowiki>
{{Note| If you '''aren't using stock linux''' at all and still wanna use auto recompilation you should remove linux-headers from SyncFirst list of /etc/pacman.conf after running 'catalyst_build_module auto'.}}
+
  
===== catalyst-daemon =====
+
== Tools ==
In '''catalyst-daemon''' 'automatic re-compilation' functionality is done by init script called '''autofglrx''' which runs with every system boot and checks if kernel was updated. If kernel was updated - it's rebuilding fglrx module. If kernel wasn't updated - it's loading previously built fglrx module (this whole operation is taking only 20ms on 2.4 GHz CPU).
+
  
Autofglrx's check function is comparing built time of just booted kernel (provided by `uname -v`) with built time of a kernel for which fglrx module was built.
+
=== Catalyst-hook ===
It's able to do such a comparison because it adds `uname -v` information to the fglrx module's description while module's compilation.
+
[https://aur.archlinux.org/packages.php?ID=40834 Catalyst-hook] is a hook for [[mkinitcpio|mkinitcpio]] that will automatically update fglrx modules with every kernel update. '''This is basically the same as catalyst-dkms from [community].''' Before updating the fglrx modules, it will first try to update the {{Pkg|linux-headers}}.
  
While rebuilding autofglrx will call 'catalyst_build_module' to build a module and 'catalyst_build_module remove' to remove unneeded, older fglrx module.
+
The hook will call the ''catalyst_build_module'' command to update fglrx module for the version of your new kernel. Additionally, it can call the ''catalyst_build_module remove'' command to remove the now old and unneeded flgrx module(s).
  
It doesn't remain in memory.
+
{{Note|If you are using this functionality it's '''important''' to look at the installation process of the linux kernel (or any other kernel) package. Catalyst-hook will tell you is everything all right.}}
  
{{Note|While installation autofglrx is added into beginning of DAEMONS array of /etc/rc.conf file. You may replace it, but be sure to add it before your DM/X, and do NOT add monkey (@) to it because it must NOT be started in background.
+
{{Note|If your '''custom kernel''' is using some '''non-standard mkinitcpio configuration file''' (ie. linux-zen is using /etc/mkinitcpio-zen.conf) you'll have to manually add '''fglrx''' to HOOKS array in your non-standard configuration file so it can be auto-recompiled with a kernel update.}}
}}
+
{{Note|If you are using '''own compilation flags''' and got problems with a daemon - please add those flags into /usr/bin/catalyst_build_module file.
+
}}
+
  
=== Official ATI/AMD Installer ===
+
{{Note|If you '''aren't using the stock linux kernel''' at all and still want to use auto-recompilation, you should remove linux-headers from the {{ic|SyncFirst}} list of {{ic|/etc/pacman.conf}} after running 'catalyst_build_module auto'. If you also have custom linux-headers, you can swap linux-headers in the {{ic|SyncFirst}} line with your custom one, for example linux-lts-headers.}}
{{Warning| Using the installer from ati.com/amd.com is '''NOT''' recommended for inexperienced users! It may cause file conflicts and X failures. You ''must'' be familiar with booting to the command-line if you wish to attempt this.}}
+
{{Note|If you have attempted a manual install from the official installer, and cannot recover your desktop:
+
# /usr/share/ati/fglrx-uninstall.sh}}
+
  
1.) Download the installer from AMD or elsewhere (whereas *-* will be the version): {{ic|ati-driver-installer-*-*-x86.x86_64.run}}
+
=== Catalyst-generator ===
  
2.) Make sure it's executable: {{ic|# chmod +x ati-driver*}}
+
[https://aur.archlinux.org/packages.php?ID=41040 Catalyst-generator] is a package that is able to build and install the fglrx module packed into pacman compliant catalyst-${kernver} packages. The difference from Catalyst-hook is that you will have to trigger this command manually, whereas Catalyst-hook will do this automatically at boot when a new kernel got installed.
  
3.) Ensure you're using a basic video driver like vesa, and remove conflicting drivers (i.e. xf86-video-ati, radeon) with pacman and from /etc/rc.conf
+
It creates catalyst-${kernver} packages using [[makepkg]] and installs them with [[pacman]]. ''${kernver}'' is the kernel version for which each package was built (e.g. catalyst-2.6.35-ARCH package was built for 2.6.35-ARCH kernel).
  
4.) Symlink {{ic|/usr/src/linux}} to {{ic|<nowiki>/usr/src/{kernelsource}</nowiki>}}. 64-bit users also symlink{{ic|/usr/lib64}} to {{ic|/usr/lib}}.
+
To build and install catalyst-${kernver} package for a currently booted kernel as an unprivileged user (non-root; safer way), use {{ic|catalyst_build_module}}. You will be asked for your root password to proceed to package installation.
  
5.) Be sure to have your build environment setup: {{ic|# pacman -Syu base-devel linux-headers}}
+
A short summary on how to use this package:
  
6.) As root: {{ic|# ./ati-driver-installer-*-*-x86.86_64.run}} (Files will extract to a temporary folder and scripts will run...)
+
# As root: {{ic|catalyst_build_module remove}}. This will remove all unused {{ic|catalyst-{kernver} }} packages.
 +
# As unprivileged user: {{ic|catalyst_build_module ${kernver}}}, where ${kernver} is the version of the kernel to which you just updated. For example: {{ic|catalyst_build_module 2.6.36-ARCH}}. You can also build catalyst-${kernver} for all installed kernels by using {{ic|catalyst_build_module all}}.
 +
# If you want to remove {{ic|catalyst-generator}}, it's best to run this as root before removing catalyst-generator: {{ic|catalyst_build_module remove_all}}. '''This will remove all catalyst-{kernver} packages from the system.'''
  
Assuming nothing went horribly wrong...
+
Catalyst-generator isn't able to remove all those catalyst-{kernver} packages automatically while being removed because there can not be more than one instance of pacman running. If you forget to run {{ic|catalyst_build_module remove_all}} before using {{ic|pacman -R catalyst-generator}} catalyst-generator will tell you which catalyst-{kernver} packages you will have to remove manually after removing catalyst-generator itself.
  
7.) Check {{ic|/usr/share/ati/fglrx-install.log}} for issues.  There should also be a {{ic|/lib/modules/fglrx/make.{ker_version}.log}}
+
{{Note|If you see those warnings:
{{Note|If you modify the make scripts, save to a different filename.  Otherwise uninstall will not complete successfully.}}
+
  
8.) Finally, try {{ic|# aticonfig}}  As of Catalyst 11.7, it still assumes {{ic|/etc/X11/xorg.conf}} should exist.
+
'''WARNING:''' Package contains reference to $srcdir
  
{{Note| If you want to adhere to the new xorg.conf.d: Append your {{ic|aticonfig}} string with ''--output'' so that you can adapt the Device section to ''/etc/X11/xorg.conf.d/20-radeon.conf'' The drawback of this is that many {{ic|aticonfig}} options rely on an xorg.conf, and thus will be unavailable.}}
+
'''WARNING:''' '.pkg' is not a valid archive extension.
  
== Configuration ==
+
while building catalyst-{kernver} package, do not be concerned, it's normal.}}
===Before reboot===
+
There are three things to check in Arch before rebooting, otherwise X may fail to load:
+
*[[#Xorg configuration]] via /etc/X11/'''xorg.conf'''
+
*[[#Module loading]] via /etc/'''rc.conf''' or /etc/modules-load.d/'''<module>.conf'''
+
*[[#Disable mode setting]] via /boot/grub/'''menu.lst''' or /etc/default/'''grub'''
+
  
====Xorg configuration====
+
== Features ==
  
AMD provides the {{ic|aticonfig}} tool to create/modify {{ic|xorg.conf}} file.  It also can configure virtually every aspect of the card for it also accesses the {{ic|amdpcsdb}} file. For a complete list of {{ic|aticonfig}} options, run:
+
=== Tear Free Rendering ===
# aticonfig --help | less
+
{{Warning| Use the --output option before committing to /etc/X11 as an xorg.conf file will override anything in /etc/X11/xorg.conf.d}}
+
Simple examples from {{ic|aticonfig}}:
+
{{bc|<nowiki>
+
      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.
+
</nowiki>}}
+
If you do not already have an {{ic|xorg.conf}} file, you can compare the generated file to one of the [[Xorg#Sample_xorg.conf_Files|Sample Xorg.conf]] examples listed on the Xorg page.
+
  
Although most options are now automatically detected in current Xorg, you may want to specify some in case the defaults change between versions.
+
Presented in '''Catalyst 11.1''', the ''Tear Free Desktop'' feature reduces tearing in 2D, 3D and video applications. This likely adds triple-buffering and v-sync. Do note that it requires additional GPU processing.
  
Here is an example(with notes) '''for reference'''. Entries with '#' should be required, add entries with '##' as needed:
+
To enable 'Tear Free Desktop' run {{ic|amdcccle}} and go to: {{ic|Display Options}} {{ic|Tear Free}}.
{{bc|1=
+
Section "ServerLayout"
+
        Identifier    "Arch"
+
        Screen      0  "Screen0" 0 0          # 0's are necessary.
+
EndSection
+
Section "Module"
+
        Load ...
+
        ...
+
EndSection
+
Section "Monitor"
+
        Identifier  "Monitor0"
+
        ...
+
EndSection
+
Section "Device"
+
        Identifier  "Card0"
+
        Driver      "fglrx"                        # Essential.
+
        BusID      "PCI:1:0:0"                    # Recommended if autodetect fails.
+
        Option      "OpenGLOverlay" "0"            ##
+
        Option      "XAANoOffscreenPixmaps" "false" ##
+
        Option      "UseInternalAGPGart"    "no"    ## Deprecated since Catalyst 8.24.18/
+
        Option      "KernelModuleParm"  "agplock=0" ## as AGP GART support was removed
+
EndSection
+
Section "Screen"
+
        Identifier "Screen0"
+
        Device    "Card0"
+
        Monitor    "Monitor0"
+
        DefaultDepth    24
+
        SubSection "Display"
+
                Viewport  0 0
+
                Depth    24                        # Should not change from '24'
+
                Modes "1280x1024" "2048x1536"      ## 1st value=default resolution, 2nd=maximum.
+
                Virtual 1664 1200                  ## (x+64, y) to workaround potential OGL rect. artifacts/
+
        EndSubSection                              ## fixed in Catalyst 9.8
+
EndSection
+
Section "DRI"
+
        Mode 0666                                  # May help enable direct rendering.
+
EndSection
+
}}
+
====Module loading====
+
If you are still using Arch initscripts, edit {{ic|/etc/rc.conf}} by:
+
:*Removing ''radeon'' from the MODULES array
+
:*Adding ''fglrx'' to MODULES appears to be optional if added instead to {{ic|/etc/mkinitcpio.conf}} (boot image would be rebuilt before reboot).
+
  
If you are using [[systemd]]:
+
Or as root run:
:* remove or comment out ''radeon'' if it occurs in any file under {{ic|/etc/modules-load.d/}}
+
:* Either add ''fglrx'' on a new line of an existing module file located under {{ic|/etc/modules-load.d/}}, or create a new file and add ''fglrx''.
+
  
In either case, you may need to blacklist ''radeon'' in {{ic|/etc/modprobe.d/modprobe.conf}} if {{ic|blacklist-fglrx.conf}} does not exist.
+
# aticonfig --set-pcs-u32=DDX,EnableTearFreeDesktop,1
  
{{Note|If you are using an AGP card instead of PCI Express add the ''agp'' module as well}}
+
To disable, again use {{ic|amdcccle}} or run as root:
  
====Disable mode setting====
+
# aticonfig --del-pcs-key=DDX,EnableTearFreeDesktop
Disabling kernel mode setting is important, as the driver doesn't appear to take advantage of [[KMS]] yet. If you do not deactivate KMS, your system might freeze when trying to switch to a tty or even when shutting down via your DE.
+
  
For Grub legacy, edit {{ic|menu.lst}} by adding ''nomodeset'' to the kernel parameters. For example:
+
=== Video acceleration ===
{{bc|1=kernel /boot/vmlinuz-linux root=/dev/sda1 ro '''nomodeset'''}}
+
  
For Grub2, edit {{ic|/etc/default/grub}} and add ''nomodeset'' to the kernel parameter options, e.g.
+
'''[[wikipedia:Video_Acceleration_API|Video Acceleration API]] (VA API)''' is an open source software library (libVA) and API specification which provides GPU acceleration for video processing on Linux/UNIX based operating systems. The process works by enabling hardware accelerated video decode at various entry-points (VLD, IDCT, Motion Compensation, deblocking) for common encoding standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/WMV3).
{{bc|1=
+
GRUB_CMDLINE_LINUX="nomodeset"
+
}}
+
  
Then run, as root;
+
VA-API gained a proprietary backend (in November 2009) called {{AUR|xvba-video}}, that allows VA-API programmed applications to take advantage of AMD Radeons UVD2 chipsets via the [[wikipedia:XvBA|XvBA (X-Video Bitstream Acceleration API designed by AMD)]] library.
  
# grub-mkconfig -o /boot/grub/grub.cfg
+
XvBA support and xvba-video is still under development, however it is '''working very well in most cases'''. Build the {{AUR|xvba-video}} package  from AUR or soon, install it from [community] and install {{Pkg|mplayer-vaapi}} and {{Pkg|libva}}. Then just set your video player to use vaapi:gl as video output:
  
 +
$ mplayer -vo vaapi:gl movie.avi
  
Reboot!
+
These options can be added to your mplayer configuration file, see [[MPlayer]].
  
===Checking operation===
+
For '''smplayer''':
Assuming reboot to your login was successful, otherwise [[#Troubleshooting]].
+
Commands to check that fglrx is up and running:
+
{{bc|<nowiki>
+
lsmod | grep fglrx
+
fglrxinfo 
+
</nowiki>}}
+
  
Finally, run Xorg with {{ic|startx}} or by using GDM/KDM and verify that direct rendering is enabled by running the following command in a terminal:
+
Options → Preferences → General → Video (tab) → Output driver: User Defined : vaapi:gl
  $ glxinfo | grep direct
+
  Options → Preferences → General → Video (tab) → Double buffering '''on'''
 +
Options → Preferences → General → General → Screenshots → Turn screenshots '''off'''
 +
Options → Preferences → Performance → Threads for decoding: '''1''' (to turn off -lavdopts parameter)
  
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-demos package as well.
+
{{Note|If Tear Free Desktop is enabled it's better to use:
 +
Options -> Preferences -> General -> Video (tab) -> Output driver: vaapi
 +
If Video Output '''vaapi:gl''' isn't working - please check:
 +
'''vaapi''', '''vaapi:gl2''' or simply '''xv(0 - AMD Radeon [[wikipedia:Avivo|AVIVO Video]])'''.
 +
}}
  
{{Warning| In recent versions of Xorg, the paths of libs are changed. So, sometimes {{ic|libGL.so}} cannot be correctly loaded even if it's installed. Check this if your GL is not working. Please read "Troubleshooting" section for details.}}
+
For '''VLC''':
  
=== Double Screen (Dual Head / Dual Screen / Xinerama) ===
+
Tools → Preferences → Input & Codecs → Use GPU accelerated decoding
  
==== Introduction ====
+
It might help to enable v-sync in '''amdcccle''':
  
{{Box RED| First of all:| you have to know, it does not exist one single solution because each needs and configurations are different. That's why you have to adapt the step below to your own needs. It is possible that you have to try more than once. '''Therefore, you MUST save your working /etc/X11/xorg.conf BEFORE you start any change and you must be able to recover from tty.'''}}
+
3D → More Settings → Wait for vertical refresh = Always On
  
* In this part, we will describe the installation of 2 differend sized screens on only one graphic cad with 2 different output ports (DVI + HDMI) using a "BIG Desktop" configuration.
+
{{Note|If you are using '''Compiz/KWin''', the only way to '''avoid video flickering''' is to watch videos in '''full-screen''' and only when '''Unredirect Fullscreen is off'''.
  
* The Xinerama solution has some inconveniences, especially because it is not compatible with XrandR. For that very reason, you should not use this solution, because XrandR is just a must for our later configuration.
+
In '''compiz''' you need to set '''Redirected Direct Rendering''' in General Options of ccsm. If it is still flickering, try to disable this option in CCSM. It's off by default in '''KWin''', but if you see flickering try to turn "Suspend desktop effects for fullscreen windows" on or off in System Settings → Desktop Effects → Advanced.}}
  
* The Dual Head solution would allow you to have 2 different sessions (one for each screen). It could be your wish but you will not be able to move windows from one screen to another. If you have only one screen, you will have to define the mouse inside your xorg for the 2 sessions inside the  Server Layout section.
+
=== GPU/Mem frequency, Temperature, Fan speed, Overclocking utilities ===
  
[http://support.amd.com/us/kbarticles/Pages/1105-HowCanIConfigureMultip.aspx ATI Documentation]
+
You can get the GPU/Mem clocks with: {{ic|$ aticonfig --od-getclocks}}.
  
==== ATI Catalyst Control Center ====
+
You can get the fan speed with: {{ic|$ aticonfig --pplib-cmd "get fanspeed 0"}}
  
The GUI tool shiped by ATI is very useful and we will try to use it as much as we can. To launch it, open a terminal and use the following command line:
+
You can get the temperature with: {{ic|$ aticonfig --odgt}}
  
amdcccle
+
To set the fanspeed with: {{ic|$ aticonfig --pplib-cmd "set fanspeed 0 50"}} Query Index: 50, Speed in percent
  
{{Note|Of course, you have to adapt if you are using GNOME or any other DM.}}
+
To overclock and/or underclock it's easier to use a GUI, like '''ATi Overclocking Utility''', which is very simple and requires qt to work.
{{Warning|Do NOT use sudo directly with a gui. Sudo gives you admin rights with user account information. Kdesu gives you admin rights with root privileges & variables.}}
+
  
==== Installation ====
+
The i686 version is available [http://kde-apps.org/content/show.php/ATI+Overclocking+Utility+X32?content=107458 here], while the x86_64 is available [http://kde-apps.org/content/show.php/ATI+Overclocking+Utility+X64?content=107457 here]. Just download it and run.
  
Here, it is easy but important : make sure that your hardware is plugged in correctly, power is on, and that you know your hardware caracteristics (screen dimensions, sizes, refresment rates ...) Normally, both screens are recognize during boot time but not necessarly identified properly, especially if you are not using any xorg base configuration file but instead relying on the hot-plugging feature.
+
An other, more complex utility to perform such operations is '''AMDOverdriveCtrl'''. Its homepage is [http://sourceforge.net/projects/amdovdrvctrl here] and you can build an Arch package from [https://aur.archlinux.org/packages.php?ID=45298 AUR] or from Vi0L0's unofficial repositories.
  
The first step is to make sure they will be recognized by your DE / xorg. For this, you need to generate a basic xorg file for your 2 screens :
+
=== Double Screen (Dual Head / Dual Screen / Xinerama) ===
  
aticonfig --initial --desktop-setup=horizontal --overlay-on=1
+
==== Introduction ====
or
+
aticonfig --initial=dual-head --screen-layout=left
+
{{Note|overlay is important because it allows you to have 1 pixel (or more) shared between the 2 screens.}}
+
{{Tip|For the different possible & available options, do not hesitate to type aticonfig inside a terminal to display all available command lines.}}
+
  
Normally, you have now a basic file that you can now edit to add your screen resolutions. It is important to precise the working resolution especially if you have screens of different sizes. To be added insithe the "Screen" section:
+
{{Warning| you should know that there isn't one specific solution because each setup differs and needs its own configuration. That's why you will have to adapt the steps below to your own needs. It is possible that you have to try more than once. '''Therefore, you should save your working {{ic|/etc/X11/xorg.conf}} before you start modifying and you must be able to recover from a command-line environment.'''}}
  
SubSection "Display"
+
* In this chapter, we will describe the installation of two different-sized screens on only one graphics card with two different output ports (DVI + HDMI) using a "BIG Desktop" configuration.
Depth 24
+
Modes "1200x800"
+
EndSubSection
+
  
Well, from now on, instead of editing the xorg.conf file manually, let us use the ATI gui tool. Reboot X to be sure that your 2 screens are well supported and that the resolution are well recognized. (Screens must be independant).
+
* The Xinerama solution has some inconveniences, especially because it is not compatible with XrandR. For that very reason, you should not use this solution, because XrandR is a must for our later configuration.
  
==== Configuration ====
+
* The Dual Head solution would allow you to have 2 different sessions (one for each screen). It could be what you want, but you will not be able to move windows from one screen to another. If you have only one screen, you will have to define the mouse inside your Xorg session for each of the two sessions inside the Server Layout section.
  
Here, you only have to launch the ATI control center with root privileges, go inside the display menu and choose how you would like to set your configuration (small arrow of the drop down menu). A last reboot of X and you will be done !
+
[http://support.amd.com/us/kbarticles/Pages/1105-HowCanIConfigureMultip.aspx ATI Documentation]
  
Before you reboot, do not hesitate to verify your new xorg.conf file. At this stage, inside the "Display" sub-section of the "Screen" section, you should see a "Virtual" command line, of which the resolution should be the sum of both screens. The "Server Layout" section says all the rest.
+
==== ATI Catalyst Control Center ====
  
== Features ==
+
The GUI tool shipped by ATI is very useful and we will try to use it as much as we can. To launch it, open a terminal and use the following command:
=== Video acceleration ===
+
  
'''[http://en.wikipedia.org/wiki/Video_Acceleration_API Video Acceleration API] (VA API)''' is an open source software library (libVA) and API specification which provides GPU acceleration for video processing on Linux/UNIX based operating systems. The process works by enabling hardware accelerated video decode at various entry-points (VLD, IDCT, Motion Compensation, deblocking) for common encoding standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/WMV3).
+
  $ {kdesu/gksu} amdcccle
  
VA-API gained a proprietary backend (in November 2009) {{AUR|xvba-video}}, that allows VA-API programmed applications to take advantage of AMD Radeons UVD2 chipsets via the [http://en.wikipedia.org/wiki/XvBA XvBA (X-Video Bitstream Acceleration API designed by AMD)] library.
+
{{Warning|Do '''not''' use sudo directly with a GUI. Sudo gives you admin rights with user account information. Instead, use ''gksu'' (GNOME) or ''kdesu'' (KDE).}}
  
XvBA support and xvba-video is still under development, however iit is '''working very well in most cases'''.  Build the {{AUR|xvba-video}} packge and install {{Pkg|mplayer-vaapi}} and {{Pkg|libva}}.  Then just set your video player to use vaapi:gl as video output:
+
==== Installation ====
  
$ mplayer -vo vaapi:gl movie.avi
+
Before we start, make sure that your hardware is plugged in correctly, that power is on and that you know your hardware characteristics (screen dimensions, sizes, refreshment rates, etc.) Normally, both screens are recognized during boot time but not necessarily identified properly, especially if you are not using any Xorg base configuration file ({{ic|/etc/X11/xorg.conf}}) but relying on the hot-plugging feature.
  
For '''smplayer''':
+
The first step is to make sure that you screens will be recognized by your DE and by X. For this, you need to generate a basic Xorg configuration file for your two screens:
  
  Options -> Preferences -> General -> Video (tab) -> Output driver: User Defined : vaapi:gl
+
  # aticonfig --initial --desktop-setup=horizontal --overlay-on=1
Options -> Preferences -> General -> Video (tab) -> Double buffering '''on'''
+
Options -> Preferences -> Advanced -> Options for MPlayer -> Options: -vo vaapi
+
Options -> Preferences -> General -> General -> Screenshots -> Turn screenshots '''off'''
+
Options -> Preferences -> Performance -> Threads for decoding (Set your CPU(s) '''number''')
+
  
{{Note| If Tear Free Desktop is enabled it's better to use
+
or
Options -> Preferences -> General -> Video (tab) -> Output driver: vaapi
+
If Video Output '''vaapi:gl''' isn't working - please check
+
'''vaapi''', '''vaapi:gl2''' or simply '''xv(0 - AMD Radeon [https://en.wikipedia.org/wiki/Avivo AVIVO Video])'''.
+
}}
+
  
For '''vlc''':
+
# aticonfig --initial=dual-head --screen-layout=left
  
Tools -> Preferences -> Input & Codecs -> Use GPU acceleration
+
{{Note|{{ic|overlay}} is important because it allows you to have 1 pixel (or more) shared between the 2 screens.}}
 +
{{Tip|For the other possible and available options, do not hesitate to type {{ic|aticonfig --help}} inside a terminal to display all available command lines.}}
  
Might help to enable v-sync in '''amdcccle''':
+
Now you should have a basic Xorg configuration file that you can edit to add your screen resolutions. It is important to use the precise resolution, especially if you have screens of different sizes. These resolutions have to be added in the "Screen" section:
  
  3D -> More Settings -> Wait for vertical refresh = Always On
+
  SubSection "Display"
 +
Depth 24
 +
Modes "X-resolution screen 1xY-resolution screen 1" "Xresolution screen 2xY-resolution screen 2"
 +
EndSubSection
  
{{Note|If you are using '''compiz/kwin''', the only way to '''avoid video flickering''' is to watch videos in '''full-screen''', and only when '''Unredirect Fullscreen is off'''.
+
From now on, instead of editing the {{ic|xorg.conf}} file manually, let us use the ATI GUI tool. Restart X to be sure that your two screens are properly supported and that the resolutions are properly recognized (Screens must be independent, not mirrored).
In '''compiz''' you need to set '''Redirected Direct Rendering''' in General Options of ccsm.
+
If its still flickering try to disable this option in ccsm.
+
Its off by default in '''kwin''', but if you see flickering try to turn option "Suspend desktop effects for fullscreen windows" on or off in System Settings -> Desktop Effects -> Advanced.}}
+
  
=== Tear Free Rendering ===
+
==== Configuration ====
Presented in '''Catalyst 11.1''' 'Tear Free Desktop' feature reduces tearing in 2D, 3D and video applications. This likely adds triple-buffering and v-sync.
+
Please note that it requires additional GPU processing.
+
  
To enable 'Tear Free Desktop' run {{ic|amdcccle}} and go to: [Display Options] -> [Tear Free]
+
Now you will only have to launch the ATI control center with root privileges, go to the display menu and choose how you would like to set your configuration (small arrow of the drop down menu). A last restart of X and you should be done!
  
or as root run:
+
Before you restart X, do not hesitate to verify your new {{ic|xorg.conf}} file. At this stage, inside the "Display" sub-section of the "Screen" section, you should see a "Virtual" command line, of which the resolution should be the sum of both screens. The "Server Layout" section says all the rest.
  aticonfig --set-pcs-u32=DDX,EnableTearFreeDesktop,1
+
To disable use amdcccle or as root run:
+
  aticonfig --del-pcs-key=DDX,EnableTearFreeDesktop
+
  
=== GPU/Mem frequency, Temperature, Fan speed, Overclocking utilities ===
+
== Troubleshooting ==
You can get GPU/Mem clocks with: {{ic|$ aticonfig --od-getclocks}}
+
  
Fan speed:{{ic|$ aticonfig --pplib-cmd "get fanspeed 0"}}
+
If you can still boot to command-line, then the problem probably lies in {{ic|/etc/X11/xorg.conf}}
  
Temperature:{{ic|$ aticonfig --odgt}}
+
You can parse the whole {{ic|/var/log/Xorg.0.log}} or, for clues:
  
To overclock/underclock it's easier to use some GUI software, like '''ATi Overclocking Utility''', which is very simple and requires qt to work.
+
$ grep '(EE)' /var/log/Xorg.0.log
 +
$ grep '(WW)' /var/log/Xorg.0.log
  
i686 version is available [http://kde-apps.org/content/show.php/ATI+Overclocking+Utility+X32?content=107458 here] while x86_64 - [http://kde-apps.org/content/show.php/ATI+Overclocking+Utility+X64?content=107457 here]. Just download it and run.
+
If you are at lost of what to do, you can always post a message in the see [https://bbs.archlinux.org/viewtopic.php?pid=1166052#p1166052/ support thread on the forums]. When you do so, please do provide the information you get from both commands mentioned above.
  
Other, more complex utility to perform such operations is '''AMDOverdriveCtrl'''. It's homepage is [http://sourceforge.net/projects/amdovdrvctrl here], you can get arch package from [https://aur.archlinux.org/packages.php?ID=45298 AUR] or from [catalyst] repository.
+
=== 3D Wine applications freeze ===
 +
If you use a 3D Wine application and it hangs, you have to disable TLS. To do this, either use {{ic|aticonfig}} or edit {{ic|/etc/X11/xorg.conf}}. To use {{ic|aticonfig}}:
  
==Troubleshooting==
+
# aticonfig --tls=off
If you can still boot to command-line, then the problem probably lies in {{ic|xorg.conf}}
+
 
 +
Or, to edit {{ic|/etc/X11/xorg.conf}}; first open the file in an editor as root and then add {{ic|Option "UseFastTLS" "off"}} to the ''Device'' section of this file.
 +
 
 +
After applying either of the solutions, restart X for it to take effect.
  
You can parse the whole {{ic|/var/log/Xorg.0.log}} or
 
{{bc|
 
grep '(EE)' /var/log/Xorg.0.log
 
grep '(WW)' /var/log/Xorg.0.log
 
}}
 
For clues.
 
 
=== Problems with video colours ===
 
=== Problems with video colours ===
You may still use vaapi:gl to avoid video flickering, but without video acceleration
 
  
Run '''mplayer''' without '''-vo vaapi''' switch.
+
You may still use {{ic|vaapi:gl}} to avoid video flickering, but without video acceleration:
  
For '''smplayer''' remove '''-vo vaapi''' from Options -> Preferences -> Advanced -> Options for MPlayer -> Options: -vo vaapi
+
* Run '''mplayer''' without {{ic|-vo vaapi}} switch.
 +
 
 +
* Run '''smplayer''' remove {{ic|-vo vaapi}} from Options Preferences Advanced Options for MPlayer Options: -vo vaapi
  
 
Plus for '''smplayer''' you may now safely turn screenshots on.
 
Plus for '''smplayer''' you may now safely turn screenshots on.
  
===KWin and composite===
+
=== KWin and composite ===
 +
 
 
You may use XRender if the rendering with OpenGL is slow. However, XRender might also be slower than OpenGL depending on your card.
 
You may use XRender if the rendering with OpenGL is slow. However, XRender might also be slower than OpenGL depending on your card.
XRender also solves artifact issues in some cases.
+
XRender also solves artefact issues in some cases, for instance when resizing Konsole.
  
===Black screen with complete lockups / hangs after reboot or startx===
+
=== Black screen with complete lockups and/or hangs after reboot or startx ===
  
Ensure you have added the '''nomodeset''' option to the kernel options line in your bootloader (see end of [[#Configuration]]).
+
Ensure you have added the '''nomodeset''' option to the kernel options line in your bootloader (see [[#Disable kernel mode setting]]).
  
 
==== Faulty ACPI hardware calls ====
 
==== 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.  
+
It is possible that fglrx doesn't cooperate well with the system's ACPI hardware calls, so it auto-disables itself and there is no screen output.
  
So try to run this:
+
If so, try to run this:
  aticonfig --acpi-services=off
+
 
 +
$ aticonfig --acpi-services=off
 +
 
 +
=== KDM disappears after logout ===
  
===KDM disappears after logout===
 
 
If you are running 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:
 
If you are running 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
 
  $ sudo nano /usr/share/config/kdm/kdmrc
  
Uncomment the following line under the section titled [X-:*-Core]:
+
Uncomment the following line under the section titled {{ic|[X-:*-Core]}}:
 +
 
 
  TerminateServer=True
 
  TerminateServer=True
  
 
KDM should now appear when you log out of KDE.
 
KDM should now appear when you log out of KDE.
  
===Direct Rendering does not work===
+
=== Direct Rendering does not work ===
This problem may occur when using the proprietary '''catalyst''' driver.  
+
 
 +
This problem may occur when using the proprietary '''Catalyst''' driver.
  
 
{{Warning|This error would also appear if you have not '''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.}}
 
{{Warning|This error would also appear if you have not '''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:
 
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 do not have direct rendering.
 
  
Common errors, and their solutions, are:
+
$ LIBGL_DEBUG=verbose glxinfo > /dev/null
    '''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 {{ic|hwdetect --show-agp}}, then ensure that all modules listed from that command are in the {{ic|1=MODULES=}} array in rc.conf, '''before''' fglrx.
+
at the command prompt. At the very start of the output, it'll usually give you a nice error message saying why you do not have direct rendering.
    '''libGL error: failed to open DRM: Operation not permitted'''
+
    '''libGL error: reverting to (slow) indirect rendering'''
+
  
    '''libGL: OpenDriver: trying /usr/lib/xorg/modules/dri//fglrx_dri.so'''
+
Common errors and their solutions, are:
    '''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 has not been installed correctly. If the paths in the error message are {{ic|/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 {{ic|source /etc/profile}} into {{ic|~/.xsession}} or {{ic|~/.xinitrc}}, but may vary between login managers.
+
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 {{ic|hwdetect --show-agp}}, then ensure that all modules listed from that command are in the {{ic|1=MODULES=}} array in rc.conf, '''before''' fglrx if using SysVinit, otherwise open your {{ic|fglrx.conf}} file in {{ic|/etc/modules-load.d}} and add the agp module on a line '''before''' the fglrx line.
 +
 
 +
libGL error: failed to open DRM: Operation not permitted
 +
libGL error: reverting to (slow) indirect rendering
 +
 
 +
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 has not been installed correctly. If the paths in the error message are {{ic|/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 {{ic|/etc/profile}} is sourced every time you log in. This is usually accomplished by adding {{ic|source /etc/profile}} into {{ic|~/.xsession}} or {{ic|~/.xinitrc}}, but this may vary between login managers.
  
 
* If the paths above in your error message ''are'' {{ic|/usr/lib/xorg/modules/dri/fglrx_dri.so}}, then something has not been correctly installed. Try reinstalling the {{ic|catalyst}} package.
 
* If the paths above in your error message ''are'' {{ic|/usr/lib/xorg/modules/dri/fglrx_dri.so}}, then something has not been correctly installed. Try reinstalling the {{ic|catalyst}} package.
   
+
 
 
Errors such as:
 
Errors such as:
    '''fglrx: libGL version undetermined - OpenGL module is using glapi fallback'''
+
 
 +
fglrx: libGL version undetermined - OpenGL module is using glapi fallback
 +
 
 
could be caused by having multiple versions of {{ic|libGL.so}} on your system. Run:
 
could be caused by having multiple versions of {{ic|libGL.so}} on your system. Run:
    $ sudo updatedb
+
 
    $ locate libGL.so
+
$ sudo updatedb
 +
$ locate libGL.so
  
 
This should return the following output:
 
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 (e.g. {{ic|/usr/X11R6/lib/libGL.so.1.2}}), then remove them. This should fix your problem.  
+
$ 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 (e.g. {{ic|/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:
 
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:
    /usr/X11R6/lib/libGL.so.1.2
 
    /usr/X11R6/lib/libGL.so.1
 
  
===Hibernate/Sleep Issues===
+
/usr/X11R6/lib/libGL.so.1.2
 +
/usr/X11R6/lib/libGL.so.1
 +
 
 +
=== Hibernate/Sleep Issues ===
 +
 
 +
==== 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 for example, Grub Legacy's {{ic|/boot/grub/menu.lst}}:
  
====Video fails to resume from suspend2ram====
 
ATI's proprietary {{ic|catalyst}} driver cannot resume from suspend if the framebuffer is enabled.  To disable the framebuffer, add '''vga=0''' to your kernel options in {{ic|/boot/grub/menu.lst}}, for example:
 
 
  kernel /vmlinuz-linux root=/dev/sda3 resume=/dev/sda2 ro quiet '''vga=0'''
 
  kernel /vmlinuz-linux root=/dev/sda3 resume=/dev/sda2 ro quiet '''vga=0'''
  
===System Freezes/Hard locks===
+
To see where you need to add this with other bootloaders, see [[#Disable kernel mode setting]].
* The {{ic|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.
+
 
* If you experience system freezes when exiting your DE (shut down, suspend, switching to tty etc.) you probably forgot to deactivate KMS. (See [[Catalyst#Configuration|above]])
+
=== System Freezes/Hard locks ===
 +
 
 +
* The {{ic|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.
 +
 
 +
* If you experience system freezes when exiting your DE (shut down, suspend, switching to tty etc.) you probably forgot to deactivate KMS. (See [[#Disable kernel mode setting]])
 +
 
 +
=== Hardware Conflicts ===
  
===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:
 
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)
+
$ dmesg | grep agp
 +
 
 +
If you get something similar to this (using an nForce3-based system):
 +
 
 
     agpgart: Detected AGP bridge 0
 
     agpgart: Detected AGP bridge 0
 
     agpgart: Setting up Nforce3 AGP.
 
     agpgart: Setting up Nforce3 AGP.
Line 696: Line 657:
  
 
and also if issuing this command...
 
and also if issuing this command...
      tail -n 100 /var/log/Xorg.0.log | grep agp
+
 
 +
$ tail -n 100 /var/log/Xorg.0.log | grep agp
  
 
...gets something similar to:
 
...gets something similar to:
      (EE) fglrx(0): [agp] unable to acquire AGP, error "xf86_ENODEV"
+
 
 +
(EE) fglrx(0): [agp] unable to acquire AGP, error "xf86_ENODEV"
  
 
Then you have this bug.
 
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.
+
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 http://bugzilla.kernel.org/show_bug.cgi?id=6350 for more information and a potential fix.
+
See [http://bugzilla.kernel.org/show_bug.cgi?id=6350/ this bugreport] for more information and a potential fix.
 +
 
 +
=== Temporary hangs when playing video ===
  
===Temporary hangs when playing video===
 
 
This problem may occur when using the proprietary Catalyst.
 
This problem may occur when using the proprietary Catalyst.
  
 
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:
 
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 [<c01c64a6>] ? proc_get_sb+0xc6/0x160
 
  Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160
Line 722: Line 687:
 
  Nov 28 18:31:56 pandemonium =======================
 
  Nov 28 18:31:56 pandemonium =======================
  
Adding the nopat kerneloption to /boot/grub/menu.lst and rebooting fixed the problem at least for me.
+
Adding the nopat kernel option to your kernel options in your bootloader and rebooting fixed the problem at least for me. To see how to do this for different bootloaders, see [[#Disable kernel mode setting]].
  
===Catalyst 10.6/10.7/10.8/10.9 : black/grey/white boxes/artifacts in firefox/thunderbird===
+
=== "aticonfig: No supported adapters detected" ===
With catalyst 10.6 AMD/ATi announced a new method of 2D acceleration for radeons, unfortunately this step causes bugs for some users. To turn on old (slower xaa) method of 2d rendering please kill your desktop environment and Xserver and type this command as root:
+
aticonfig --set-pcs-str=DDX,ForceXAA,TRUE
+
Now you'll probably need patched xorg-server to fix problems with resizing/maximizing windows, read about it ie. [http://wiki.archlinux.org/index.php/ATI_Catalyst#Black.2Fgrey.2Fwhite_boxes.2Fartifacts_mainly_in_firefox.2Fthunderbird here].
+
  
Also see [https://bbs.archlinux.org/viewtopic.php?pid=1008216#p1008216 this post] if the above doesn't work for you.
 
 
==="aticonfig: No supported adaptaters detected"  ===
 
 
If when running
 
If when running
  #sudo aticonfig --initial
+
 
you get
+
  # aticonfig --initial
 +
 
 +
you get:
 +
 
 
  aticonfig: No supported adaptaters detected
 
  aticonfig: No supported adaptaters detected
But you do have an AMD GPU (or APU), it may still be possible to get
 
catalyst working by manually setting the device in your your xorg.conf
 
file.
 
  
You can do so by setting the device setion of ''/etc/X11/xorg.conf''
+
But you do have an AMD GPU (or APU), it may still be possible to get Catalyst working by manually setting the device in your your {{ic|etc/X11/xorg.conf}} file.
to  
+
 
 +
You can do so by setting the device section of {{ic|/etc/X11/xorg.conf}} to:
 +
 
 
  Section "Device"
 
  Section "Device"
   Identifier "ATI radeon ****"
+
   Identifier "ATI radeon '''****'''"
 
   Driver "fglrx"
 
   Driver "fglrx"
 
  EndSection
 
  EndSection
Where ''****'' should be replaced with your device's marketing
 
number(e.g. 6870 for the HD 6870 and 6310 for the E-350 APU)
 
  
Xorg will start and it is possible to use amdcccle instead of  
+
Where ''****'' should be replaced with your device's marketing number (e.g. 6870 for the HD 6870 and 6310 for the E-350 APU).
aticonfig. There will be a "AMD Unsupported hardware" watermark.
+
 
 +
Xorg will start and it is possible to use {{ic|amdcccle}} instead of {{ic|aticonfig}}. There will be an "AMD Unsupported hardware" watermark.
 +
 
 +
You can remove this watermark using the following script:
  
You can remove this watermark using the following script :
 
 
  #!/bin/sh
 
  #!/bin/sh
 
  DRIVER=/usr/lib/xorg/modules/drivers/fglrx_drv.so
 
  DRIVER=/usr/lib/xorg/modules/drivers/fglrx_drv.so
Line 758: Line 719:
 
   sed -i "s/$x/\x90\x90\x90\x90\x90/g" $DRIVER
 
   sed -i "s/$x/\x90\x90\x90\x90\x90/g" $DRIVER
 
  done
 
  done
 +
 
and rebooting.
 
and rebooting.
  
===WebGL support in Chromium===
+
=== WebGL support in Chromium ===
Google has blacklisted linux's catalyst driver from supporting webGL in their Chromium/Chrome browsers.
+
 
 +
Google has blacklisted Linux's Catalyst driver from supporting webGL in their Chromium/Chrome browsers.
 +
 
 +
You can turn webGL on by editing {{ic|/usr/share/applications/chromium.desktop}} file and adding {{ic|--ignore-gpu-blacklist}} flag into the '''Exec''' line so it looks like this:
  
You can turn webGL on by editing /usr/share/applications/chromium.desktop file and adding '''--ignore-gpu-blacklist''' flag into '''Exec''' line so it could look like this:
 
 
  Exec=chromium %U --ignore-gpu-blacklist
 
  Exec=chromium %U --ignore-gpu-blacklist
You can also run chromium from console with that --ignore-gpu-blacklist flag:
+
 
 +
You can also run chromium from console with the same {{ic|--ignore-gpu-blacklist}} flag:
 +
 
 
  $ chromium --ignore-gpu-blacklist
 
  $ chromium --ignore-gpu-blacklist
  
{{Warning| Catalyst does not support the GL_ARB_robustness extension, so it is possible that a malicious site could use WebGL to perform a DoS attack on your graphic card, more info: http://www.h-online.com/security/news/item/WebGL-as-a-security-problem-1240567.html}}
+
{{Warning|Catalyst does not support the GL_ARB_robustness extension, so it is possible that a malicious site could use WebGL to perform a DoS attack on your graphic card. For more info, read [http://www.h-online.com/security/news/item/WebGL-as-a-security-problem-1240567.html/ this].}}
  
 +
=== Laggs/freezes when watching flash videos via Adobe's flashplugin ===
  
===Laggs/freezes when watching flash videos via Adobe's flashplugin===
+
Edit {{ic|/etc/adobe/mms.cfg}} and make it look like this:
Edit /etc/adobe/mms.cfg file and make it looks like this:
+
{{bc|1=
+
#EnableLinuxHWVideoDecode=1
+
OverrideGPUValidation=true
+
}}
+
  
 +
#EnableLinuxHWVideoDecode=1
 +
OverrideGPUValidation=true
 +
 +
=== Laggs/slow windows movement in GNOME3 ===
  
===Laggs/slow windows movement in GNOME3===
 
 
You can try this solution out, it's working for many people.
 
You can try this solution out, it's working for many people.
  
Add this line:
+
Add this line into {{ic|~/.profile}} or into {{ic|/etc/profile}}:
{{bc|1=
+
export CLUTTER_VBLANK=none
+
}}
+
into ~/.profile or into /etc/profile file.
+
Restart X server or reboot system.
+
  
===Not using fullscreen in the 1920x1080 resolution===
+
export CLUTTER_VBLANK=none
The ATI has scaling by default add this to your xorg.conf
+
  
{{bc|1=
+
Restart X server or reboot your system.
Option      "DPMS" "true"
+
}}
+
  
On the Monitor section, as full example would look like this
+
=== Not using fullscreen resolution at 1920x1080 (underscanning) ===
{{bc|1=
+
 
Section "Monitor"
+
Using the amdcccle gui you can select the display, go to adjustments, and set Underscan to 0% (aticonfig defaults to 15% underscan).
        Identifier  "0-DFP5"
+
 
        Option      "VendorName" "ATI Proprietary Driver"
+
Alternatively, you can edit your xorg.conf by adding this line to remove the default underscanning on a per screen basis:
        Option      "ModelName" "Generic Autodetecting Monitor"
+
 
        Option      "DPMS" "true"
+
Option      "DPMS" "true"
        Option      "PreferredMode" "1920x1080"
+
 
        Option      "TargetRefresh" "60"
+
On the Monitor section, a full example would look like this
        Option      "Position" "0 0"
+
 
        Option      "Rotate" "normal"
+
Section "Monitor"
        Option      "Disable" "false"
+
        Identifier  "0-DFP5"
EndSection
+
        Option      "VendorName" "ATI Proprietary Driver"
}}
+
        Option      "ModelName" "Generic Autodetecting Monitor"
 +
        Option      "DPMS" "true"
 +
        Option      "PreferredMode" "1920x1080"
 +
        Option      "TargetRefresh" "60"
 +
        Option      "Position" "0 0"
 +
        Option      "Rotate" "normal"
 +
        Option      "Disable" "false"
 +
EndSection

Revision as of 23:09, 24 December 2012

Summary help replacing me
An overview of AMD's proprietary Linux "Catalyst" video card driver.
Related
ATI
Xorg
Resources
cchtml.com - Unofficial Wiki for the ATI Linux Driver
Unofficial ATI Linux Driver Bugzilla

Owners of ATI/AMD video cards have a choice between AMD's proprietary driver (catalystAUR) and the open source driver (xf86-video-ati). This article covers the proprietary driver.

AMD's Linux driver package catalyst was previously named fglrx (FireGL and Radeon X). Only the package name has changed, while the kernel module retains its original fglrx.ko filename. Therefore, any mention of fglrx below is specifically in reference to the kernel module, not the package.

As of October 2012, binary packages are being offered. Currently, packages are available in the [community] repository, but it's unknown what will happen when an Xorg upgrade will break the driver. In the past, Catalyst has been dropped from official Arch support because of dissatisfaction with the quality and speed of development. Also, a legacy driver for Radeon HD 2xxx 3xxx 4xxx is not available in [community] yet. For more information, see this this forum post and onwards.

Compared to the open source driver, Catalyst performs worse in 2D graphics, but has a better support for 3D rendering. Supported devices are ATI/AMD Radeon video cards with chipset R600 and newer (as of Catalyst 9.4). See this table, or the Xorg "Decoder ring", to translate model names (X1900, HD4850) to/from chip names (R580, RV770 respectively).

Installation

There are four ways of installing Catalyst on your system. One way is to use the official [community] repository, but this does not contain all the packages just yet. (At this time of writing, October 2012, there's no xvba-video and lib32 driver yet. Also, a legacy driver is still missing). Another one is to use Vi0L0's (Arch's unofficial Catalyst maintainer) repository. This repository does contain all the necessary packages. The third method you can use is the AUR; PKGBUILDs offered here are also made by Vi0L0 and are the same he uses to built packages for his repository. Lastly, you can install the driver directly from AMD.

Before choosing the method you prefer, you will have to see which driver you need. Since Catalyst 12.4, AMD has separated its development for Radeon HD 5xxx and Radeon HD 2xxx, 3xxx and 4xxx cards. For Radeon HD 2xxx, 3xxx and 4xxx cards, there's the legacy Catalyst driver, for Radeon HD 5xxx there is the regular Catalyst. Regardless of the driver you need, you will also need the Catalyst utilities.

Note: After the instructions for every method of installing, you will find general instructions everyone has to perform, regardless of the method you used.

Installing the driver

Installing from the official repository

This is the most simple and straightforward way, as it requires no unofficial repositories and because this package uses DKMS to automatically rebuilt the kernel modules when the kernel is upgraded. If this repository holds the packages you need, I suggest you take this one.

To install Catalyst, you can use pacman:

# pacman -S catalyst-dkms catalyst-utils
Note: Don't forget to install linux-headers for DKMS to function properly.
Note: If pacman asks you about removing libgl - you may safely say "Y"
Note: If you are using systemd, you should enable the DKMS service. SysV init users do not have to do this. For more information on enabling service files, see systemd.

If you are on 64 bit and also need 32 bit OpenGL support, install lib32-catalyst-utils. Note that you will have to enable the [multilib] repository first.

# pacman -S lib32-catalyst-utils

Later on, a legacy driver will also be offered here.

Installing from the unofficial repository

If you need packages that currently aren't hosted by the official repository and don't fancy building the packages from the AUR, this is the way to go. The repository is maintained by our unofficial Catalyst maintainer, Vi0L0. All packages are signed and I consider them safe to use. As you will see later on in this article, Vi0L0 is also responsible for many other packages that will help you get your system working with your ATI graphic cards.

Vi0L0 has two different Catalyst repositories, each having different drivers:

  • [catalyst]; for the regular Catalyst driver needed by Radeon HD 5xxx and up.
  • [catalyst-hd234k]; for the legacy Catalyst driver needed by Radeon HD 2xxx, 3xxx and 4xxx cards.
Warning: The Legacy driver does not support Xorg 1.13 for now. Support should be added by AMD in a century or two, but this could be sooner. Should you want to use this driver, see #Xorg repositories for instructions on how to roll back to or hold back Xorg 1.12.

To enable one of these, you will have to edit /etc/pacman.conf and add the repository of choice's information above all other repositories in /etc/pacman.conf:

# nano /etc/pacman.conf

For [catalyst], it's this:

[catalyst]
Server = http://catalyst.apocalypsus.net/repo/catalyst/$arch

For [catalyst-hd234k], you have to add the following:

[catalyst-hd234k]
Server = http://catalyst.apocalypsus.net/repo/catalyst-hd234k/$arch

You must also add Vi0L0's GPG key so that pacman trusts the repositories.

# pacman-key --keyserver pgp.mit.edu --recv-keys 0xabed422d653c3094
# pacman-key --lsign-key 0xabed422d653c3094

Once you have added this, update pacman's database and install the packages:

# pacman -Syu
# pacman -S catalyst catalyst-utils
Note: If pacman asks you about removing libgl - you may safely say "Y"

If you are on 64 bit and need 32 bit OpenGL support, install lib32-catalyst-utils. Note that you will have to enable the [multilib] repository first:

# pacman -S lib32-catalyst-utils

Both repositories also contain other packages, that can replace the Catalyst package and provide fglrx modules for multiple kernels that are installed on your system:

  • Catalyst-generator; this package is able to generate fglrx modules packed into pacman compliant packages - most secure and KISS-compatible package in this side-note, although it has to be operated manually.
  • Catalyst-hook; A hook for mkinitcpio which will automatically update fglrx modules with every kernel's update. This is basically the same as catalyst-dkms from [community].
  • Catalyst-daemon; this delivers an automatic update of the fglrx module with every kernel update, done by an init script. This is the same as Catalyst-hook and also catalyst-dkms from [community]. Also, systemd users have no use for this package, as systemd has no init script support.

You will find more details about those packages in Tools section. Lastly, both repositories also contain the xvba-video package, which enables video acceleration described #Video_acceleration and the AMDOverdriveCtrl package, which is a GUI to control over- and underclocking. See #GPU/Mem frequency, Temperature, Fan speed, Overclocking utilities

Installing from the AUR

The last way to install Catalyst is from the AUR. If you want to built the packages specifically for your computer, this is your way to go. Note that this is also the most tedious way to install Catalyst; it requires the most work and also requires manual updates upon every kernel update.

Warning: If you install the Catalyst package from the AUR, you will have to rebuild Catalyst every time the kernel is updated. Otherwise X will fail to start.
Warning: The Legacy driver does not support Xorg 1.13 for now. Support should be added by AMD in a century or two, but this could be sooner. Should you want to use this driver, see #Xorg repositories for instructions on how to roll back to or hold back Xorg 1.12.

All packages mentioned above in Vi0L0's unofficial repository are also available on the AUR:

The AUR also holds some packages that are not found in any of the repositories. These packages contain the so-called Catalyst-total packages and the beta versions:

The Catalyst-total packages are made to make the lives of AUR users easier. It builds the driver, the kernel utilities and the 32 bit kernel utilities. It also builds the Catalyst-hook package, which is explained above.

Catalyst-total-pxp builds Catalyst with experimental powerXpress support.

For more information on building from the AUR, read Installing from AUR.

Installing directly from AMD

Warning: Using the installer from ati.com/amd.com is not recommended! It may cause file conflicts and X failures and you will miss Arch-specific fixes. You must be familiar with booting to the command-line if you wish to attempt this.
Note: If you have attempted a manual install from the official installer and cannot recover your desktop:
# /usr/share/ati/fglrx-uninstall.sh

1.) Download the installer from AMD or elsewhere (whereas *-* will be the version): ati-driver-installer-*-*-x86.x86_64.run

2.) Make sure it's executable: # chmod +x ati-driver*

3.) Ensure you're using a basic video driver like vesa and remove conflicting drivers (i.e. xf86-video-ati) with pacman.

4.) Symlink /usr/src/linux to /usr/src/{kernelsource}. 64-bit users also symlink/usr/lib64 to /usr/lib.

5.) Be sure to have your build environment setup: # pacman -Syu base-devel linux-headers

6.) Now run # ./ati-driver-installer-*-*-x86.86_64.run (Files will extract to a temporary folder and scripts will run...)

Assuming nothing went horribly wrong...

7.) Check /usr/share/ati/fglrx-install.log for issues. There should also be a /lib/modules/fglrx/make.{ker_version}.log.

Note: If you modify the make scripts, save to a different filename. Otherwise uninstall will not complete successfully.

Configuring the driver

After you have installed the driver via your chosen method, you will have to configure X to work with Catalyst. Also, you will have to make sure the module gets loaded at boot. Also, one should disable kernel mode setting.

Configuring X

To configure X, you will have to create an xorg.conf file. Catalyst provides its own aticonfig tool to create and/or modify this file. It also can configure virtually every aspect of the card for it also accesses the /etc/ati/amdpcsdb file. For a complete list of aticonfig options, run:

# aticonfig --help | less
Warning: Use the --output option before committing to /etc/X11 as an xorg.conf file will override anything in /etc/X11/xorg.conf.d
Note: If you want to adhere to the new xorg.conf.d: Append your aticonfig string with --output so that you can adapt the Device section to /etc/X11/xorg.conf.d/20-radeon.conf. The drawback of this is that many aticonfig options rely on an xorg.conf, and thus will be unavailable.

Now, to configure Catalyst. If you have only one monitor, run this:

# aticonfig --initial

However, if you have two monitors and want to use both of them, you can run the command stated below. Note that this will generate a dual head configuration with the second screen located above the first screen.

# aticonfig --initial=dual-head --screen-layout=above
Note: See #Double Screen (Dual Head / Dual Screen / Xinerama) for more information on setting up dual monitors.

You can compare the generated file to one of the Sample Xorg.conf examples listed on the Xorg page.

Although the current Xorg versions auto-detect most options when started, you may want to specify some in case the defaults change between versions.

Here is an example (with notes) for reference. Entries with '#' should be required, add entries with '##' as needed:

Section "ServerLayout"
        Identifier     "Arch"
        Screen      0  "Screen0" 0 0          # 0's are necessary.
EndSection
Section "Module"
        Load ...
        ...
EndSection
Section "Monitor"
        Identifier   "Monitor0"
        ...
EndSection
Section "Device"
        Identifier  "Card0"
        Driver      "fglrx"                         # Essential.
        BusID       "PCI:1:0:0"                     # Recommended if autodetect fails.
        Option      "OpenGLOverlay" "0"             ##
        Option      "XAANoOffscreenPixmaps" "false" ##
EndSection
Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth    24
        SubSection "Display"
                Viewport   0 0
                Depth     24                        # Should not change from '24'
                Modes "1280x1024" "2048x1536"       ## 1st value=default resolution, 2nd=maximum.
                Virtual 1664 1200                   ## (x+64, y) to workaround potential OGL rect. artifacts/
        EndSubSection                               ## fixed in Catalyst 9.8
EndSection
Section "DRI"
        Mode 0666                                   # May help enable direct rendering.
EndSection
Note: With every Catalyst update you should remove amdpcsdb file in this way: kill X, remove /etc/ati/amdpcsdb, start X and then run amdcccle - otherwise the version of Catalyst may display wrongly in amdcccle.

If you need more information on Catalyst, visit this thread.

Loading the module at boot

How you should handle this depends on the init system you're using; either SysVinit or systemd. In either case, you have to blacklist radeon in /etc/modprobe.d/modprobe.conf. For more information, see blacklisting in this article. Users of the [community] package do not have to do this, it's automatically done for them when installing the package.

Note: The systemd method is recommended, as Arch is slowly switching over to this and the rc.conf method is actually deprecated.
The systemd method
  • Disable the radeon module from auto-loading. If it occurs in any file under /etc/modules-load.d/, remove the file (or, if the file contains multiple modules, just remove the radeon one).
  • Either add fglrx on a new line of an existing module file located under /etc/modules-load.d/, or create a new file and add fglrx.

Disable kernel mode setting

Disabling kernel mode setting is important, as the driver doesn't take advantage of KMS yet. If you do not deactivate KMS, your system might freeze when trying to switch to a tty or even when shutting down via your DE.

For GRUB Legacy, edit menu.lst by adding nomodeset to the kernel parameters. For example:

kernel /boot/vmlinuz-linux root=/dev/sda1 ro nomodeset

For GRUB 2, edit /etc/default/grub and add nomodeset to the kernel parameter options, e.g.

GRUB_CMDLINE_LINUX="nomodeset"

Then run, as root;

# grub-mkconfig -o /boot/grub/grub.cfg

For Syslinux, edit /boot/syslinux/syslinux.cfg and add nomodeset to the APPEND line, e.g.:

APPEND root=/dev/sda2 ro nomodeset

Checking operation

Assuming that a reboot to your login was successful, you can check if fglrx is running properly with the following commands:

$ lsmod | grep fglrx
$ fglrxinfo

If you get output, it works. Finally, run X 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 might need to install the mesa-demos package.

Note: You can also use:
$ fgl_glxgears

as the fglrx alternative test to glxgears.

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

If you have trouble, see #Troubleshooting.

Custom Kernels

To install catalyst for a custom kernel, you'll need to build your own catalyst-$kernel package.

If you are at all uncomfortable or inexperienced with making packages, read up the ABS wiki page first so things go smoothly.

  1. Obtain the PKGBUILD and catalyst.install files from Catalyst.
  2. Editing the PKGBUILD. Two changes need to be made here:
    1. Change pkgname=catalyst to pkgname=catalyst-$kernel_name, where $kernel_name is whatever you want (e.g. custom, mm, themostawesomekernelever).
    2. Change the dependency of linux to $kernel_name.
  3. Build your package and install; run makepkg -i or makepkg followed by pacman -U pkgname.pkg.tar.gz
Note: If you run multiple kernels, you have to install the Catalyst-utils packages for all kernels. They won't conflict with one another.
Note: Catalyst-generator is able to build catalyst-{kernver} packages for you so you do not actually need to perform all those steps manually. For more information, see Tools section.


PowerXpress support

PowerXpress technology allows switching from integrated graphics (IGP) to discrete graphics on notebooks, either to increase battery life or to achieve better 3D rendering capabilities.

To use such functionality on Arch you will have to:

  • Get and build catalyst-total-pxpAUR package from the AUR, or
  • Install catalyst-utils-pxp package from the [catalyst] repository (plus additional lib32-catalyst-utils-pxp, if needed).


To perform a switch into Intel's IGP you will also have to install the libgl package and Intel's drivers: xf86-video-intel and intel-dri.

Note: Unfortunately there are some problems with the new Intel drivers and for now the last noted working version of xf86-video-intel is 2.20.2-2, so you will probably have to downgrade from the latest version that you have gotten from Arch's repositories (although we recommend to test the newest one before downgrading - there's always some possibility that it will work).

You can get xf86-video-intel 2.20.2-2 from here; just download the one for your architecture and install it with pacman -U.

Be aware that xf86-video-intel 2.20.2-2 works with xorg-server 1.12, so if you want to use it you will have to downgrade xorg-server as well. For information on this, see #Xorg repositories.

Now you can switch between the integrated and the discrete GPU, using these commands:

# aticonfig --px-igpu    #for integrated GPU
# aticonfig --px-dgpu    #for discrete GPU

Just remember that fglrx needs /etc/X11/xorg.conf configured for AMD's card with 'fglrx' inside.

You can also use the pxp_switch_catalyst switching script that will perform some additional usefull operations:

  • Switching xorg.conf - it will rename xorg.conf into xorg.conf.cat (if there's fglrx inside) or xorg.conf.oth (if there's intel inside) and then it will create a symlink to xorg.conf, depending on what you chose.
  • Running aticonfig --px-Xgpu.
  • Running switchlibGL.
  • Adding/removing fglrx into/from /etc/modules-load.d/catalyst.conf.

Usage:

# pxp_switch_catalyst amd
# pxp_switch_catalyst intel

If you have got problems when you try to run X on Intel's driver you may try to force "UXA" acceleration; just make sure that your xorg.conf for Intel's GPU got Option "AccelMethod" "uxa", like here:

Section "Device"
   Identifier  "Intel Graphics"
   Driver      "intel"
   #Option      "AccelMethod"  "sna"
   Option      "AccelMethod"  "uxa"
   #Option      "AccelMethod"  "xaa"
EndSection

Xorg repositories

Catalyst is notorious for its slow update process. As such, it is common that a new Xorg version is pushed down from upstream that will break compatibility for Catalyst. This means that Catalyst users either have to hold the Xorg packages from updating, or use a backported repository that only contains the Xorg packages that should be hold back. Vi0L0 has stepped in to fulfil this task and provides several backported repositories.

If you want to use pacman to hold back packages from updating, see skip package from being upgraded. Packages you should hold back, are:

  • xorg-server-*
  • xf86-input-*
  • xf86-video-*

If you want to use the backported repositories, you have to edit /etc/pacman.conf and add the information of the repository above all other repositories, even above your Catalyst repository, should you use one.

[xorg112]

The current version of Catalyst doesn't support xorg-server 1.13 at the moment.

[xorg112]
Server = http://catalyst.apocalypsus.net/repo/xorg112/$arch

[xorg111]

Catalyst < 12.6 doesn't support xorg-server 1.12.

[xorg111]
Server = http://catalyst.apocalypsus.net/repo/xorg111/$arch

Tools

Catalyst-hook

Catalyst-hook is a hook for mkinitcpio that will automatically update fglrx modules with every kernel update. This is basically the same as catalyst-dkms from [community]. Before updating the fglrx modules, it will first try to update the linux-headers.

The hook will call the catalyst_build_module command to update fglrx module for the version of your new kernel. Additionally, it can call the catalyst_build_module remove command to remove the now old and unneeded flgrx module(s).

Note: If you are using this functionality it's important to look at the installation process of the linux kernel (or any other kernel) package. Catalyst-hook will tell you is everything all right.
Note: If your custom kernel is using some non-standard mkinitcpio configuration file (ie. linux-zen is using /etc/mkinitcpio-zen.conf) you'll have to manually add fglrx to HOOKS array in your non-standard configuration file so it can be auto-recompiled with a kernel update.
Note: If you aren't using the stock linux kernel at all and still want to use auto-recompilation, you should remove linux-headers from the SyncFirst list of /etc/pacman.conf after running 'catalyst_build_module auto'. If you also have custom linux-headers, you can swap linux-headers in the SyncFirst line with your custom one, for example linux-lts-headers.

Catalyst-generator

Catalyst-generator is a package that is able to build and install the fglrx module packed into pacman compliant catalyst-${kernver} packages. The difference from Catalyst-hook is that you will have to trigger this command manually, whereas Catalyst-hook will do this automatically at boot when a new kernel got installed.

It creates catalyst-${kernver} packages using makepkg and installs them with pacman. ${kernver} is the kernel version for which each package was built (e.g. catalyst-2.6.35-ARCH package was built for 2.6.35-ARCH kernel).

To build and install catalyst-${kernver} package for a currently booted kernel as an unprivileged user (non-root; safer way), use catalyst_build_module. You will be asked for your root password to proceed to package installation.

A short summary on how to use this package:

  1. As root: catalyst_build_module remove. This will remove all unused catalyst-{kernver} packages.
  2. As unprivileged user: catalyst_build_module ${kernver}, where ${kernver} is the version of the kernel to which you just updated. For example: catalyst_build_module 2.6.36-ARCH. You can also build catalyst-${kernver} for all installed kernels by using catalyst_build_module all.
  3. If you want to remove catalyst-generator, it's best to run this as root before removing catalyst-generator: catalyst_build_module remove_all. This will remove all catalyst-{kernver} packages from the system.

Catalyst-generator isn't able to remove all those catalyst-{kernver} packages automatically while being removed because there can not be more than one instance of pacman running. If you forget to run catalyst_build_module remove_all before using pacman -R catalyst-generator catalyst-generator will tell you which catalyst-{kernver} packages you will have to remove manually after removing catalyst-generator itself.

Note: If you see those warnings:

WARNING: Package contains reference to $srcdir

WARNING: '.pkg' is not a valid archive extension.

while building catalyst-{kernver} package, do not be concerned, it's normal.

Features

Tear Free Rendering

Presented in Catalyst 11.1, the Tear Free Desktop feature reduces tearing in 2D, 3D and video applications. This likely adds triple-buffering and v-sync. Do note that it requires additional GPU processing.

To enable 'Tear Free Desktop' run amdcccle and go to: Display OptionsTear Free.

Or as root run:

# aticonfig --set-pcs-u32=DDX,EnableTearFreeDesktop,1

To disable, again use amdcccle or run as root:

# aticonfig --del-pcs-key=DDX,EnableTearFreeDesktop

Video acceleration

Video Acceleration API (VA API) is an open source software library (libVA) and API specification which provides GPU acceleration for video processing on Linux/UNIX based operating systems. The process works by enabling hardware accelerated video decode at various entry-points (VLD, IDCT, Motion Compensation, deblocking) for common encoding standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/WMV3).

VA-API gained a proprietary backend (in November 2009) called xvba-videoAUR, that allows VA-API programmed applications to take advantage of AMD Radeons UVD2 chipsets via the XvBA (X-Video Bitstream Acceleration API designed by AMD) library.

XvBA support and xvba-video is still under development, however it is working very well in most cases. Build the xvba-videoAUR package from AUR or soon, install it from [community] and install mplayer-vaapi and libva. Then just set your video player to use vaapi:gl as video output:

$ mplayer -vo vaapi:gl movie.avi

These options can be added to your mplayer configuration file, see MPlayer.

For smplayer:

Options → Preferences → General → Video (tab) → Output driver: User Defined : vaapi:gl
Options → Preferences → General → Video (tab) → Double buffering on
Options → Preferences → General → General → Screenshots → Turn screenshots off
Options → Preferences → Performance → Threads for decoding: 1 (to turn off -lavdopts parameter)
Note: If Tear Free Desktop is enabled it's better to use:
Options -> Preferences -> General -> Video (tab) -> Output driver: vaapi

If Video Output vaapi:gl isn't working - please check:

vaapi, vaapi:gl2 or simply xv(0 - AMD Radeon AVIVO Video).

For VLC:

Tools → Preferences → Input & Codecs → Use GPU accelerated decoding

It might help to enable v-sync in amdcccle:

3D → More Settings → Wait for vertical refresh = Always On
Note: If you are using Compiz/KWin, the only way to avoid video flickering is to watch videos in full-screen and only when Unredirect Fullscreen is off. In compiz you need to set Redirected Direct Rendering in General Options of ccsm. If it is still flickering, try to disable this option in CCSM. It's off by default in KWin, but if you see flickering try to turn "Suspend desktop effects for fullscreen windows" on or off in System Settings → Desktop Effects → Advanced.

GPU/Mem frequency, Temperature, Fan speed, Overclocking utilities

You can get the GPU/Mem clocks with: $ aticonfig --od-getclocks.

You can get the fan speed with: $ aticonfig --pplib-cmd "get fanspeed 0"

You can get the temperature with: $ aticonfig --odgt

To set the fanspeed with: $ aticonfig --pplib-cmd "set fanspeed 0 50" Query Index: 50, Speed in percent

To overclock and/or underclock it's easier to use a GUI, like ATi Overclocking Utility, which is very simple and requires qt to work.

The i686 version is available here, while the x86_64 is available here. Just download it and run.

An other, more complex utility to perform such operations is AMDOverdriveCtrl. Its homepage is here and you can build an Arch package from AUR or from Vi0L0's unofficial repositories.

Double Screen (Dual Head / Dual Screen / Xinerama)

Introduction

Warning: you should know that there isn't one specific solution because each setup differs and needs its own configuration. That's why you will have to adapt the steps below to your own needs. It is possible that you have to try more than once. Therefore, you should save your working /etc/X11/xorg.conf before you start modifying and you must be able to recover from a command-line environment.
  • In this chapter, we will describe the installation of two different-sized screens on only one graphics card with two different output ports (DVI + HDMI) using a "BIG Desktop" configuration.
  • The Xinerama solution has some inconveniences, especially because it is not compatible with XrandR. For that very reason, you should not use this solution, because XrandR is a must for our later configuration.
  • The Dual Head solution would allow you to have 2 different sessions (one for each screen). It could be what you want, but you will not be able to move windows from one screen to another. If you have only one screen, you will have to define the mouse inside your Xorg session for each of the two sessions inside the Server Layout section.

ATI Documentation

ATI Catalyst Control Center

The GUI tool shipped by ATI is very useful and we will try to use it as much as we can. To launch it, open a terminal and use the following command:

$ {kdesu/gksu} amdcccle
Warning: Do not use sudo directly with a GUI. Sudo gives you admin rights with user account information. Instead, use gksu (GNOME) or kdesu (KDE).

Installation

Before we start, make sure that your hardware is plugged in correctly, that power is on and that you know your hardware characteristics (screen dimensions, sizes, refreshment rates, etc.) Normally, both screens are recognized during boot time but not necessarily identified properly, especially if you are not using any Xorg base configuration file (/etc/X11/xorg.conf) but relying on the hot-plugging feature.

The first step is to make sure that you screens will be recognized by your DE and by X. For this, you need to generate a basic Xorg configuration file for your two screens:

# aticonfig --initial --desktop-setup=horizontal --overlay-on=1

or

# aticonfig --initial=dual-head --screen-layout=left
Note: overlay is important because it allows you to have 1 pixel (or more) shared between the 2 screens.
Tip: For the other possible and available options, do not hesitate to type aticonfig --help inside a terminal to display all available command lines.

Now you should have a basic Xorg configuration file that you can edit to add your screen resolutions. It is important to use the precise resolution, especially if you have screens of different sizes. These resolutions have to be added in the "Screen" section:

SubSection "Display"
Depth 24
Modes "X-resolution screen 1xY-resolution screen 1" "Xresolution screen 2xY-resolution screen 2"
EndSubSection

From now on, instead of editing the xorg.conf file manually, let us use the ATI GUI tool. Restart X to be sure that your two screens are properly supported and that the resolutions are properly recognized (Screens must be independent, not mirrored).

Configuration

Now you will only have to launch the ATI control center with root privileges, go to the display menu and choose how you would like to set your configuration (small arrow of the drop down menu). A last restart of X and you should be done!

Before you restart X, do not hesitate to verify your new xorg.conf file. At this stage, inside the "Display" sub-section of the "Screen" section, you should see a "Virtual" command line, of which the resolution should be the sum of both screens. The "Server Layout" section says all the rest.

Troubleshooting

If you can still boot to command-line, then the problem probably lies in /etc/X11/xorg.conf

You can parse the whole /var/log/Xorg.0.log or, for clues:

$ grep '(EE)' /var/log/Xorg.0.log
$ grep '(WW)' /var/log/Xorg.0.log

If you are at lost of what to do, you can always post a message in the see support thread on the forums. When you do so, please do provide the information you get from both commands mentioned above.

3D Wine applications freeze

If you use a 3D Wine application and it hangs, you have to disable TLS. To do this, either use aticonfig or edit /etc/X11/xorg.conf. To use aticonfig:

# aticonfig --tls=off

Or, to edit /etc/X11/xorg.conf; first open the file in an editor as root and then add Option "UseFastTLS" "off" to the Device section of this file.

After applying either of the solutions, restart X for it to take effect.

Problems with video colours

You may still use vaapi:gl to avoid video flickering, but without video acceleration:

  • Run mplayer without -vo vaapi switch.
  • Run smplayer remove -vo vaapi from Options → Preferences → Advanced → Options for MPlayer → Options: -vo vaapi

Plus for smplayer you may now safely turn screenshots on.

KWin and composite

You may use XRender if the rendering with OpenGL is slow. However, XRender might also be slower than OpenGL depending on your card. XRender also solves artefact issues in some cases, for instance when resizing Konsole.

Black screen with complete lockups and/or hangs after reboot or startx

Ensure you have added the nomodeset option to the kernel options line in your bootloader (see #Disable kernel mode setting).

Faulty ACPI hardware calls

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

If so, try to run this:

$ aticonfig --acpi-services=off

KDM disappears after logout

If you are running 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]:

TerminateServer=True

KDM should now appear when you log out of KDE.

Direct Rendering does not work

This problem may occur when using the proprietary Catalyst driver.

Warning: This error would also appear if you have not 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 do not 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 if using SysVinit, otherwise open your fglrx.conf file in /etc/modules-load.d and add the agp module on a line before the fglrx line.
libGL error: failed to open DRM: Operation not permitted
libGL error: reverting to (slow) indirect rendering
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 has not been installed correctly. 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 source /etc/profile into ~/.xsession or ~/.xinitrc, but this may vary between login managers.
  • If the paths above in your error message are /usr/lib/xorg/modules/dri/fglrx_dri.so, then something has not 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 libGL.so on 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 (e.g. /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:

/usr/X11R6/lib/libGL.so.1.2
/usr/X11R6/lib/libGL.so.1

Hibernate/Sleep Issues

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 for example, Grub Legacy's /boot/grub/menu.lst:

kernel /vmlinuz-linux root=/dev/sda3 resume=/dev/sda2 ro quiet vga=0

To see where you need to add this with other bootloaders, see #Disable kernel mode setting.

System Freezes/Hard locks

  • 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.
  • If you experience system freezes when exiting your DE (shut down, suspend, switching to tty etc.) you probably forgot to deactivate KMS. (See #Disable kernel mode setting)

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 this bugreport for more information and a potential fix.

Temporary hangs when playing video

This problem may occur when using the proprietary Catalyst.

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 kernel option to your kernel options in your bootloader and rebooting fixed the problem at least for me. To see how to do this for different bootloaders, see #Disable kernel mode setting.

"aticonfig: No supported adapters detected"

If when running

# aticonfig --initial

you get:

aticonfig: No supported adaptaters detected

But you do have an AMD GPU (or APU), it may still be possible to get Catalyst working by manually setting the device in your your etc/X11/xorg.conf file.

You can do so by setting the device section of /etc/X11/xorg.conf to:

Section "Device"
 Identifier "ATI radeon ****"
 Driver "fglrx"
EndSection

Where **** should be replaced with your device's marketing number (e.g. 6870 for the HD 6870 and 6310 for the E-350 APU).

Xorg will start and it is possible to use amdcccle instead of aticonfig. There will be an "AMD Unsupported hardware" watermark.

You can remove this watermark using the following script:

#!/bin/sh
DRIVER=/usr/lib/xorg/modules/drivers/fglrx_drv.so
for x in $(objdump -d $DRIVER|awk '/call/&&/EnableLogo/{print "\\x"$2"\\x"$3"\\x"$4"\\x"$5"\\x"$6}'); do
 sed -i "s/$x/\x90\x90\x90\x90\x90/g" $DRIVER
done

and rebooting.

WebGL support in Chromium

Google has blacklisted Linux's Catalyst driver from supporting webGL in their Chromium/Chrome browsers.

You can turn webGL on by editing /usr/share/applications/chromium.desktop file and adding --ignore-gpu-blacklist flag into the Exec line so it looks like this:

Exec=chromium %U --ignore-gpu-blacklist

You can also run chromium from console with the same --ignore-gpu-blacklist flag:

$ chromium --ignore-gpu-blacklist
Warning: Catalyst does not support the GL_ARB_robustness extension, so it is possible that a malicious site could use WebGL to perform a DoS attack on your graphic card. For more info, read this.

Laggs/freezes when watching flash videos via Adobe's flashplugin

Edit /etc/adobe/mms.cfg and make it look like this:

#EnableLinuxHWVideoDecode=1
OverrideGPUValidation=true

Laggs/slow windows movement in GNOME3

You can try this solution out, it's working for many people.

Add this line into ~/.profile or into /etc/profile:

export CLUTTER_VBLANK=none

Restart X server or reboot your system.

Not using fullscreen resolution at 1920x1080 (underscanning)

Using the amdcccle gui you can select the display, go to adjustments, and set Underscan to 0% (aticonfig defaults to 15% underscan).

Alternatively, you can edit your xorg.conf by adding this line to remove the default underscanning on a per screen basis:

Option      "DPMS" "true"

On the Monitor section, a full example would look like this

Section "Monitor"
        Identifier   "0-DFP5"
        Option      "VendorName" "ATI Proprietary Driver"
        Option      "ModelName" "Generic Autodetecting Monitor"
        Option      "DPMS" "true"
        Option      "PreferredMode" "1920x1080"
        Option      "TargetRefresh" "60"
        Option      "Position" "0 0"
        Option      "Rotate" "normal"
        Option      "Disable" "false"
EndSection