Fedora 16 Installation Guide
Two Driver Choices
There are two video drivers you can choose to run your ATI video card, one is called fglrx, the other is radeon.
Fglrx - the Official AMD/ATI driver
This is the driver written and distributed by AMD, who own and do the work in the development of the hardware and therefore also own and do the work on the internal specs of the hardware. By virtue of the fact that AMD/ATI are the ones that pay hardware engineers and software engineers across the world to work on their products, they of course can provide a full-featured driver which supports all the capabilities of the hardware. The driver has two parts; a small kernel module which acts as a loader for the Xorg part of the driver, and then the Xorg modules themselves. Although AMD pays software engineers to work on Radeon project they also choose to distribute this full featured driver under a closed source license. The licensing of the product is ultimately irrelevant to this procedural document however and lies squarely in the domain of user choice.
fglrx was originally written only for ATI's FireGL professional workstation cards (targeting the same market as nVidia's Quadro range) however it was soon expanded to include almost the whole ATI range. AMD continued to extend and improve the driver after their acquisition of ATI. This driver also includes the Catalyst Control Center tool (amdcccle) for configuring features like forcing anti-aliasing and anistropic filtering on for all OpenGL processing.
If you are running newer games, such as most things you'd get off Steam, fglrx is the best choice. If you have a game which produces graphical glitches under the Free driver, it's worth trying this driver to see if the game works. Generally, performance in all 3D games and 3D applications will be drastically better with this driver. 2D performance slightly less in some cases than the radeon driver, but not much according to recent benchmarks. AMD has been working on the 2D performance of Fgrlx with very good results.
Each driver as pros and cons, try both and see which is most suitable for your needs. The best thing about Linux is the choice to run whatever software components you like.
radeon - the in-kernel driver
This is the Free Software driver included in the mainline Linux kernel. This driver is written by an open source community with no access to the hardware specs and is released under the GNU GPL. If software freedom is your main concern, this is the driver for you.
Historically, the radeon driver couldn't do much, not even 2D acceleration. However, in Fedora 16's 3.1 and 3.2 kernels this driver is making real progress. It now supports 2D compositing, many 3D functions such as GLSL and Pixel Shaders, as well as other useful features like Kernel Mode Setting. There is currently a large push in graphics driver development upstream in the kernel, so this driver's expected to get even better in kernels 3.3 and 3.4.
The radeon driver packaged with Fedora 16 will easily run desktop compositing (eg: gnome-shell, compiz, transparent terminal). It manages 60fps VSync at 1920x1200 in many 3D games (eg: Darkplaces Quake engine, OpenArena Quake 3 engine) with no problems. Depending on your CPU, constant 45fps in 1080p Minecraft is easily doable.
You can read more about the radeon driver on the XOrg Wiki. You can also find a list of supported features and list of supported software if you'd like to investigate using this driver.
It's worth noting that 2D performance is actually better in this driver than the proprietary driver. If you're only using Gnome 3 and games that don't require decent direct rendering performance, this may be an option. With regard to battery life on laptops, it's worth noting that just the power stack in Fglrx is larger than the entire Radeon driver as a whole. So superior battery performance will be obtained from Fgrlx.
Installing the AMD-supplied driver
Requirements
The AMD-supplied driver will work best in most cases if there is no xorg.conf file present before you begin the installation process. Move any existing xorg.conf files out of the /etc/X11 directory before installation.
You will need version 11.11 of the ATI driver or later for Fedora 16, earlier versions will not work with the version of XOrg that F16 ships with.
You require a Radeon HD2000 series or better to use the latest AMD-supplied driver.
kernel-3.2.9-2.fc16 and onwards
Due to an upstream sourcecode change in the Fedora kernel-headers package, building of AMD's fglrx module will currently fail with kernels 3.2.9-2.fc16 and later.
To fix this, we can revert a small edit. Open the file /usr/src/kernels/`uname -r`/arch/x86/include/asm/uaccess_64.h in a text editor.
On line 56 and 57 you will see:
else WARN(1, "Buffer overflow detected!\n");
Comment this out so it reads:
// else // WARN(1, "Buffer overflow detected!\n");
Your AMD kernel module will now build correctly. You may have to reboot into the new kernel and force the module rebuild with
su - akmods --force
then reboot again.
Multiple Monitor Setups
If you have an existing multiple monitor setup, copy your existing xorg.conf to as safe place, follow one of the install procedures, then transfer relevant sections of your old xorg.conf into the new version generated with aticonfig if required.
Here are some resources for those having difficulty getting their multiple monitors running:
- http://www.thinkwiki.org/wiki/Xorg_RandR_1.2
- http://wiki.debian.org/XStrikeForce/HowToRandR12
- man aticonfig
- One of the Ubuntu guides on this Wiki.
- AMD's own Catalyst documentation
If you need to start with a clean slate and all your monitors are connected, you can force a fresh xorg.conf to be generated taking into account the monitors present:
su - aticonfig --initial -f
Pre-built packages from RPMFusion
RECOMMENDED METHOD
This is easier than manually building the driver from AMD as you don't need to worry about passing kernel options via GRUB2, configuring DKMS, rebuilding the kernel module every time you do a kernel upgrade, or cleaning up any mess if you want to remove the driver.
Clean up previous Offical AMD driver installation
If you're coming from the Official AMD driver to RPMFusion's AMD driver, you'll need to reinstall the mesa-libGL package as the Official AMD driver installation changes files it contains.
su - yum reinstall mesa-libGL
Setup RPMFusion
There are instructions on http://www.rpmfusion.org/ but this should do it.
su - rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
Install Catalyst driver packages
This procedure is the same for 32-bit and 64-bit, yum will automatically install the correct driver and libs for your architecture.
su - yum install akmod-catalyst xorg-x11-drv-catalyst xorg-x11-drv-catalyst-libs
32-bit Libraries on 64-bit OS
If you want to play 32-bit games on a 64-bit Fedora installation, you will need to install the 32-bit libraries in addition to the above step.
su - yum install xorg-x11-drv-catalyst-libs.i686
Kernel module packages
Note that there are individual kmod-catalyst- packages in RPMFusion which supply kernel modules for specific Fedora kernel versions. If you use these and you upgrade the kernel without upgrading the kmod-catalyst- package, loading the proprietary driver will fail and you'll revert back to the Free radeon graphics driver. Sometimes there is a day or so between Fedora upgrading their kernel and RPMFusion building a new kmod-catalyst- package.
The akmod-catalyst package we installed above automatically builds a new kernel module at boot-time when the kernel is upgraded, so you'll never have to worry about this.
Official AMD Driver
Preinstall required packages
The script from AMD builds the kernel module and a set of modules for XOrg. The Official AMD installer requires some development packages to be installed:
su - yum install kernel-devel kernel-headers gcc gcc-c++
We'll also want to remove any kernel-devel packages from old versions of the kernel. Check your current kernel version with:
uname -a
Check all installed kernel packages with
su - rpm -qa | grep kernel
Remove any kernel-devel packages which do not match the latest kernel version. For example:
su - yum remove kernel-devel-3.2.9-1.fc16.x86_64
Note we are careful to specify the exact package name that was given to us by the rpm command above.
Boot into the latest kernel before continuing. Building the module on a kernel which you don't have -devel packages for will fail. Building the module on one kernel then booting into another will result in the compiled module not working.
Download driver
Download the driver for your particular card from http://support.amd.com/
It will look similar to: amd-driver-installer-XX-X-XXX.XXX_XX.run.
Install driver
Run the file as root in the sh shell.
su - chmod +x amd-driver-installer-XX-X-XXX.XXX_XX.run sh ./amd-driver-installer-XX-X-XXX.XXX_XX.run
Select the default install, do not generate distribution packages.
Confirming Installation
Check the build install log:
tail /usr/share/ati/fglrx-install.log
You should see data confirming the module build worked:
build succeeded with return value 0 duplicating results into driver repository... done.
Uninstalling Official AMD driver
Run AMD's uninstall script:
su - sh /usr/share/ati/fglrx-uninstall.sh
The following steps are not strictly required because the amd-driver-installer is written to put all files back as they were before the install. One set of files that amd-driver-installer alters is the mesa library set. To be sure of a mint-condition installation (especially if you are upgrading to the next Official driver version) reinstall the following package:
su - yum reinstall mesa-libGL
For those running Wine or Crossover from Codeweavers.com, the following command will reinstall all the mesa libraries that (should) be on your system. This example is for users running Wine/Crossover on a 64 bit system:
su - yum reinstall mesa-dri-filesystem.i686 mesa-libGL.x86_64 mesa-dri-drivers.x86_64 mesa-libGL.i686 mesa-dri-filesystem.x86_64 mesa-libEGL.x86_64 mesa-dri-drivers.i686 mesa-libGLU.x86_64
Troubleshooting
In the event you install the driver and are greeted with a blank screen or corrupted video signal when starting X, you are able to manually disable the Free Software radeon driver to troubleshoot.
Turn your system off and on again. On the GRUB boot screen, press e to edit the default boot entry, scroll down to the kernel line (which begins linux), then press e again to edit the line.
Add the entries radeon.modeset=0 blacklist=radeon to the end. For example, if your kernel line is
linux /vmlinuz-3.2.9-1.fc16.x86_64 LANG=en_US.UTF-8
we'll want to edit it so it is
linux /vmlinuz-3.2.9-1.fc16.x86_64 LANG=en_US.UTF-8 radeon.modeset=0 rdblacklist=radeon blacklist=radeon
These entries do the following:
- radeon.modeset=0 disables "Kernel Mode Settting" for the Free Software driver (ie: the driver telling the kernel to setup the screen resolution, instead of XOrg doing it)
- rdblacklist=radeon blacklist=radeon stops the kernel from loading the Free Software radeon driver altogether
From here you can manually remove and reinstall the proprietary drivers, either with yum or with PackageKit's Add/Remove Software application, as desired.