86

When I run a kernel or NVIDIA driver update on my 16.04, this triggers an initramfs rebuild which outputs the warning below:

Processing triggers for initramfs-tools (0.122ubuntu8.1) ...
update-initramfs: Generating /boot/initrd.img-4.4.0-34-generic
W: Possible missing firmware /lib/firmware/i915/skl_guc_ver6.bin for module i915_bpo

I have a notebook with two graphics chips, an NVIDIA GeForce 940M and the Intel i5-6200U's integrated graphics.

The device in use is my NVIDIA card:

$ inxi -G
Graphics:  Card-1: Intel Sky Lake Integrated Graphics
           Card-2: NVIDIA GM108M [GeForce 940M]
           Display Server: X.Org 1.18.3 driver: nvidia Resolution: 1920x1080@60.03hz
           GLX Renderer: GeForce 940M/PCIe/SSE2 GLX Version: 4.5.0 NVIDIA 367.35

Here's the output of lshw -c video, corresponding to my Intel graphics chip which should use that driver:

    *-display         
         description: VGA compatible controller
         product: Sky Lake Integrated Graphics
         vendor: Intel Corporation
         physical id: 2
         bus info: pci@0000:00:02.0
         version: 07
         width: 64 bits
         clock: 33MHz
         capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
         configuration: driver=i915_bpo latency=0
         resources: irq:125 memory:a2000000-a2ffffff memory:b0000000-bfffffff ioport:5000(size=64)

The file in the warning does not exist, only those:

$ ll /lib/firmware/i915/
total 336
drwxr-xr-x  2 root root   4096 Aug 11 13:24 ./
drwxr-xr-x 74 root root  32768 Aug 11 13:24 ../
-rw-r--r--  1 root root   5872 Jul 21 17:03 bxt_dmc_ver1_04.bin
-rw-r--r--  1 root root   5872 Jul 21 17:03 bxt_dmc_ver1_05.bin
-rw-r--r--  1 root root   8380 Jul 21 17:03 bxt_dmc_ver1_06.bin
-rw-r--r--  1 root root   8380 Jul 21 17:05 bxt_dmc_ver1_07.bin
lrwxrwxrwx  1 root root     19 Jul 21 17:05 bxt_dmc_ver1.bin -> bxt_dmc_ver1_07.bin
-rw-r--r--  1 root root   8824 Jul 21 17:03 skl_dmc_ver1_23.bin
-rw-r--r--  1 root root   8928 Jul 12 21:33 skl_dmc_ver1_26.bin
lrwxrwxrwx  1 root root     19 Jul 12 21:33 skl_dmc_ver1.bin -> skl_dmc_ver1_26.bin
-rw-r--r--  1 root root 109636 Jul 21 17:03 skl_guc_ver1_1059.bin
lrwxrwxrwx  1 root root     21 Jul 21 17:03 skl_guc_ver1.bin -> skl_guc_ver1_1059.bin
-rw-r--r--  1 root root 128320 Jul 21 17:03 skl_guc_ver4_3.bin
lrwxrwxrwx  1 root root     18 Jul 21 17:03 skl_guc_ver4.bin -> skl_guc_ver4_3.bin

The latest driver package seems to be installed though:

$ apt-cache policy xserver-xorg-video-intel
xserver-xorg-video-intel:
  Installed: 2:2.99.917+git20160325-1ubuntu1
  Candidate: 2:2.99.917+git20160325-1ubuntu1
  Version table:
 *** 2:2.99.917+git20160325-1ubuntu1 500
        500 http://ftp.uni-stuttgart.de/ubuntu xenial/main amd64 Packages
        100 /var/lib/dpkg/status

What does this warning mean exactly and how can I fix it?

Pablo Bianchi
  • 15,657
Byte Commander
  • 107,489
  • 3
    I got W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1.bin for module i915_bpo and my CPU is SKylake with Intel HD in it. – Csaba Toth Oct 15 '16 at 17:20
  • Additionally, I'm using the 1.158 version of the linux-firmware package instead of the mainline 1.157 because only that provided working firmware for my wifi (killer wireless). – Csaba Toth Oct 15 '16 at 17:24
  • 3
    @CsabaToth kbl stands for Kabylake, which is the successor of Skylake. As you don't have such a CPU, you can either ignore the warning, or just install the Kabylake driver from the same link given in Doug Smythies' answer. – Byte Commander Oct 15 '16 at 17:49
  • Correct, i7 6820hk is just SkyLake, Kaby Lake is the next gen – Csaba Toth Oct 15 '16 at 17:56

6 Answers6

66

The driver package is somewhat lagging the kernel. In my case the missing firmware doesn't matter because I don't have a SkyLake processor, but in your case it might matter. You can get the newer firmware from here.

EDIT 1: Note the link changed, but readers should still be able to find what they need in the new link, although sometimes it can be difficult to know exactly what your are looking for.

EDIT 2: This answer should be applicable to some other new firmware requirements that have come along since this answer was originally written. For example:

W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

EDIT 3: For users that use git, this answer also works well.

Doug Smythies
  • 15,448
  • 5
  • 44
  • 61
  • Would I need to install the GuC or DMC drivers or both? – Byte Commander Aug 29 '16 at 00:50
  • If I understand correctly, the error listed in your question, you would only need the GuC firmware. However, I'm not really sure. – Doug Smythies Aug 29 '16 at 02:54
  • 3
    I installed both GuC and DMC drivers for Skylake successfully and I think the warning should be gone now. Thanks. – Byte Commander Aug 29 '16 at 19:06
  • Oh no! I just ran the kernel update from 4.4.0-34 to 4.4.0-36 and now I have this warning instead: W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1.bin for module i915_bpo - Where would I get that kbl_dmc_ver1.bin file? – Byte Commander Aug 29 '16 at 19:26
  • 4
    Ah, I found it. Looks like the new kernel update added support for the new Kabylake Intel processors and now it would also like to have a module driver for those. Probably it's superfluous as I don't have a Kabylake CPU, but just to get the warning away, I also downloaded and installed the kbl DMC driver from the site you linked. It looks fine again now. – Byte Commander Aug 29 '16 at 19:33
  • @Doug Smythies Thanks! I used this one on X1 Yoga (ubuntu 16.04.1) – eldad-a Sep 14 '16 at 18:58
  • While installing the DUC driver, I am getting the following error:
    `cp: cannot stat 'skl_guc_ver6_1.bin': No such file or directory
    ERROR: Couldn't install new firmare file
    guc/install.sh: 17: exit: Illegal number: -1`
    
    

    What to do?

    – navjotjsingh Sep 24 '16 at 08:02
  • @navjotjsingh : Do you actually have a skylake processor? If not, don't bother. – Doug Smythies Sep 24 '16 at 14:48
  • @Doug Smythies Yes. I do have a skylake processor (i5-6400). – navjotjsingh Sep 25 '16 at 08:01
  • @navjotjsingh : I just tried it, and it worked fine for me. Did you run the script as sudo? i.e. skl_guc_ver6_1$ sudo ./install.sh – Doug Smythies Sep 27 '16 at 14:26
  • Byte_Commander you don't have a kaby lake that error is irrelevant @navjotjsingh I have installed all of these fw updates and have never had a problem just doing sudo ./install.sh Check your file permission/file crc if thats not working. – JohnRB Nov 03 '16 at 19:15
  • 2
    What does "matter" mean? Will the new kernel not be able to boot or is there no real visible impact besides some warning messages? – musiKk Dec 02 '16 at 07:28
  • 3
    @musiKk: If your processor is not one that needs one of the missing firmware files, then it doesn't "matter", meaning there will be no consequence due to it being missing. For example only a Skylake processor would need the "skl" firmware. – Doug Smythies Dec 02 '16 at 14:50
  • @DougSmythies That answers what "doesn't matter" mean. ;) I just want to know if a processor that needs the newer firmware will not boot with such a kernel. Maybe it only affects a few features but generally works, I don't know. – musiKk Dec 02 '16 at 15:02
  • @musiKk: I don't know either, but my guess is that, since it can not find the proper firmware, it might be a problem, and it might not know to try to find an older version. – Doug Smythies Dec 02 '16 at 15:15
  • Just got this issue and have installed the skl_dmc one, but still getting this warning. When I tried to install kbl_dmc the warning is gone. But it's odd, because the fact that I'm still using Skylake not Kabylake. – Fery W Dec 15 '16 at 01:31
  • 1
    @FeryArdiant: Yes, the warnings are not related to which processor you are actually using, just if you have the firmware or not. – Doug Smythies Dec 15 '16 at 01:34
  • The link to graphics firmwares does not work anymore. Does anyone know where one can get firmwares now? – Nickolai Leschov Feb 01 '17 at 22:34
  • @DougSmythies Which one is the firmware, there? – Nickolai Leschov Feb 02 '17 at 18:08
  • @NickolaiLeschov : What you need depends on which processor you have. And yes, with the new link it is not as obvious which is needed. Post the particular missing firmware warning you are wanting to solve herein, and I'll see if I can find specifically what you need. – Doug Smythies Feb 02 '17 at 18:56
  • My friend, you saved my life here, I spend a entire day with this, why I didn't look I at your answer closer? – developer_hatch Aug 01 '17 at 13:14
25

May 20, 2019 Update

To answer your question you don't need to update drivers for a processor you aren't running but it is nice to see the warnings disappear when you do.

Today I received these warning:

update-initramfs: Generating /boot/initrd.img-5.0.1-050001-generic
W: Possible missing firmware /lib/firmware/i915/skl_dmc_ver1_27.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_04.bin for module i915
W: Possible missing firmware /lib/firmware/i915/cnl_dmc_ver1_07.bin for module i915
W: Possible missing firmware /lib/firmware/i915/icl_dmc_ver1_07.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_39.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver9_29.bin for module i915
W: Possible missing firmware /lib/firmware/i915/skl_guc_ver9_33.bin for module i915

I downloaded the blobs (described in next section) and then used:

$ sudo cp ~/Downloads/*.bin /lib/firmware/i915/

$ sudo update-initramfs -u update-initramfs: Generating /boot/initrd.img-5.0.1-050001-generic

Now my Sky Lake (skl) drivers are up to date and I can try out latest kernel parameters recommended on the internet. Warning messages for future processors Kaby Lake (kbl), Cannon Lake (cnl) and Ice Lake (icl) are gone making life less stressful.


May 26, 2018 Update

Minor revision August 6, 2018.

New download screen of "blobs"

Recently Intel has created a new download page and new web page layout:

Intel i915 firmware blobs

The download files are now called firmware blobs which is new-speak for firmware drivers. It stands for Binary Large OBject (BLOB).

Drivers are sorted by processor:

  • bxt Broxton, Canceled in 2016, successor to Cherry Trail processors
  • kbl Kabylake, 7th generation, eg i7-7700
  • skl Skylake, 6th generation, eg i7-6700

Then drivers are organized by subgroup (full explanation here):

  • GUC - GuC is designed to perform graphics workload scheduling on the various graphics parallel engines.
  • DMC - DMC provides additional graphics low-power idle states.
  • HUC - HuC is designed to offload some of the media functions from the CPU to GPU.

Match error message to driver needed

Compare the error message you are receiving by update-initramfs or update-grub to find the missing driver. In your example the message was "/lib/firmware/i915/kbl_guc_ver9_14.bin" so you are missing the Kabylake GuC called: kbl_guc_ver9_14.bin in the web page shown above. You don't want the newer one: kbl_guc_ver9_39.bin

Download driver needed

There is no more installation script as in past versions. Simply highlight the missing driver (blob) and click on it. This screen appears:

Intel i915 drivers download.png

Initially you only see the "hex dump" but after clicking the link titled plain a download window appears as illustrated above.

Click "Save File"

Install driver with simple sudo cp (copy command)

After downloading, installation is a simple sudo cp (copy command) and there are no complicated tar commands, or ./script_name installation steps.

Quick Install

cd ~/Downloads
sudo cp kbl_guc_ver9_14.bin /lib/firmware/i915
sudo cp bxt_guc_ver8_7.bin /lib/firmware/i915

IMPORTANT: Replace kbl_guc_ver9_14.bin and bxt_guc_ver8_7.bin above with the missing driver names you downloaded.

VOILA! New driver is installed. Much simpler than previous installation methods for missing Intel i915 drivers!

TL;DR Exploratory Installation

I already had the driver installed. This lengthy installation method gives you an idea of before and after effects of copying the BLOB:

$ sudo updatedb
$ llocate kbl_guc_ver9_14.bin
ACCESS      OWNER  GROUP  SIZE    MODIFIED    NAME (updatdb last ran: 2018-05-26 12:07:57)
-rw-rw-r--  rick   rick   142656  2018-05-26  /home/rick/Downloads/kbl_guc_ver9_14.bin
-rw-rw-r--  rick   rick   142656  2017-02-24  /home/rick/Downloads/kbl_guc_ver9_14/kbl_guc_ver9_14.bin
-rw-r--r--  root   root   142656  2017-10-26  /lib/firmware/i915/kbl_guc_ver9_14.bin
$ diff /home/rick/Downloads/kbl_guc_ver9_14/kbl_guc_ver9_14.bin /lib/firmware/i915/kbl_guc_ver9_14.bin
# Blank line appears here signifying no differences from previous version
$ sudo cp /home/rick/Downloads/kbl_guc_ver9_14/kbl_guc_ver9_14.bin /lib/firmware/i915
$ llocate kbl_guc_ver9_14.bin
ACCESS      OWNER  GROUP  SIZE    MODIFIED    NAME (updatdb last ran: 2018-05-26 12:07:57)
-rw-rw-r--  rick   rick   142656  2018-05-26  /home/rick/Downloads/kbl_guc_ver9_14.bin
-rw-rw-r--  rick   rick   142656  2017-02-24  /home/rick/Downloads/kbl_guc_ver9_14/kbl_guc_ver9_14.bin
-rw-r--r--  root   root   142656  2018-05-26  /lib/firmware/i915/kbl_guc_ver9_14.bin

Use the locate command below in place of llocate.


February 14, 2017 - Intel has released drivers

As per this bug report today (W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915) Intel has released the required Kabylake and Broxton drivers on their (https://01.org/linuxgraphics/downloads/firmware) web page:

Intel Graphics for Linux Drivers

Download the missing drivers for Kabylake (GuC - Ver 9.14) and (DMC - Ver 1.01) and Broxton (GuC - Ver 8.7). These are in .tar.gz and .tar.bz2 format.

Install drivers in "tar" format

Although you can run the install.sh scripts these instructions are the easiest.

Change to the download directory and verify files are there:

:~$ cd Downloads

:~/Downloads$ ll tar -rw-rw-r-- 1 rick rick 69329 Feb 14 21:05 bxtgucver87.tar.gz -rw-rw-r-- 1 rick rick 4338 Feb 14 21:06 kbldmcver101.tar.bz2 -rw-rw-r-- 1 rick rick 70402 Feb 14 21:06 kblgucver914.tar.gz

Extract the compressed tar files:

:~/Downloads$ tar -zxvf bxtgucver87.tar.gz
firmware/bxt/guc/bxt_guc_ver8_7/
firmware/bxt/guc/bxt_guc_ver8_7/install.sh
firmware/bxt/guc/bxt_guc_ver8_7/ReleaseNotes.txt
firmware/bxt/guc/bxt_guc_ver8_7/bxt_guc_ver8_7.bin

:~/Downloads$ tar -xjvf kbldmcver101.tar.bz2 kbl_dmc_ver1_01/ kbl_dmc_ver1_01/kbl_dmc_ver1_01.bin kbl_dmc_ver1_01/install.sh kbl_dmc_ver1_01/ReleaseNotes.txt

:~/Downloads$ tar -zxvf kblgucver914.tar.gz firmware/kbl/guc/kbl_guc_ver9_14/ firmware/kbl/guc/kbl_guc_ver9_14/install.sh firmware/kbl/guc/kbl_guc_ver9_14/kbl_guc_ver9_14.bin firmware/kbl/guc/kbl_guc_ver9_14/ReleaseNotes.txt

Copy the files and update initramfs

:~/Downloads$ sudo cp -t /lib/firmware/i915/ firmware/bxt/guc/bxt_guc_ver8_7/bxt_guc_ver8_7.bin kbl_dmc_ver1_01/kbl_dmc_ver1_01.bin firmware/kbl/guc/kbl_guc_ver9_14/kbl_guc_ver9_14.bin
:~/Downloads$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.9.9-040909-generic

Notice the error (warning) messages are gone!

Remove work files

:~/Downloads$ rm -r firmware kbl_dmc_ver1_01 *.tar.*

Historical (Original) Post for reference

I've had two warning messages on missing i915 drivers for Kernel's 4.6.3, 4.7.1, 4.7.2, 4.7.3 and 4.7.5. I've ignored them and things have been fine with my HD4000 Intel Integrated Graphics. I wish the same thing could be said about Nvidia and Nouvaeu.

As one answer in your link stated you can go to Intel's website to get most up-to-date Linux Graphics drivers at: intel-linux-graphics-firmwares. However when I read that site a few weeks ago I was concerned with all the possible things that can go wrong under different scenarios so I opted out.

Did you install 4.8 release candidate 6 from September 24th? That's the most current in Ubuntu I believe. You don't have to answer but I'm curious why you went with 4.8 instead of 4.7.5, ie what the differences are you need to fix things.

Edit - October 19, 2016

Now using kernel version 4.8.1 (real version and not release candidate) for over a week and things are working nicely. This is under Ubuntu 16.04 though. Ubuntu 16.10 was released October 13th and it is using Kernel version 4.8.0 I believe.

It's not my plan to keep updating this answer but I wanted to lay to rest the inference that 4.8 release candidates might have problems. The real version does not.

Edit - February 2, 2017

Now running Kernel version 4.9.5 mainline version which at this time Ubuntu 16.04 has updated it's kernel to 4.4.0-59. Intel changed it's link for Intel Graphics for Linux drivers and I updated the new link above.

Questions still remain about the warning messages generated by sudo update-initramfs -u when Kernel version > 4.8 (Ubuntu 16.10 and Ubuntu 17.04):

W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

As stated in the bug report (bugs.launchpad.net - linux firmware bug) the drivers simply do not exist and will not until a future chip called "kaby lake" is released.

Make the warning messages go away

To make the warning message go away I did the following:

$ sudo cp assembly/hello /lib/firmware/i915/kbl_dmc_ver1_01.bin
$ sudo cp assembly/hello /lib/firmware/i915/kbl_guc_ver9_14.bin
$ sudo cp assembly/hello /lib/firmware/i915/bxt_guc_ver8_7.bin
$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.9.5-040905-generic

Voila! No more warning messages.

The program "hello" is a 504 byte assembler program that says "Hello World!". You can copy any small executable to the firmware binaries given in the error messages. When Intel eventually releases them the software updater will replace them with the real versions.

How to navigate Intel Graphics for Linux website

It was asked via comments how to navigate within the the new Intel website (01.org - Linux Graphics Downloads) which presents this screen:

Intel Graphics for Linux 1

Type Ubuntu 16.04 into the search field and click the Filter button.

For Ubuntu 16.10 select the first result. In our case Ubuntu 16.04 select the second result INTEL GRAPHICS UPDATE TOOL FOR LINUX* OS V2.0.2 and this screen appears:

Intel Graphics for Linux 2

In my case I selected Ubuntu 16.04 64-bit which downloaded the file intel-graphics-update-tool_2.0.2_amd64.deb to my ~/Downloads directory.

The next step is to open the terminal and use:

cd Downloads
sudo dpkg -i intel*.deb

NOTE: Intel uses the ancients ttf font and your installation will fail if it's not on your system. At this point you need to use:

sudo apt -f install
sudo apt update
sudo apt upgrade

Now you can run the Intel Graphics for Linux Updater tool as this screen shows:

Intel Graphics for Linux 3

Add Intel signatures for Ubuntu

During apt-get update you can see warning / error messages like this:

W: GPG error: https://download.01.org/gfx/ubuntu/16.04/main xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 56A3DEF863961D39
E: The repository 'https://download.01.org/gfx/ubuntu/16.04/main xenial InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

You'll need to add Intel's signatures using:

wget --no-check-certificate https://download.01.org/gfx/RPM-GPG-KEY-ilg-4 -O - | \
sudo apt-key add -

Then update in Ubuntu:

sudo apt update
sudo apt upgrade
2

I also have faced a similar problem because I've updated the kernel from the Ubuntu Gnome 16.04 "Software" app (native package manager) and it crashed while updating.

So, I was barred to boot Ubuntu again because the linux-image was unsuccessfully generated.

To solve it from that point I did the following:

  1. Reboot linux and right after motherboard screen press Shift to enter into grub menu;
  2. Select your previous linux version from menu. In my case *4.4.0-21-generic and press Enter;
  3. Once Ubuntu is up again, uninstall the broken linux-image. In my case the *4.4.0-59-generic (I've used Synaptic package manager for it);
  4. Download and install the missing firmware from Intel page (same as Doug Smythies). In my case, I got the KabyLake kbl DMC - Ver 1.01;
  5. And finally, install again the linux kernel *4.4.0-59-generic (in my case) or just linux-generic for the latest complete generic Linux kernel.

Success! Kernel is up-to-date and all firmwares working fine!

Best regards!

  • The link to graphics firmwares does not work anymore. Does anyone know where one can get firmwares now? – Nickolai Leschov Feb 01 '17 at 22:34
  • Really? I can still open it here. However, also try the following link: http://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/tree/i915 – Matt Mello Feb 03 '17 at 12:42
1

If you are running debian (I have Debian GNU/Linux buster) just follow these steps:

  1. create the folder:

    sudo mkdir -p /lib/firmware/i915
    
  2. copy all files from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915 to this folder

  3. Reconfigure the initramfs-tools package:

    sudo dpkg-reconfigure initramfs-tools
    
  • The command for Ubuntu is something like sudo update-initramfs -u but I'm on phone so can't confirm. Debian questions are off-topic here so your answer is unlikely to influence many people. – WinEunuuchs2Unix May 07 '19 at 19:43
0

The firmware-blob-variant with sudo cp is dirty, this is not a clean installation.

As clean installation like this:

Download the newest linux-firmware from here and install the saved package via terminal with apt:

$ cd Downloads

$ sudo apt install ./linux-firmware_1.190_all.deb

Simon Sudler
  • 3,931
  • 3
  • 21
  • 34
0

Here's a little script based on the top answers to automate the download and installation of the firmware blob files the system is complaining about.

First it runs a plain update-initramfs -u, capturing the warnings about any missing i915 firmware files. Then it will try to download the files with those names directly from the Linux firmware git repository to a temp directory, before moving them over to your appropriate firmware folder with the right ownership and permissions.

#!/bin/bash

WARNING_PATTERN='(?<=W: Possible missing firmware /lib/firmware/i915/)[\w.]+.bin(?= for module i915)' DOWNLOAD_URL='https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915/{}' FIRMWARE_DIR='/lib/firmware/i915'

shopt -s nullglob

WORKDIR="$(mktemp -d)" cd "$WORKDIR" || exit 1 echo "Will check for missing i915 firmware and download blobs in '$WORKDIR'."

sudo update-initramfs -u |& grep -Po "$WARNING_PATTERN" | xargs -t -I {} curl -O "$DOWNLOAD_URL"

if [[ -n "$(shopt -s nullglob; echo ./*.bin)" ]] ; then sudo chown root: ./.bin sudo chmod 644 ./.bin sudo mv ./*.bin "$FIRMWARE_DIR" sudo update-initramfs -u else echo 'No missing firmware found/downloaded.' fi

rmdir "$WORKDIR"

This seems to work fine for me, but no guarantees.

Byte Commander
  • 107,489