Note: This blog post was updated. The first (original) part describes an unsuccessful installation of the proprietary Catalyst driver on Fedora 20 and how to switch back to the open-source Radeon driver. The (new) second part, describes how to modify Catalyst driver’s source code and walk around the API incompatibility in the Fedora 20 kernel headers.
Update 7.2.2014: The current Latest Beta Driver (amd-catalyst-14.1-betav1.3) seems to be working well, without a need of additional modifications! Hooray!
Chapter one – Unsuccessful installation and switch back to the Radeon driver
Yesterday, I tried to install the official “AMD Catalyst™ 13.12 Proprietary Linux x86 Display Driver” (fglrx) from ATI’s support page.
I checked the release notes for system requirements:
- Xorg/Xserver 7.4 and above (up to 1.14)
- Linux kernel 2.6 or above (up to 3.11)
I checked my system:
$ Xorg -version
X.Org X Server 1.14.4
Release Date: 2013-10-31
X Protocol Version 11, Revision 0
$ uname -a
Linux localhost.localdomain 3.11.10-301.fc20.x86_64
Everything looked promising.
I downloaded the driver, started the installation and… saw an error message.
Sadly, it turned out that Catalyst driver cannot be installed because the kernel module compilation failed – Fedora 20 kernel headers have different API than the Catalyst 13.12 driver expects.
This was the good part of the story.
The bad part was that after reboot, I found out that my display uses resolution 1024×768 instead of 1920×1080 and that the Cinnamon crashes immediately after logging in. Quickly I found that instead of Radeon, the Vesa driver is used.
It took me a some time to figure out what the ATI Catalyst driver installer have done in system and fix it.
So in short, when you wanna switch from the proprietary ATI Catalyst (fglrx) driver back to the open-source Radeon driver. Even if the installation of the ATI Catalyst (fglrx) driver wasn’t successful! You have to:
- Remove the “/etc/X11/xorg.conf” created by the driver installer.
- Remove the “/etc/modprobe.d/blacklist-fglrx.conf” (or at least comment line which blacklists the Radeon driver inside it).
You may remove some other files, generated by the installer, too:
Update: Or you could use the uninstall script (/usr/share/ati/amd-uninstall.sh), if it was installed.
Chapter two – (The update) How to install Catalyst anyway
I’ve looked at the thread linked by Castagna in the comments below and apply the mentioned method. And it works!
Thank you Castangna!
What I’ve done:
I’ve started the Catalyst installation script again. It failed again as expected. But it has done everything I’ve needed: It has created the previously deleted /etc/X11/org.conf and blacklisted the Radeon driver again.
The compilation and installation of the module I’ve done by hand. After the (failed) installation, I have a fglrx driver module’s source code on my system in /lib/modules/fglrx/build_mod/, so I’ve just modified it, compiled it and installed it by hand. There are the used steps:
- $ cd /lib/modules/fglrx/build_mod/
- Modify the kcl_acpi.c as suggested by Maxtorete in the thread. (On the line 999, change the type cast of the function pointer “((acpi_table_handler)handler)(hdr);)” to “((acpi_tbl_table_handler)handler)(hdr);“
- $ ./make.sh
- $ cd .. && ./make_install.sh
- This is all, now reboot the system and enjoy smooth graphic
Note 1: As tac mentioned in the comment bellow, you must have kernel-devel, kernel-headers and gcc packages installed:
yum install kernel-devel kernel-headers gcc -y
Note 2: Check the comments below, Andrey posted a patch there.
Note 3: To be able to load the fglrx module, you have to disable the secure boot feature in BIOS (if you have it enabled).
Update (7.2.2014): The current “Latest Beta Driver” (amd-catalyst-14.1-betav1.3) with date 2/1/2014 (where the 2 is month and the 1 is day – oh, I really hate this date format order!) seems to be working out of the box without a need of this modifications!