ATI
From ArchWiki
| i18n |
|---|
| English |
| 简体中文 |
| Italiano |
Introduction
ATI owners have two options for drivers. If you are unsure which driver to use, try the open-source one first. The open-source driver will suit most needs and is generally less problematic.
The proprietary driver, version 7.10 (8.42.3) and later, supports AIGLX. To use composite managers such as Compiz Fusion or KWin4 you can now use the open-source drivers or the proprietary driver. Currently, the performance of the open-source drivers (xf86-video-ati or xf86-video-radeonhd) is not on par with that of the proprietary one on demanding OpenGL applications, like Games. They currently lack some features, like succesful TV-out support. On the other hand, they have better dual-head support (xf86-video-ati),they have excellent 2D acceleration and they provide a great 3D acceleration for a responsive desktop.
Open-Source ATI Drivers
There are 2 different open-source ATI drivers, xf86-video-ati and xf86-video-radeonhd.
xf86-video-ati will work to some degree on Radeon chipsets up to X1950 (latest R500 chipsets). Radeons up to the 9200 series are fully featured, stable, and support full 2D and 3D acceleration. Radeons from 9500 to X1950 have full 2D acceleration, they provide satisfactory 3D acceleration as well, but it doesn't support all the features that the proprietary drivers do (like powersaving, even though it is implemented and in an immature stage). A full list of supported chipsets can be found here. But, it supports DRI1, RandR 1.2/1.3, EXA acceleration and Kernel-Mode-Setting (with the latest Linux kernel and libDRM versions).
For now, all cards from HD2xxx till the latest ones, are supported by xf86-video-ati, but for now, with 2D support only.
xf86-video-radeonhd is a driver for ATI R500 chipsets (Radeon X1000 series) and newer. It is written by Novell with specifications provided to the public by AMD. It does support RandR 1.2 and is pretty much a work in progress.
Installation and Configuration
Note: If you have previously installed the proprietary driver, make sure to remove catalyst and catalyst-utils.
To install xf86-video-ati :
pacman -S xf86-video-ati libgl ati-dri
To install xf86-video-radeonhd :
pacman -S xf86-video-radeonhd libgl ati-dri
The GIT versions of these drivers can be found on AUR
You can do now two things. You may create a xorg.conf file that will suit your needs or don't use it at all.
In case you want manual configuration, edit your xorg.conf, and add or make sure you have the following in their given sections. For
Section "Module" Load "glx" Load "dri" Load "drm" EndSection
Device section for xf86-video-ati :
Section "Device" Identifier "name" # your alias Driver "radeon" EndSection
Device section for xf86-video-radeonhd :
Section "Device" Identifier "name" # your alias Driver "radeonhd" Option "AccelMethod" "exa" # to enable 2D and Xv acceleration on R6XX - default AccelMethod shadowfb Option "DRI" "on" # to enable 2D and Xv acceleration on R6XX - default DRI disabled EndSection
Note:Try below for smooth performance,over Option "DRI", for RS780M/MN [Radeon HD 3200] using the radeonhd driver(as of 3rd May 2009).
This section (DRI) is not needed (thus deprecated),but use it if you encounter DRI related problems.
Section "DRI" Group "video" Mode 0666 EndSection
When using this driver, make sure you do not have catalyst and catalyst-utils installed but use libgl-dri instead. Otherwise, you'll have the wrong libGL.so which will cause direct rendering not to work.
Performance tuning
The following options apply to Section "Device":
By design, the open-source driver runs at AGP 1x speed. It is generally safe to modify this. If you notice hangs, try reducing the value or removing the line entirely (you can use values 1, 2, 4, 8).
Option "AGPMode" "4"
ColorTiling is completely safe to enable and supposedly is enabled by default. People have noticed a performance increase when enabled via xorg.conf.
Option "ColorTiling" "on"
Acceleration architecture; this will work only on newer cards. If you enable this and then can't get back into X, remove it.
Option "AccelMethod" "EXA"
Page Flip is generally safe to enable. This would mostly be used on older cards, as enabling this would disable EXA. With recent drivers can be used together with EXA.
Option "EnablePageFlip" "on"
This will enable fast writes. This one can be problematic, so be prepared to remove it if you can't get into X.
Option "AGPFastWrite" "yes"
EXAVSync: This option attempts to avoid tearing by stalling the engine until the display controller has passed the destination region. It reduces tearing at the cost of performance and has been know to cause instability on some chips. Really usefull when enabling Xv overlay on videos on a 3D accelerated desktop. This will not be necessary when UXA acceleration (throught DRI2) will be implemented succesfully into the xf86-video-ati driver.
Option "EXAVSync" "yes"
See the manpage for more configuration options.
man radeon
A fine tool to try is driconf. It will allow you to modify several settings, like vsync, anisotropic filtering, texture compression, etc. Using this tool it is also possible to "disable Low Impact fallback" needed by some programs (e.g. Google Earth).
TV out
Since August 2007, there is tv-out support for all radeons with integrated tv-out.
It is somewhat limited for now, it doesn't always autodetect the output correctly and only NTSC mode works.
First, check that you have an S-video output: xrandr should give you something like
Screen 0: minimum 320x200, current 1024x768, maximum 1280x1200 ... S-video disconnected (normal left inverted right x axis y axis)
Now we should tell Xorg that it is actually connected (it is, right?)
xrandr --output S-video --set load_detection 1
Setting tv standard to use:
xrandr --output S-video --set tv_standard ntsc
Adding a mode for it (currently it supports only 800x600):
xrandr --addmode S-video 800x600
I'll go for a clone mode:
xrandr --output S-video --same-as VGA-0
So far so good. Now let's try to see what we have:
xrandr --output S-video --mode 800x600
At this point you should see a 800x600 version of your desktop on your TV.
To disable the output, do
xrandr --output S-video --off
Also you may notice that the video is being played on monitor only and not on the TV. Where the Xv overlay is sent is controlled by XV_CRTC attribute.
To send the output to the TV, I do
xvattr -a XV_CRTC -v 1
Note: you need to install xvattr from AUR to execute this command.
To switch back to my monitor, I change this to 0. -1 is used for automatic switching in dualhead setups.
Please see Enabling TV-Out Statically for how to enable TV-out in your xorg config file.
Proprietary ATI Catalyst driver
Formerly known as 'fglrx', ATI has rebranded their proprietary Linux driver, which is now known as 'Catalyst'. Currently, only the package name has changed, while the kernel module retains its original 'fglrx' name, therefore any mention of fglrx below is specifically in reference to the kernel module, not the package.
Supported Devices
See ATI Catalyst 8.8 (Linux) Release Notes for a list of supported devices by this version of the drivers.
NOTE: Since v. 9.4, the propriatery ATI driver supports only R600 and newer devices (that means, HD2xxx and newer). For older cards, especially laptop users, be aware that the ATI Catalyst 8-8 driver only supports Xorg <= 7.3. Xorg 7.4 support was not introduced until the 8-10 Catalyst driver release. This means that if you are using Xorg 7.4 with an older card, your only current option is the open-source drivers. While Xorg 7.4 support is contained in the Catalyst 8-10 through 9-3 releases for older cards, those drivers are not presently packaged for Archlinux and numerous older cards have had trouble with those driver releases.
Installation
Catalyst was once a precompiled package offered by Arch in the extra repository, but as of March 2009, official support has been dropped because of dissatisfaction with the quality and speed of development of the proprietary driver. The catalyst driver is now available in AUR.
NOTE: The catalyst-utils does no longer seem to be in the official repos.
Stock Kernel
kernel26
To install ATI's fglrx drivers for the kernel26 package, you need to install the catalyst package, that can be found in AUR. You can build it via makepkg.
This package contains only the kernel module, but also installs the catalyst-utils package as a dependency. The catalyst-utils package is kernel-independent and provides the libraries and utilities for Xorg, including ATI's own libGL.so.
For a stock kernel, that's it. Configure your xorg.conf as usual, if desired.
Custom Kernels
To install catalyst for a custom kernel, you'll need to build your own catalyst-$kernel package containing the kernel module compiled specifically for your kernel.
If you are at all uncomfortable or inexperienced making packages, read up the ABS wiki page first so things go smoothly.
Obtaining PKGBUILD
Obtain the PKGBUILD and catalyst.install files from AUR.
Editing the PKGBUILD and building
Three changes need to be made here:
First, change
pkgname=catalyst
to
pkgname=catalyst-KERNEL_NAME
where KERNEL_NAME is whatever you want (e.g. custom, mm, themostawesomekernelever)
Second, remove kernel26 from the dependencies list.
Third, change
_kernver=${_kernel_version}-ARCH
to
_kernver=`uname -r`
(or directly insert the output of uname -r when running your custom kernel there)
Finally, build and install the package. (makepkg -i or makepkg followed by pacman -U pkgname.pkg.tar.gz)
Notes
- If you run multiple kernels from the repos, then install catalyst module packages for all kernels. They won't conflict with one another.
- No changes need to be made to the
catalyst-utilspackage, which is completely kernel-independent. All you need to do is compile a kernel module.
ATI/AMD Installer
WARNING: Using the installer from ati.com/amd.com is NOT recommended!
Doing so will cause file conflicts with various pacman packages and likely cause X failures. The packages available through pacman are configured specifically for Arch Linux and so should be used instead.
If you have attempted a manual install from the official installer, and are finding that nothing works correctly anymore, there should be an uninstall script placed at /usr/share/ati - run that, then try the pacman packages.
If you must use the installer from ATI/AMD for some reason, the following steps might work for you:
- Download AMD/ATI driver installer from the official site only.
- Make it executable.
- Execute a terminal emulator (e.g Konsole) and be root.
- Install mesa package
pacman -S mesa
- Install Xorg (if it isn't installed already).
- Check for other required things for ATI/AMD installer listed on their website
#pacman -Q | grep NameOfPackage
- Use aticonfig as described below to update xorg.conf
- Add ModulesPath into xorg.conf pointing at fglrx.so module if necessary
Configuration
ATI provides the aticonfig tool to modify an existing xorg.conf file and configure essentially every aspect of the card. For a complete list of aticonfig options, run:
$ aticonfig --help
If you don't have an xorg.conf file yet, run the following command to generate one:
# Xorg -configure
The simplest way to use aticonfig to adapt your xorg.conf file is listed in the examples at the end of the output if you run aticonfig without any command-line parameters:
Examples:
1. Setting up fglrx for the first time.
Single head : aticonfig --initial --input=/etc/X11/xorg.conf
Dual head : aticonfig --initial=dual-head --screen-layout=above
This command will generate a dual head configuration
file with the second screen located above the first
screen.
Just adapt one of those two lines for your personal setup.
Warning: Please check the generated xorg.conf file before you copy it to /etc/X11/xorg.conf and happily startx or reboot. Otherwise, you'll probably get a locked blank screen and won't be able to use your system anymore. The config files generated by preceding steps are sometimes incorrect. If you want, you can compare the generated files to one of the Sample Xorg.conf files listed on the Xorg wiki page.
Please ensure that in the "Screen" section you have "DefaultDepth 24" and there is a "DRI" section with "Mode 666" in it. The fglrx driver needs those lines to work, but the generated files by preceding programs don't have it. Without those lines, you might get an unresponsive black screen after reboot. Besides, since most of the parts are now automatically detected in modern Xorg, you don't need to write so many things in xorg.conf as you did before with ancient Xorg versions. So, some config sections/values in the generated xorg.conf are redundant.
Here is a minimal working example:
Section "ServerLayout" Identifier "X.org Configured" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection Section "Files" RgbPath "/usr/share/X11/rgb" ModulePath "/usr/lib/xorg/modules" FontPath "/usr/share/fonts/misc" FontPath "/usr/share/fonts/100dpi:unscaled" FontPath "/usr/share/fonts/75dpi:unscaled" FontPath "/usr/share/fonts/TTF" FontPath "/usr/share/fonts/Type1" EndSection Section "Module" Load "extmod" Load "dbe" Load "xtrap" Load "record" Load "dri" Load "glx" Load "GLcore" Load "freetype" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "kbd" EndSection Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/input/mice" Option "ZAxisMapping" "4 5 6 7" EndSection Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model" EndSection Section "Device" Identifier "Card0" Driver "fglrx" VendorName "ATI Technologies Inc" BoardName "Radeon Mobility X1400" BusID "PCI:1:0:0" EndSection Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection Section "DRI" Mode 0666 EndSection
Next, make sure the fglrx module and any needed agp modules are loaded.
# modprobe fglrx
Add them to the modules array of your /etc/rc.conf to ensure that they load when you boot.
Finally, run Xorg with startx and verify that direct rendering is enabled by running the following command in a terminal:
$ glxinfo | grep direct
If it says "direct rendering: yes" then you're good to go! If the glxinfo command is not found, you may need to install the mesa package as well.
Note: In recent versions of Xorg, the paths of libs are changed. So, sometimes libGL.so cannot be correctly loaded even if it's installed. Don't forget to check this if your GL is not working. Please read "trouble shooting" section for detail.
Troubleshooting
Rectangle/Checkerbox corruption with OpenGL programs
This was fixed in catalyst 8.9. OpenGL programs like e.g. blender in windowed mode, show a rectangle/checkerbox corruption. This can be solved by using a Virtual display setting with a multiple of 64 bigger than you actual resolution like 1664 instead 1600 for width:
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Depth 24
Virtual 1664 1200
EndSubSection
EndSection
Black screen with complete lockups / hangs after reboot or startx
This is sometimes reported. Please get a live cd (The arch installer cd itself can be used).
- Reboot your computer and boot it from the live cd.
- Mount your system partition, and read /var/log/Xorg.0.log in it.
- Find lines start with "(EE)" which contains error messages.
- Check if you can resolve the problems listed in those error messages.
- Refer to the "Configuration" section, and ensure you have set "DefaultDepth 24".
- Reboot your system to test the revised xorg.conf.
- If you still have no luck after endless trying, replace "fglrx" with "radeon", and reboot. At least this open source driver should work (No 3D hardware acceleration).
KDM disapears after logout
If you are running the catalyst proprietary driver and you get a console (vc/1) instead of the expected KDM greeting when you log out, you must instruct KDM to restart the X server after each logout:
$ sudo vim /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.
Bad screen resolution at login manager
If the resolution for your login manager is for example 1600x1200 and you want 1280x1024 you can fix it by using a xorg.conf (newer X-servers using the open source drivers normally don't need a xorg.conf, so if you don't have a xorg.conf you need to create one). In the "Screen" section add a modes lines:
Section "Screen"
Identifier "aticonfig-Screen[0]-0"
Device "aticonfig-Device[0]-0"
Monitor "aticonfig-Monitor[0]-0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1280x1024" "2048x1536"#<-add this line to change the default login screen resolution
EndSubSection
EndSection
The first argument of modes is the resolution, which will be used by default. The second argument is the maximum resolution supported by your monitor. This is needed so that you are able to choose higher screen resolutions using for example the KDE systemsettings.
Direct Rendering Doesn't Work
Having trouble getting direct rendering to work? Run
$ LIBGL_DEBUG=verbose glxinfo > /dev/null
at the command prompt. At the very start of the output, it'll usually give you a nice error message saying why you don't have direct rendering.
Common errors, and their solutions, are:
libGL error: XF86DRIQueryDirectRenderingCapable returned false
- Ensure that you are loading the correct agp modules for your AGP chipset before you load the fglrx kernel module. To determine which agp modules you'll need, run
hwdetect --show-agp, then ensure that all modules listed from that command are in theMODULES=array in rc.conf, before fglrx.
libGL error: failed to open DRM: Operation not permitted libGL error: reverting to (slow) indirect rendering
- For this, make sure you have the following section in your
xorg.confsomewhere:
Section "DRI"
Mode 0666
EndSection
libGL: OpenDriver: trying /usr/lib/xorg/modules/dri//fglrx_dri.so libGL error: dlopen /usr/lib/xorg/modules/dri//fglrx_dri.so failed (/usr/lib/xorg/modules/dri//fglrx_dri.so: cannot open shared object file: No such file or directory) libGL error: unable to find driver: fglrx_dri.so
- Something hasn't been installed 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 addingsource /etc/profileinto~/.xsessionor~/.xinitrc, but may vary between login managers.
- If the paths above in your error message _are_
/usr/lib/xorg/modules/dri/fglrx_dri.so, then something hasn't been correctly installed. Try reinstalling thefglrx-utilspackage.
fglrx: libGL version undetermined - OpenGL module is using glapi fallback
- This could be caused by having multiple versions of
libGL.soon your system. Run:
$ sudo updatedb $ locate libGL.so
This should return the following output:
$ locate libGL.so /usr/lib/libGL.so /usr/lib/libGL.so.1 /usr/lib/libGL.so.1.2 $
These are the only three libGL.so files you should have on your system. If you have any more (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 enter suspend/hibernate
If fglrx returns an error when attempting to suspend through hibernate scripts, a solution may be to add the following line to your "Device" section in /etc/X11/xorg.conf, which should allow the fglrx module to enter suspend mode.
Option "UseInternalAGPGart" "no"
Video fails to resume from suspend2ram
ATI's proprietary catalyst driver cannot resume from suspend if the framebuffer is enabled. To disable the framebuffer, add vga=0 to your kernel options in /boot/grub/menu.lst, for example:
# (0) Arch Linux title Arch Linux root (hd0,0) kernel /vmlinuz26 root=/dev/sda3 resume=/dev/sda2 ro vga=0 initrd /kernel26.img
System Freezes/Hard locks
- To prevent system lockups, try adding the following lines to your fglrx "Device" section in
xorg.conf
Option "UseInternalAGPGART" "no" Option "KernelModuleParm" "agplock=0" # AGP locked user pages: disabled
Note: Neither option is necessary anymore since 8.24.18 because ATI has removed the internal AGP GART support from the driver.
- As well, the
radeonfbframebuffer drivers have been known in the past to cause problems of this nature. If your kernel has radeonfb support compiled in, you may want to try a different kernel and see if this helps.
Hardware Conflicts
Radeon cards used in conjunction with some versions of the nForce3 chipset (e.g. nForce 3 250Gb) won't have 3D acceleration. Currently the cause of this issue is unknown, but some sources indicate that it may be possible to get acceleration with this combination of hardware by booting Windows with the drivers from nVIDIA and then rebooting the system. This can be verified by issuing in a root console the following command:
dmesg | grep agp
If you get something similar to this (using an nForce3-based system)
agpgart: Detected AGP bridge 0
agpgart: Setting up Nforce3 AGP.
agpgart: aperture base > 4G
and also if issuing this command...
tail -n 100 /var/log/Xorg.0.log | grep agp
...gets something similar to:
(EE) fglrx(0): [agp] unable to acquire AGP, error "xf86_ENODEV"
Then you have this bug.
Some sources indicate that in some situations, downgrading the motherboard BIOS may help, but this cannot be verified in all cases. Also, a bad BIOS downgrade can render your hardware useless, so beware.
See bug http://bugzilla.kernel.org/show_bug.cgi?id=6350 for more information and a potential fix.
Compaq Presario Laptops
Even after installing the drivers and editing the configuration file as required, some laptops (e.g. Presario R4000 with Xpress 200M) just come up with a blank screen.
The problem seems to be incorrect memory detected by the kernel(even if you have 128M of video memory lspci -v always reports 256M). Changing the BIOS settings so that it uses the "SidePort+UMA" option and 128M video memory plus another 128M taken from the system seems to work fine.
It could be a bug in the BIOS or in the Linux PCI code.
Temporary hangs when playing video
If you experience temporary hangs lasting from a few seconds to several minutes occuring randomly during playback with mplayer, check /var/log/messages.log for output like:
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160 Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160 Nov 28 18:31:56 pandemonium [<f8bc628c>] ? ip_firegl_ioctl+0x1c/0x30 [fglrx] Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160 Nov 28 18:31:56 pandemonium [<c0197038>] ? vfs_ioctl+0x78/0x90 Nov 28 18:31:56 pandemonium [<c01970b7>] ? do_vfs_ioctl+0x67/0x2f0 Nov 28 18:31:56 pandemonium [<c01973a6>] ? sys_ioctl+0x66/0x70 Nov 28 18:31:56 pandemonium [<c0103ef3>] ? sysenter_do_call+0x12/0x33 Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160 Nov 28 18:31:56 pandemonium =======================
Adding the nopat kerneloption to /boot/grub/menu.lst and rebooting fixed the problem at least for me.
External Resources
More info can be found here