Published on

Install Official Radeon Catalyst drivers on Fedora FC20

Authors

Basic steps :

  • Install ATI Official Drivers

    • Fix the bugs
  • Prove that the install worked

Download the official drivers

Have a look at the AMD Linux download page. The direct (CLI) download below may not work due to cookies, etc, so you may have to resort to downloading through the browser...

wget http://www2.ati.com/drivers/beta/linux-amd-catalyst-14.6-beta-v1.0-may23.zip
unzip linux-amd-catalyst-14.6-beta-v1.0-may23.zip
rm linux-amd-catalyst-14.6-beta-v1.0-may23.zip
cd fglrx-14.20/
./check.sh

Then, as root, run the amd-driver-installer:

yum install kernel-devel kernel-headers gcc
./amd-driver-installer-*.run

Success? : Next steps will be :

Then check that radeon has been blacklisted, and check that fglrx has been loaded :

joe /etc/modprobe.d/blacklist-fglrx.conf
reboot
lsmod | grep fgl

No success?

more /usr/share/ati/fglrx-install.log

Fixing the bugs...

Probably have to fix up the source (this was particularly true for fglrx-14.20, whereas the fglrx-14.301... worked first time).

The best way to do this is to run two terminals :

  • First terminal runs the installers (as above), until it reaches the 'all extracted' phase

  • Second terminal dives into the extracted source, and modifies it so that the first terminal can run to completion.

So, having run through the uncompress stage in the installer, leave it mid-operation, and find the extracted directory (called fglrx-install.1KZ6NX here, but the final digits/letters see random).

cd fglrx-install.1KZ6NX/install/lib/modules/fglrx/
joe 2.6.x/firegl_public.c

This is the 'source' source file (and will later be copied into /usr/src/fglrx-14.20/firegl_public.c, for subsequent kernels updates, presumably).

It needs a modification as follows (this is a kludge-fix, the key thing is that it returns the __kuid_val(current_euid());, which somehow, the #defines seem to route around):

/** /brief Return the effective user ID
 *  /return OS dependent value of the effective user ID
 */
KCL_TYPE_Uid ATI_API_CALL KCL_GetEffectiveUid(void)
{
#ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS
    return __kuid_val(current_euid());
#else
    return __kuid_val(current_euid());

#ifdef current_euid
//    return current_euid();
#else
    return current->euid;
#endif

#endif
}

Then, rebuild the module :

cd build_mod/
./make.sh
cd ..
./make_install.sh
lsmod

From there, one can let the installer (first terminal) run to completion.

lsmod
reboot
lsmod
dmesg

Check that the module is installed properly

fglrxinfo
fglrxinfo -v

Make sure that the X11/xorg.conf has been updated appropriately

(NB : If you're doing this from a separate machine ssh session - which is probably a good idea - the display-oriented commands need to be prefixed with DISPLAY=:0.0 ) :

more /etc/X11/xorg.conf
lsmod | grep fg
lspci
DISPLAY=:0.0 aticonfig --initial=check
DISPLAY=:0.0 aticonfig --query-monitor

Set X11 to start with the right monitor (and resolution)

xrandr -d :0.0

Gives output (for me) :

Screen 0: minimum 320 x 200, current 1680 x 1050, maximum 8192 x 8192
DFP1 disconnected (normal left inverted right x axis y axis)
DFP2 disconnected (normal left inverted right x axis y axis)
DFP3 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 474mm x 296mm
   1680x1050      60.0*+
   1600x1200      60.0
   1400x1050      60.0
   1600x900       60.0
   1360x1024      60.0
   1280x1024      75.0     60.0
   1440x900       59.9
   1280x960       60.0
   1280x800       60.0
   1152x864       60.0     75.0
   1280x768       60.0
   1280x720       60.0
   1024x768       75.0     70.1     60.0
   800x600        72.2     75.0     60.3     56.2
   640x480        75.0     72.8     66.6     59.9
CRT1 disconnected (normal left inverted right x axis y axis)

Select the appropriate display (1680x1050 for me), and let aticonfig fix up the xorg.conf file.

aticonfig --list-adapters
aticonfig --initial
aticonfig --resolution=0,1680x1050
aticonfig --enable-monitor=dfp3

Fix up the initial gdm interface (replace with lightdm)

yum remove gdm mutter-wayland
yum install lightdm

Test it from command line :

lightdm-gtk-greeter

When looking good :

service lightdm start
systemctl enable lightdm

reboot

Test the new card out

fgl_glxgears
fgl_glxgears -loop 1000 -info