archlinux中ATI驱动的安装

其他Linux/Unix/BSD/OSX等发行版讨论
回复
头像
skyx
论坛版主
帖子: 9202
注册时间: 2006-12-23 13:46
来自: Azores Islands
联系:

archlinux中ATI驱动的安装

#1

帖子 skyx » 2008-02-04 15:36

图片

http://wiki.archlinux.org/index.php/ATI

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 (though buggy). To use composite managers such as Compiz Fusion or Compiz you can now use the open-source driver or the proprietary driver. Currently, the performance of the open-source driver is not on par with that of the proprietary one. It also lacks TV-out, dual-link DVI support, and possibly other features. On the other hand, it has better dual-head support.
Open-Source ATI Drivers

The open-source drivers will work to some degree on Radeon chipsets up to the Radeon X850. Radeons up to the 9200 series are fully featured, stable, and support full 2D and 3D acceleration. Radeons from 9500 to X850 have full 2D acceleration, they provide 3D acceleration as well but it doesn't support all the features that the proprietary drivers do. A full list of supported chipsets can be found here.
Installation and Configuration

The package is xf86-video-ati. Note: If you have previously installed the proprietary driver, make sure to remove catalyst and catalyst-utils.

pacman -Syu xf86-video-ati libgl

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

Section "Device"
Identifier "name" # your alias
Driver "radeon"
Option "XAANoOffscreenPixmaps" "true" #needed for aiglx
EndSection

Section "DRI"
Group "video"
Mode 0666
EndSection

When using this driver, make sure you do not have 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.

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"

See the manpage for more configuration options.

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.

However, it works pretty well for me with my Radeon 7000. Here's how I did it:

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

To switch back to my monitor, I change this to 0. -1 is used for automatic switching in dualhead setups.
ATI Catalyst proprietary driver

Formerly known as the fglrx, ATI has rebranded their proprietary Linux driver 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 7.12 (Linux) Release Notes for a list of supported devices by this version of the drivers.
Installation

From the release of Xorg 7, Arch has provided pre-compiled catalyst packages in the extra repository. If you use either of the kernels provided in the core or extra repos, the process is simple. If you use a custom kernel, a few extra steps need to be taken.
Stock Kernel
kernel26

To install ATI's fglrx drivers for the kernel26 package, you need to install the catalyst package.

# pacman -S catalyst

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.
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 fglrx.install files from CVS or ABS. Either:

* Visit http://www.archlinux.org/packages/12877/ and click "View CVS Entries" to find them, or
* Run abs as root and locate the files in /var/abs/extra/modules/catalyst.

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 -A 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-utils package, 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
* Make it executable
* Install mesa package

#pacman -S mesa

* Install Xorg if you need to
* 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.

As always, it's a good idea to visually scan the resulting xorg.conf file to ensure everything seems right. If you want, you can compare it to one of the Sample Xorg.conf files listed on the Xorg wiki page.

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.


Troubleshooting
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 /opt/kde/share/config/kdm/kdmrc

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

TerminateServer=True

KDM should now appear when you log out of KDE.
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 the MODULES= array in rc.conf, before fglrx.

libGL error: failed to open DRM: Operation not permitted
libGL error: reverting to (slow) indirect rendering

* For this, make sure you have the following section in your xorg.conf somewhere:

Section "DRI"
Mode 0666
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 adding source /etc/profile into ~/.xsession or ~/.xinitrc, but may vary between login managers.

* If the paths above in your error message _are_ /usr/lib/xorg/modules/dri/fglrx_dri.so, then something hasn't been correctly installed. Try reinstalling the fglrx-utils package.


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

* This 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 enter suspend/hibernate

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

Option "UseInternalAGPGart" "no"

Video fails to resume from suspend2ram

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

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

System Freezes/Hard locks

* To prevent system lockups, try adding the following lines to your fglrx "Device" section in xorg.conf

Option "UseInternalAGPGART" "no"
Option "KernelModuleParm" "agplock=0" # AGP locked user pages: disabled

Note: Neither option is necessary anymore since 8.24.18 because ATI has removed the internal AGP GART support from the driver.

* As well, the radeonfb framebuffer drivers have been known in the past to cause problems of this nature. If your kernel has radeonfb support compiled in, you may want to try a different kernel and see if this helps.

Hardware Conflicts

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

dmesg | grep agp

If you get something similar to this (using an nForce3-based system)

agpgart: Detected AGP bridge 0
agpgart: Setting up Nforce3 AGP.
agpgart: aperture base > 4G

and also if issuing this command...

tail -n 100 /var/log/Xorg.0.log | grep agp

...gets something similar to:

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

Then you have this bug.

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

See bug 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.
no security measure is worth anything if an attacker has physical access to the machine
skyround
帖子: 96
注册时间: 2006-05-13 15:25

#2

帖子 skyround » 2008-02-04 16:28

是不是打算把这里变成ArchWiki的镜像 :lol: :lol: :lol:
头像
zhuqin_83
帖子: 10606
注册时间: 2006-05-13 4:02
联系:

#3

帖子 zhuqin_83 » 2008-02-04 20:22

晕死,我说丫头你想把这里变成arch专版阿?
看样子我那几句蛊惑人心的话还蛮有效果的,骗到一个mm :twisted:
HP Pavilion DV6-2064CA: AMD Turion II Ultra Dual-Core Mobile M640, HD4650, 2GBx2 DDR2-800, Seagate 500GB 7200RPM SATA, BD-ROM
DELL UltraSharp 2209WA
Arch64, Testing repo
头像
jarryson
帖子: 4002
注册时间: 2005-08-14 19:53

#4

帖子 jarryson » 2008-02-07 21:20

有人已经翻译过了,其实安装最新驱动就几步

pacman -S catalyst

aticonfig --initiala

重启救ok了
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#5

帖子 eexpress » 2008-02-07 21:26

有事情,不如去问xwinx。五岳的,都是arch。
● 鸣学
头像
linuxoser
帖子: 142
注册时间: 2006-08-22 22:12

#6

帖子 linuxoser » 2008-03-11 4:58

最近开始玩儿arch,但是我的mobile9600总是在重起X的时候锁死,键盘失灵,黑屏...开源和闭源驱动都不行,只能关电源...lz知道有什么解决方法吗?谢谢...
Linux is for people who want to know why it works.
Mac is for people who don't want to know why it works.
DOS is for people who want to know why it does not work.
Windows is for people who don't want to know why it does not work.
头像
zhuqin_83
帖子: 10606
注册时间: 2006-05-13 4:02
联系:

#7

帖子 zhuqin_83 » 2008-03-11 6:39

你问她怎么弄a卡驱动?她又没装arch。
你是开源驱动么?9600就非常推荐用开源的了。
HP Pavilion DV6-2064CA: AMD Turion II Ultra Dual-Core Mobile M640, HD4650, 2GBx2 DDR2-800, Seagate 500GB 7200RPM SATA, BD-ROM
DELL UltraSharp 2209WA
Arch64, Testing repo
头像
jarryson
帖子: 4002
注册时间: 2005-08-14 19:53

#8

帖子 jarryson » 2008-03-12 9:30

9600还是不能用开源的。貌似超过了开源驱动说稳定3D的范围
头像
zhuqin_83
帖子: 10606
注册时间: 2006-05-13 4:02
联系:

#9

帖子 zhuqin_83 » 2008-03-12 9:43

那里不可以,我x600都在用,3d在r300已经稳定。
HP Pavilion DV6-2064CA: AMD Turion II Ultra Dual-Core Mobile M640, HD4650, 2GBx2 DDR2-800, Seagate 500GB 7200RPM SATA, BD-ROM
DELL UltraSharp 2209WA
Arch64, Testing repo
头像
linuxoser
帖子: 142
注册时间: 2006-08-22 22:12

#10

帖子 linuxoser » 2008-03-13 2:40

zhuqin_83 写了:那里不可以,我x600都在用,3d在r300已经稳定。
我都不好意思看这边了,有点脸红...
Linux is for people who want to know why it works.
Mac is for people who don't want to know why it works.
DOS is for people who want to know why it does not work.
Windows is for people who don't want to know why it does not work.
回复