Difference between revisions of "Ubuntu Quantal Installation Guide"
(→Installing Proprietary Drivers a.k.a. Catalyst/fglrx)
|Line 1:||Line 1:|
= Hardware Video Decode Acceleration (EXPERIMENTAL) =
= Hardware Video Decode Acceleration (EXPERIMENTAL) =
Revision as of 05:53, 7 April 2013
- 1 Hardware Video Decode Acceleration (EXPERIMENTAL)
- 2 Updating Catalyst/fglrx
- 3 Removing Catalyst/fglrx
- 4 Issues
- 4.1 Video Tearing
- 4.2 Hybrid Graphics and Catalyst
- 4.3 Build Fails and Log Shows "mixed implicit and normal rules. Stop."
- 4.4 "Errors were encountered while processing: fglrx-amdcccle" (on 64-bit systems)
- 4.5 Problems Starting Xserver
- 4.6 Unsupported Hardware Watermark
- 4.7 Hang at logout
- 4.8 Can't remove fglrx with dpkg (diversion issue)
- 4.9 This module/version combo is already installed
- 4.10 New kernel installed?
- 4.11 amdconfig not found after installation
- 4.12 "update-alternatives: error" during install
- 4.13 'Can't exec "debian/rules": Permission denied at /usr/bin/dpkg-buildpackage line 507.' during deb generation
- 4.14 Errors during deb generation
- 4.15 Black screen after uninstalling old amd drivers
- 4.16 References
Hardware Video Decode Acceleration (EXPERIMENTAL)
Using XBMC player (XvBA)
XBMC has added support for accelerating video using XvBA/libxvba directly, but the support is currently not in the xbmc package in Ubuntu's repositories. To install the XvBA-enabled version of xbmc:
sudo apt-add-repository ppa:wsnipex/xbmc-xvba sudo apt-get update sudo apt-get install xbmc
Using the xvba-va Driver (VA-API)
NOTE: The VA-API wrapper for XvBA has been dead code for a while now. It will probably give you some acceleration of HD formats, but using the previously mentioned xbmc PPA is a better solution.
This is confirmed to work for newer RadeonHD GPU's (those with UVD2). If you have a RadeonHD 4000-series or newer, you have UVD2. To see the complete list: http://en.wikipedia.org/wiki/Unified_Video_Decoder#UVD_enabled_GPUs
sudo apt-get install xvba-va-driver libva-glx1 libva-x11-1 vainfo vainfo
vainfo should return something like the following (and no errors):
libva: libva version 0.32.0 Xlib: extension "XFree86-DRI" missing on display ":0.0". libva: va_getDriverName() returns 0 libva: Trying to open /usr/lib/dri/fglrx_drv_video.so libva: va_openDriver() returns 0 vainfo: VA API version: 0.32 vainfo: Driver version: Splitted-Desktop Systems XvBA backend for VA-API - 0.7.8 vainfo: Supported profile and entrypoints VAProfileH264High : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD
If vainfo returns an error, you may need to create a symlink:
sudo ln -s /usr/lib/va/drivers/fglrx_drv_video.so /usr/lib/x86_64-linux-gnu/dri/fglrx_drv_video.so #for 64-bit sudo ln -s /usr/lib/va/drivers/fglrx_drv_video.so /usr/lib/dri/fglrx_drv_video.so #for 32-bit
Once you've confirmed that vainfo is correct, you can test video playback. A good test player for va-api is VLC. You can enable va-api in Tools -> Preferences -> Input and Codecs. Check the box named "Use GPU acceleration (experimental)" and then restart VLC.
There is possibility to enable > H.264 Level 5.1 decoding in the driver which "has been in the driver for some time but not enabled by default"
sudo amdconfig --set-pcs-u32=MCIL,HWUVD_H264Level51Support,1
sudo service lightdm stop sudo cp -p /etc/ati/amdpcsdb /etc/ati/amdpcsdb.bak sudo sed -i '/UvdEnabled=V1/ a HWUVD_H264Level51Support=V1' /etc/ati/amdpcsdb sudo reboot
DO NOT try to install a new version over an old one. Follow the 'Removing Catalyst/fglrx' section below to remove your existing driver, and then you can start at 'Downloading the latest Catalyst' to install the new one.
The uninstall script in the first command will only exist if you downloaded the drivers and installed them directly (rather than building packages as this guide does). Skip the first command if it does not exist.
sudo sh /usr/share/ati/fglrx-uninstall.sh sudo apt-get remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev*
If you plan on using open-source drivers, you will need to reinstall some packages because Catalyst overwrites or diverts some key 3D libraries with proprietary versions. For more information on this issue, see this Ubuntu wiki page
sudo apt-get remove --purge xserver-xorg-video-ati xserver-xorg-video-radeon sudo apt-get install xserver-xorg-video-ati sudo apt-get install --reinstall libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.backup sudo rm -rf /etc/ati
If you receive
$ E: Internal Error, No file name for libgl1-mesa-dri
Change the third command above to:
sudo apt-get install --reinstall libgl1-mesa-glx:i386 libgl1-mesa-glx:amd64 libgl1-mesa-dri:i386 libgl1-mesa-dri:amd64 xserver-xorg-core
AMD/ATI claims that the "Tear Free Video" option is enabled by default, but that wasn't the case with Catalyst 12-3 installed on Kubuntu 12.04. If you're having issues with tearing, make sure that "Tear Free Video" is on. You can find this option in the Catalyst Control Center under 'Display Options' or you can use the following command:
sudo amdconfig --sync-video=on
The option will not take effect until you restart X (i.e. log out).
If you're using compositing, you should also make sure that vsync is enabled in the compositor's settings. I found that vsync was enabled by default, but here are the appropriate settings should you want to experiment.
You can enable vsync for kwin in System Settings -> Desktop Effects -> Advanced tab
TODO: See if there's a friendlier way to make sure vsync is enabled without installing ccsm.
Install the compiz settings manager:
sudo apt-get install compizconfig-settings-manager ccsm
The 'Sync to Vblank' is found in the 'OpenGL' subsection of the 'General' group
Hybrid Graphics and Catalyst
There are two basic types of hybrid designs. Older hybrid systems use a multiplexor (mux) to switch between GPU's. Newer systems (those with PowerXpress >= 4.0) are muxless. As far as I can tell, PowerXpress 4.0 started with RadeonHD 6000-series GPU's, and systems with older ATI GPU's have a mux, but don't quote that.
As of Catalyst 11-8, switching between two ATI cards (and maybe Intel/ATI muxless too?) is supposed to be doable, though it's not clear if that applies to all ATI/ATI hybrids or only the muxless ones. One would use amdconfig's PowerXpress options to switch back and forth between the integrated and discrete cards, like so:
amdconfig --pxl # List current activated GPU sudo amdconfig --px-dgpu # Activate discrete GPU (High-Performance mode), must re-start X to take effect sudo amdconfig --px-igpu # Activate integrated GPU (Power-Saving mode), must re-start X to take effect
After switching, one would log out and back in to restart X.
By using the officially provided drivers, there are two problems ( Launchpad Bug: #1068404):
- An incompatibility problem between intel and fglrx drivers (This gives segmentation fault at X server)
- Some paths missing for openGL operation of the fglrx driver (This prevents applications that require direct rendering, e.g. Unity/games/etc, from loading correctly)
If you follow the instructions described in the Binary Driver HOWTO, you should get functional configuration
There is still another bug if you use the integrated GPU (Intel), making the X server crashing ( Launchpad Bug: #1088220 )
A workaround for now is to use the discrete GPU (ATI)
For more information you may want to follow this forum topic
- Script by anion155, http://pastebin.com/1ALmnqx5.
- It can help you install & uninstall fglrx drivers for this configuration.
Build Fails and Log Shows "mixed implicit and normal rules. Stop."
If the installation fails and you find the above message in /var/lib/dkms/fglrx/<version_number>/build/make.log, it may be because you're using a pentium-build wrapper around gcc. See what the following ls command returns:
ls -la /usr/bin/gcc
If it shows that gcc is a link to builder-cc, temporarily redirect the link to point to the real gcc (gcc-4.6 in Ubuntu Precise). This should allow you to install fglrx:
sudo ln -sf /usr/bin/gcc-4.6 /usr/bin/gcc
When you're finished installing the driver, return the gcc link to its original value:
sudo ln -sf /usr/bin/builder-cc /usr/bin/gcc
Launchpad link for this bug: https://bugs.launchpad.net/ubuntu/+source/fglrx-installer/+bug/555957
"Errors were encountered while processing: fglrx-amdcccle" (on 64-bit systems)
Most likely, you probably did not have the ia32-libs-multiarch:i386 lib32gcc1 libc6-i386 packages installed beforehand. If you have a 64 bit install, the above dpkg command may complain that "Errors were encountered while processing: fglrx-amdcccle". This is because of a dependency of the amdccle package on 32 bit libraries. If you receive this error, use the following command, which will force the installation of all of the 32 bit dependencies, and then the amdcccle package:
sudo apt-get -f install
Catalyst 15.12 on 64-bit systems may require the --force-overwrite command in the above dpkg command:
sudo dpkg -i --force-overwrite fglrx*.deb
Problems Starting Xserver
If you get a black screen hang, the first thing to check is if xorg.conf is the problem.
You can disable the xorg.conf with:
sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.disabled
Reboot and check to see if things work now.
You can reinstate the file with:
sudo mv /etc/X11/xorg.conf.disabled /etc/X11/xorg.conf
Before tweaking ACPI settings, try ensuring /dev/null is chmodded to 0666. This intermittently changes when using the nano (and possibly other) editors with sudo and the group/world permissions are unset. This leads to the ATI drivers hanging on boot or otherwise. A quick and dirty init script saved as /etc/init/chmodnull does the trick -
start on filesystem
chmod 0666 /dev/null chmod 0666 /lib/udev/devices/null
This has been tested using Ubuntu 10.04 64-bit on a ATI Radeon HD 4830 (HP Envy 15-1060ea). It's worth noting that I had to disable TLS (amdconfig --tls=0) to get things to stay stable!
sudo amdconfig --acpi-services=off
Unsupported Hardware Watermark
This can happen if your card's PCI ID wasn't officially certified to work with a particular version of Catalyst. It does not necessarily mean that your card is unsupported, but it does mean that you shouldn't file bugs with that particular card/driver combination. If you installed the driver by downloading it from AMD/ATI, installing a newer version of Catalyst will probably help.
If you installed the proprietary driver included with Ubuntu or you do not want to upgrade to a newer version, it is possible to work around the issue. First check if AMD's signature file has a proper signature:
sudo nano /etc/ati/signature
If the file only contains the word UNSIGNED, replace the line with:
Reboot and see if the watermark is gone. If not, try using a control file from a older version of Catalyst than the one you're running:
cd ~/; mkdir catalyst12.10; cd catalyst12.10/ wget http://www2.ati.com/drivers/linux/amd-driver-installer-catalyst-12.10-x86.x86_64.zip unzip amd-driver-installer-catalyst-12.10-x86.x86_64.zip chmod +x amd-driver-installer-catalyst-12.10-x86.x86_64.run ./amd-driver-installer-catalyst-12.10-x86.x86_64.run --extract driver sudo mv /etc/ati/control ~/control.bak sudo cp driver/common/etc/ati/control /etc/ati
Hang at logout
If you experience hangs when logging out (of X) it is probably due to the /etc/ati/authatieventsd.sh script looking for X authorization files in the wrong place when it starts up. You can kill the hanging authatieventsd.sh processes from a console tty to allow the shutdown of the X server.
Before the following commands verify that /etc/ati/authatieventsd.sh exists after build and install, if not just do: (assuming that the installer is in the directory we used to install)
cd ~/catalyst15.12 sh amd-driver-installer-15.12-x86.x86_64.run --extract driver sudo cp driver/packages/Ubuntu/dists/quantal/replacements/authatieventsd.sh /etc/ati/authatieventsd.sh sudo chmod +x /etc/ati/authatieventsd.sh
This problem can be fixed permanently with:
sudo mkdir -p /var/lib/xdm/authdir sudo ln -s /var/run/xauth /var/lib/xdm/authdir/authfiles
If that doesn't work then you can disable atieventsd with this command:
sudo /usr/sbin/update-rc.d -f atieventsd remove
You'll have to restart for this to take effect.
Can't remove fglrx with dpkg (diversion issue)
If dpkg refuses to remove an fglrx package and complains about a diversion of a file, you might need to manually remove it. For example, if dpkg complains:
dpkg-divert: mismatch on divert-to when removing `diversion of /usr/lib/libGL.so.1.2 to /usr/share/fglrx/diversions/libGL.so.1.2 by xorg-driver-fglrx' found `diversion of /usr/lib/libGL.so.1.2 to /usr/lib/fglrx/libGL.so.1.2.xlibmesa by xorg-driver-fglrx'
sudo dpkg-divert --remove /usr/lib/libGL.so.1.2
This module/version combo is already installed
If you get this error-message, simply uninstall the previous version before installing the new one with:
sudo dkms remove -m fglrx --all
New kernel installed?
In theory, DKMS should automatically install the fglrx kernel module for your new kernel the first time you boot it. Should you need to manually install it:
sudo dkms build -m fglrx -k `uname -r` sudo dkms install -m fglrx -k `uname -r`
if amdcccle doesn't work and says Identifier is not a valid word. Use lower case letter in xorg.conf
or specify all the correct parameters. For example:
sudo dkms build -m fglrx -v 9.012 -k 3.5.0-22-generic sudo dkms install -m fglrx -v 9.012 -k 3.5.0-22-generic
amdconfig not found after installation
This scenario is possible when the driver installation has seemingly succeeded and is possibly related to previous fglrx installs, including those through Jockey (i.e. you first used drivers provided by Ubuntu but then upgraded to ones available from AMD's website). When doing amdconfig --initial after driver installation, you might end up not having the amdconfig available at all:
amdconfig: command not found
and see if the command lists some Ati related programs. If they are listed but not found from /usr/bin, it is possible that the "update-alternatives" fglrx .deb installation does has been ignored. See man update-alternatives for more information about the concept and workings of alternatives. In practice, update-alternatives is supposed to create several symbolic links to the files in the fglrx directory, but it will be ignored if the alternatives for the very related gl_conf entry has been set to manual. Do
update-alternatives --get-selections | grep gl_conf
and see if the mode is manual instead of auto and if mesa is mentioned instead of fglrx in the path that is printed. In this case you need to
sudo update-alternatives --set gl_conf /usr/lib/fglrx/ld.so.conf
to set fglrx as the active alternative. You can alternatively (no pun intended) and additionally change the gl_conf into automatic mode before the installation this way:
sudo update-alternatives --auto gl_conf
After that, the alternatives should automatically be configured correctly when the graphics driver .debs are installed.
"update-alternatives: error" during install
During installation you may receive the following message:
update-alternatives: error: unable to make /usr/lib/xorg/modules/drivers/fglrx_drv.so.dpkg-tmp a symlink to /etc/alternatives/fglrx_drv: No such file or directory
This can be easily solved by creating directory "drivers" under /usr/lib/xorg/modules/
sudo mkdir /usr/lib/xorg/modules/drivers
'Can't exec "debian/rules": Permission denied at /usr/bin/dpkg-buildpackage line 507.' during deb generation
During installation you may receive the following message:
Can't exec "debian/rules": Permission denied at /usr/bin/dpkg-buildpackage line 507.
This can happen when your /tmp folder is mounted with the option "noexec". The noexec is suggested by many howtos regarding Ubuntu on SSD, when placing the /tmp in memory. A workaround can be found here: 
Errors during deb generation
You may recieve errors if you do not have devscripts, dh-make, execstack and dh-modaliases installed. Run apt-get to install, and the errors go away and the deb is generated correctly.
If you recieve the error dpkg-buildpackage: not found:
sudo apt-get install devscripts
If you recieve the error make: dh: command not found:
sudo apt-get install dh-make
If you recieve the error make: execstack: Command not found:
sudo apt-get install execstack
If you recieve the error make: dh_modaliases: Command not found:
sudo apt-get install dh-modaliases
Black screen after uninstalling old amd drivers
Start you computer in recovery mode and exit to root shell. Remount your partitions in rw mode:
mount -rw -o remount / ...
Go to your download directory and proceed with building and installing the drivers in recovery mode. All should be fine after a reboot.