Getting Radeon RX 550 to work under Debian Stretch

There are three things that need to be updated in Debian Stretch in order to get the Radeon RX 550 running properly (or at all): kernel, mesa and proprietary binary firmware (bummer, I know).

First thing, make sure you have stretch-backports in your apt-sources with all the relevant components.

$ deb http://ftp.debian.org/debian stretch-backports main contrib non-free

Now, the kernel that currently comes with stretch (4.9.0-8) is missing some important configurations: CONFIG_DRM_AMDGPU_SI, and CONFIG_DRM_AMDGPU_CIK. So you will need to install the latest one from the backports which does have the correct configuration.

$ sudo apt install -t stretch-backports linux-image-amd64

Next thing is getting the proper firmware

$ sudo apt install -t stretch-backports firmware-linux-nonfree

This will also update the firmware-amd-graphics which provides the binary blobs that are needed by the amdgpu driver to work properly. The old version does not support the new Polaris 12 architecture used by the RX 550, while the version from the backports (20180825) does support Polaris 12.

Now comes the part of upgrading mesa. There are a bunch binary packages that are derived from the mesa source package and we need to upgrade each one of them to version 18 (or later, but 18 is what is provided by the backports). The following two commands will upgrade any mesa related package already installed and then re-mark them as automatically installed (just to keep things tidy as they were).

sudo apt install -t stretch-backports $(grep-status -S mesa -a -FStatus "install ok installed" -s Package -n | sort -u)
sudo apt-mark auto $(grep-status -S mesa -a -FStatus "install ok installed" -s Package -n | sort -u)

(credit for the last two lines). Now you can restart your computer and the RX 550 should work. You can test it using

$ DRI_PRIME=1 glxinfo | grep OpenGL
OpenGL vendor string: X.Org
OpenGL renderer string: Radeon 500 Series (POLARIS12, DRM 3.26.0, 4.18.0-0.bpo.1-amd64, LLVM 6.0.0)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 18.1.6

The DRI_PRIME=1 is necessary, else glxinfo would use the integrated card.

This is not necessary, but if lspcidoes not properly display the RX 550, you will need to update the PCI IDs that are used to translate IDs to actual human-readable names.

$ sudo update-pciids

Final word, if you are using TLP for power management, it may not play nice with the RX 550. With TLP enabled I get pretty horrible performance out of it (regardless of being on AC or battery).

4 thoughts on “Getting Radeon RX 550 to work under Debian Stretch

  1. Jurrien

    Thanks for your tutorial. This has helped me to get Asus Radeon RX 550 4G up and running on Debian Stretch up and running within 10 minutes!

    One small update I have namely for installing the new Linux kernel in step 2, I had to select the package linux-image-4.19.0-0.bpo.1-amd64 because when trying to install linux-image-amd64 I get an error message that the package linux-image-4.19.0-0.bpo.2-amd64 is required but not installable.

  2. Rick

    Now that Debian 10 (Buster) has been released, which of these steps are still required, and which are obsolete?

  3. Guy Post author

    I haven’t upgraded yet, but I guess you will need to have all of those package but you don’t need them anymore from the stretch-backports, as the normal repository will have recent enough versions.

  4. Gregory

    Hi, thanks for that tutorial, I got my graphic card to work with it. But I have “image errors” within different programs now. Any idea how to fix that?
    regards,
    Gregory

    PS I could still switch the graphics card for another one. Any recommendations?

Leave a Reply

Your email address will not be published. Required fields are marked *