Installing ATI drivers

From LQWiki
Jump to: navigation, search

Introduction

This guide is distribution-independant

  • Note: If you are using an ATI 7500 Mobility (or such card that isn't supported by the ati-drivers) this HOWTO will not help. Instead use the ATI kernel drivers. See also: http://forums.gentoo.org/viewtopic-p-2137276.html#2137276
  • Secondary note: It seems that FC3 with appropriate updates works without a problem with the ATI Radeon 9000 card. If you attempt to install NVIDIA or DRI manually, you will most likely kill things. There are some problems with some games, but that seems to be library incompatibilities.

Kernel Configuration

The drivers are rather picky when it comes to your kernel config; there are some options which have to be disabled, and others that must be enabled. Install your kernel-source, and then get into menuconfig and sync its options with those given below (if you have no idea what I just said, take a look at the kernel-compiling guide also found on this website):

Loadable Module Support --->
 [*] Enable loadable module support
   [*]   Module unloading 
Processor type and features  --->
 [*] MTRR (Memory Type Range Register) support
Device Drivers --->
 Character Devices ---> 
  <M> /dev/agpgart (AGP Support)  
   <M> Your_AGP_Chipset_Here
 [ ] Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
Kernel Hacking --->
  [ ] Kernel debugging
File systems  --->
  Pseudo filesystems  --->
    [*] Virtual memory file system support (former shm fs)

After you sync your kernel menuconfig with the selected portions posted here, of course, recompile & reboot into the new kernel.


Please be aware that -mm and -rc(1,2,3,4) kernels often break fglrx due to unexpected changes in syntax, etc. If you want to use ati-drivers, use a STABLE 2.4 or 2.6 kernel!

Extracting the Driver

We need to get the ATI Drivers from the ATi website. Note that they come in rpm format. Download them to /home/<your.username> and get out of X to a command prompt. Do this with these commands:

su -
init 3
CTRL + ALT + BACKSPACE # This is a key combination like, CTRL ALT DELETE

Now let's begin the install. Note that you should probably be root for most of this:

cd /where/you/downloaded/the/driver
rpm -iv --force fglrx*.rpm

Ignore the gobbly-gook output of that command; all we need it for is extracting the driver.

---

If you dont have an rpm-based distro then use these commands to extract the driver:

rpm2targz fglrx*.rpm
tar -xvzf fglrx*.tar.gz -C /

If rpm2targz is not installed, then install it: http://downloads.linuxfromscratch.org/rpm2targz.tar.bz2

Note that you must have cpio installed for rpm2targz to work.

---

Building the Driver Module

We'll be manually building the driver module ourselves with these commands:

cd /usr/lib/modules/fglrx/build_mod
sh make.sh
cd ..
sh make_install.sh

The next step is to Configure your X server:

fglrxconfig

If for some reason this command doesn't work (the script isn't found), try using this code:

/usr/X11R6/bin/fglrxconfig

Answer all the questions fglrxconfig asks you, and then it will write a new xorg.conf or XF86Config-4 in /etc/X11. Now, let's get back into X with this command:

startx

Open up a command prompt and run:

fglrxinfo

If the OpenGL vendor string says "ATI Technologies," then congrats! You've got the drivers working and hardware acceleration going great. If it says Mesa, something went wrong.

Troubleshooting

If you have an nForce2 chipset, or if the driver at default settings just won't work, then you'll want to try using the external AGP Gart provided with the kernel. All that's necessary is change the file on your distro that controls module loading (most of the time it is /etc/modprobe.conf). Put these entries in it: (ORDER IS VERY IMPORTANT)

agpgart
intel-agp # change intel-agp to your chipset. eg: via-agp
fglrx

Search your xorg.conf for this:

Option "UseInternalAGPGART"

Change the default "yes" to "no", reinstall fglrx, as per the above section, and then restart your computer.


Please Note: If you are unable to use any 3d applications and get this error instead:


FGLTexMgr: open of shared memory object failed (Function not implemented)
__FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!!
fglX11AllocateManagedSurface: __FGLTexMgrCreateObject failed!!
FGLTexMgr: open of shared memory object failed (Function not implemented)
__FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!!
fglX11AllocateManagedSurface: __FGLTexMgrCreateObject failed!!
FGLTexMgr: open of shared memory object failed (Function not implemented)
__FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!!


Then you do not have tmpfs mounted on /dev/shm, which the driver requires. To mount this, add to following line to /etc/fstab (if it isn't there already):


tmpfs     /dev/shm           tmpfs        defaults            0 0


Then just do a:

mount /dev/shm

If the drivers still crap out on you, or for example you get a black screen on X init, try going into your system BIOS and change graphics-related stuff around. Believe it or not, for me my 9800 gives a black screen on X init if I have the AGP Aperture set at anything other than 128MB. I don't know what causes this, and I don't care; I'm just relating to you how I overcame my problem ;)

Also, when updating/recompiling your kernel, you may have to unmerge the ati-drivers and then emerge them again.


WARNING: the current drivers have a bug that prevents you from restarting X. You can exit X, but if you try to return the kernel will go out to lunch. This is a known issue and will be fixed...eventually...maybe. Just bear that in mind while using the ATi binary. See http://ati.cchtml.com/show_bug.cgi?id=37 for more information.

See also

Check out user Wedge_'s excellent ATI Radeon FAQ here. Do note however that Wedge's FAQ is based on Gentoo.

ATi Unofficial Bugzilla (occasionally monitored by ATi personnel)