52

After sudo apt-get dist-upgrade, I saw the following output in my terminal:

Setting up linux-modules-extra-4.18.0-16-generic (4.18.0-16.17) ...
Setting up linux-image-generic (4.18.0.16.17) ...
Setting up linux-headers-generic (4.18.0.16.17) ...
Setting up linux-generic (4.18.0.16.17) ...
Processing triggers for linux-image-4.18.0-16-generic (4.18.0-16.17) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.18.0-16-generic
W: Possible missing firmware /lib/firmware/amdgpu/vega12_gpu_info.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_asd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_sos.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_asd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_sos.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_rlc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_mec2.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_mec.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_me.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_pfp.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_ce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_rlc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_mec2.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_mec.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_me.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_pfp.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_ce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_sdma1.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_sdma.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_sdma1.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_sdma.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_uvd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_uvd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_vce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_vce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_smc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_smc.bin for module amdgpu
I: The initramfs will attempt to resume from /dev/dm-2
I: (/dev/mapper/ubuntu--vg-swap_1)
I: Set the RESUME variable to override this.
/etc/kernel/postinst.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.18.0-16-generic
Found initrd image: /boot/initrd.img-4.18.0-16-generic
Found linux image: /boot/vmlinuz-4.18.0-15-generic
Found initrd image: /boot/initrd.img-4.18.0-15-generic
Found linux image: /boot/vmlinuz-4.18.0-10-generic
Found initrd image: /boot/initrd.img-4.18.0-10-generic
Adding boot menu entry for EFI firmware configuration
done

Can someone tell me where to find and how to install the missing firmware?

My graphic card is RADEON RX VEGA M

3
  • 2
    Do you have an AMD graphics adapter?
    – Pilot6
    Mar 9, 2019 at 9:43
  • How do I know that? I edited my graphic card I am using
    – rm -rf
    Mar 9, 2019 at 9:46
  • I have encountered a similar problem... I got a listing of W: Possible missing firmware... then, when I tried reproducing in order to post my question, I received no such warnings... and, since my screen has cleared and I failed to capture the output of warnings, I do not know which files were identified. I presume the inconsistency has to do with WHICH set of packages I had been installing...
    – TheGeeko61
    Nov 1, 2020 at 19:04

5 Answers 5

49

You can find firmware at linux-firmware git

It looks like the missing firmware files are there.

You can git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git and copy the missing files to /lib/firmware/amdgpu.

8
  • 21
    +1. However, future readers, take into account that you may break your system if you put firmware files for a card that is not yet supported by your MESA driver. That happened to me while putting navi10_* firmware files for my RX 5700 card while having MESA 19.1. It broke my system and had to live-usb-recover it. Solution: Also (in addition to adding firmware files) upgrade MESA, then everything will work. I managed to do that through a chroot from within the live :) Sep 29, 2019 at 7:45
  • 1
    You can't break your system this way. You can always boot in recovery mode and revert if anything is wrong. But it lloks very ullikely to me.
    – Pilot6
    Jan 26, 2020 at 15:49
  • 2
    Unlikely or not, it happened to me. So I thought that it may be useful to provide that info as a comment; and I also added my anecdotal solution because the recovery mode was not working for me --maybe I was doing something wrong, I don't really remember. Jan 27, 2020 at 11:29
  • 2
    What if firmware that is missing on my AMD card is not in that git repo, is it just a matter of waiting? Eg. navi10_mes.bin and arcturus_****.bin (10 files) - I have a Radeon 550 Sep 23, 2020 at 10:13
  • 2
    arcturus files not found! Dec 27, 2020 at 23:27
25

Update: this is my amateur approach to just “making things work” — there are better answers out there and this probably isn’t the most stable approach. Linux in the home user space is essentially about learning. If you break something you will need to learn to fix it, or start over! This is the case with any system in computing. The sooner you learn to deal with that the sooner you will find a way to “fish for yourself” rather than rely on handout solutions — which might be imperfect.

Do not troubleshoot a business environment with this solution. You have been warned.

——— To save time for new users, and people unfamiliar with the terminal -- the following commands can be copied and pasted directly for ease of use. Please make sure to have git installed, if it's not open a terminal (ctrl + alt + t in most cases) and enter the following command: sudo apt install git -y

If apt complains about updating, update and upgrade with: sudo apt update && sudo apt upgrade -y

then install git with the first command.

The firmware files needed for this can be found at https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware.git

if you've already got git installed, this can be done by typing cd ~/Documents && git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware.git

After you've cloned the repository using the above command it's important to put the files in the right place so the program "update-initramfs" can find them and make use of them.

To do this simply enter in the terminal the following command (for ubuntu, as of 18.04)

sudo cp ~/Documents/linux-firmware/amdgpu/* /lib/firmware/amdgpu && sudo update-initramfs -k all -u -v

The above commands assumes you are updating your initramfs image and will use all kernel versions available on the system at the time.

With all this done, APT should no longer complain. :D

5
  • how does one update their initramfs image after they get the firmware and copy it to the right directory? (newbie who needs a lot of hand holding).
    – user25406
    Oct 6, 2020 at 15:06
  • 1
    @user25406 I am not going to update this answer, but you can update with the commands of either sudo update-initramfs -u -k $(uname -r) or sudo update-initramfs -u -k all.
    – Terrance
    Nov 20, 2020 at 15:33
  • 1
    arcturus files not found Dec 28, 2020 at 0:15
  • 2
    But why we have to do this manually? Ubuntu should have or get those files automatically.
    – Atif Ali
    Jan 23, 2021 at 11:25
  • This is still a valid approach for someone who has to hack around the distro/Ubuntu failing to include recent firmware in their linux-firmware package, and also valid for someone needing "bleeding edge" firmware fixes that are not yet packaged with Ubuntu.
    – JPvRiel
    Dec 8, 2021 at 10:36
12

Update as of Jan 2022, as per linux-firmware 1.187.24 source package in Ubuntu, the change-log reads:

amdgpu: add UVD firmware for SI asics (LP: #1953249)

So now simply updating to the latest linux-firmware package may resolve the issues specific to AMD Southern Islands missing firmware.

Previous answer/alternate work-around left below for posterity as other AMD models and firmware could encounter the same issue if/when Ubuntu maintainers update the kernel and AMD driver modules without remembering to update the related firmware package.


Previous answers suggest directly downloading firmware from linux-firmware git. This answer provides an alternative approach the tries to replicate how the Ubuntu release test cycle works more closely and could represent a "more widely tested" combination of official release Kernel with related release firmware.

Downloading directly from the git repo has subtle implications:

  • It can end up mixing potentially very new firmware with possibly slightly older kernel modules which risks straying onto a lesser tested combination firmware vs kernel driver modules.
  • UEFI secure boot may not work when the firmware has not been appropriately signed and gets included into initramfs.

An alternative, assuming a HWE stack, is to try match the release test cycle one assumes happens between the kernel and firmware versions.

  • Get your current release (cat /etc/lsb-release). E.g. "Ubuntu 20.04.3 LTS":
  • Get your kernel version (uname -a). E.g. 5.11.
  • If curious, understand what firmware package version is available from the current repo (apt show linux-firmware | grep Version)
  • Figure out which interim release matches the HWE kernel/stack via https://ubuntu.com/about/release-cycle#ubuntu-kernel-release-cycle. E.g. 5.11 was back-ported to 20.04.3 LTS from Ubuntu 21.04 (hirsute).
  • Use Ubuntu package search (https://packages.ubuntu.com/search?keywords=linux-firmware&searchon=names) and locate the linux-firmware package version that fits with that particular interim release and kernel combination. E.g. https://packages.ubuntu.com/hirsute-updates/linux-firmware was released along with Kernel 5.11 with hirsute (21.04).
  • Download an manually install the .deb from the hirsute (21.04) release.
  • By using the .deb pacakage from Ubuntu, hopefully the firmware is correctly signed to work with secure boot (for those not stuck on legacy BIOS and with UEFI who care about these mitigations against rootkits and bootoader malware).

E.g. a match for 20.04.3 LTS with kernel 5.11 to linux-firmware from hirsute (21.04) which was v 1.197.3 while the focal (20.04) repo had left linux-firmware out of date on v 1.187.20.

curl -OL http://archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.197.3_all.deb
sudo dpkg -i linux-firmware_1.197.3_all.deb

Extra hint: Download the deb from your closest mirror because this package is almost 200MB large and the main archive may be slow.

To explain further, Ubuntu HWE stack maintainers updated the kernel (and amdgpu driver) but unfortunately failed to keep the linux-firmware package up to date. So the amdgpu driver was clearly tested/developed on top of firmware that Ubuntu included with the newer interim non-LTS, but then failed to include/back-port with their HWE kernel refresh to the previous LTS.

Everyone getting this sort of error, please register a launchpad account and add your vote with "This bug affects me" the help get Ubuntu to pay some attention and keep HWE kernels and linux-firmware packages in better lockstep: https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1953249

One drawback to this approach is there will be no automatic updates on the firmware anymore, but it's less complex manually installing the .deb than trying mix in the interim release repos (which would require apt preferences package name pinning and priorities)

Related:

3
  • Whao there buddy!If a user is playing around with firmware they need to either know what they’re doing or be willing to fix things when they break. As with any non-mission critical application (like this one) various solutions can be used all with varying degrees of success. The approach I suggest is valid, and worthy of application. This isn’t a production environment. And if it was getting advice from places such as this would be a mistake. Go work for Apple if you’re going to write condescending comments. The attitude absolutely could have been left out.
    – Crux161
    Dec 6, 2021 at 18:25
  • 1
    @Crux161, sorry not intending to be condescending - I should work on tone. The simple approach of just downloading the firmware files should work most of the time when secure boot is not enabled. Just providing an alternative way to do what I think Ubuntu missed and compensate for how Ubuntu failed to keep the firmware package in sync with the kernel version they test on. Some of us use Ubuntu in prod environments and sadly stack-overflow site advice does end up copy pasted into prod environments weather we like it or not (even if I agree it's inappropriate) ;-)
    – JPvRiel
    Dec 7, 2021 at 10:22
  • 1
    Upgrading linux-firmware also fixes errors related to "drm:si_dpm_set_power_state amdgpu" Dec 17, 2022 at 10:11
0

I had the same issue when upgrading to the latest Linux kernel. To fix it, I followed @Pilot6's solution to update Linux firmwares from git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git, but unfortunately the issue still persisted.

I then suspected that the graphics drivers needed to be upgraded, so I tried fixing it by upgrading the graphics drivers from the oibaf/graphics-drivers PPA:

  1. Add the oibaf/graphics-drivers PPA:
sudo add-apt-repository ppa:oibaf/graphics-drivers
  1. Update the package lists:
sudo apt update
  1. Upgrade the graphics drivers:
sudo apt upgrade
  1. Install the latest Linux kernel.

After following these steps, the issue was resolved and everything worked smoothly.

-9

Download files from this repository and place them in your computer

6
  • 1
    What is the goal of this "solution"? Remove the warning?
    – Pilot6
    Sep 28, 2019 at 8:21
  • One day you'll need this file, and your system won't know it's a dummy file there. Nov 4, 2019 at 17:06
  • github.com/M-Bab/linux-kernel-amdgpu-binaries/issues/82 a comment on page "The code status and the binary file support does not always match. Often the code is ahead and already ready to include some firmware binary blobs that are not published yet. This was the case for Raven or Vega. I regularly grep the newest blobs from ..." and so on. A better solution is to wait for that update. But my system works great.
    – netwazimu
    Nov 6, 2019 at 7:00
  • @netwazimu, I guess you don't wanna fool yourself after ages thinking that there ain't any missing firmware... And then, you'll know better to do with it Mar 6, 2020 at 14:58
  • If I had the time and manpower I could create the library myself and fix the missing firmware.
    – netwazimu
    Mar 9, 2020 at 6:32

Not the answer you're looking for? Browse other questions tagged or ask your own question.