Linux and AMD graphics cards drivers are not always the best friends, specially for people that are new to this Linux world. In this post I’m gonna try to explain how to install the most recent drivers and overcome the most common errors. In my case, I had Elementary OS installed with an R9 380X and everything worked well. But then I bought a RX 6800 and it just didn’t work, no matter what I tried. Only one of my three monitors worked, hardware acceleration was off, couldn’t get more than 1024x768, etc. I thought it was a distro problem… So I installed Linux Mint 20.04 and…… same problem. So I wasted a few more hours trying stuff and then I got it to work. I’m gonna try to explain what I did so other people don’t need to waste hours of their lifes.
Before you start
Keep in mind that these steps may not work for every distro and every Ubuntu version. In my case I have Linux Mint 20.04 LTS, and it worked. We will update kernel, so, make sure you understand what that means and the risks associated with it before proceeding.
Remove all the old drivers
This is a must. If you are in a fresh install, skip this steps. If you aren’t, try and remove ALL the amdgpu and amdgpu-pro packages from your PC, depending on the version you have. You can do this by running:
amdgpu-uninstall or amdgpu-pro-uninstall
Then I advise you run:
sudo apt autoremove && sudo apt autoclean
Download the new drivers
Go to the AMD website and download the latest Linux drivers for your GPU. Decompress it by running:
tar -Jxvf amdgpu-pro-20.45–1164792-ubuntu-20.04.tar.xz
You should use the file you downloaded in case you have a different version. Keep this in mind throughout the tutorial. Now go inside the created folder:
Install the drivers
Run the install script:
It WILL throw an error. The error probably is something like this:
Errors were encountered while processing:
E: Sub-process /usr/bin/dpkg returned an error code (1)
Or something like this. Don’t worry, this is expected. The problem lies with the kernel version you are using.
Time to update your kernel
Open THIS repository and open the latest version of the kernel available there. In my case it was 5.10. Now go inside that folder and then inside amd64 (example). You will download every .deb file there, except the ones that have low latency in their names. In the end you should end with 4 downloaded files. Download them all to a folder and then install them all by running:
sudo apt install /your-dir/*.deb
Replace your-dir with the FULL PATH of the folder that has the .deb files.
You can now remove this package as you will not need it.
sudo apt remove amdgpu-dkms
Remove amdgpu blacklist
Open this file by running:
And if it exists, and if it has blacklist amdgpu comment that line so it becomes:
Update the firmware
Go back to the folder that has the extracted driver you downloaded in the beginning and extract the firmware by running:
dpkg -x amdgpu-dkms-firmware_22.214.171.1246300–1164792_all.deb tmp
Again, the file name may (will) change between versions. Check yours. Now check if there are files that match your GPU architecture. You can do this by running:
find tmp/ -name sienna_cichlid*
In my case, I have a RX 6800, so I search for sienna_cichlid, which is the name of my GPU. You need to find your GPU chip codename for your card. Ie, polaris for RX 500 Series, pitcairn for R9 380X, etc. Make sure you do this correctly otherwise your OS may not boot again.
Then, copy all those files into the firmware folder. Pay attention to the path (needs to be the same as the last command output paths).
sudo cp tmp/usr/src/amdgpu-126.96.36.1996300–1164792/firmware/amdgpu/sienna_cichlid* /lib/firmware/amdgpu/
sudo update-initramfs -u
Reboot and you are done, your drivers should be working now.
In depth tutorial HERE by wendell at level1techs. This is what saved me.