The Linux kernel is trying to load firmware from a file under /lib/firmware
to install it in to the device and not finding it. (In these cases this usually needs to be done every time the device is initialized.) The path given in the error message is relative to /lib/firmware
; you need to find the correct firmware and put it in that file. There are several ways to do this.
Install a Package Containing the Firmware
There are a number of packages that contain open source or freely distributable device firmware; aptitude search firmware
will list many of them. The easiest way to see if one of them has what you need is to use the apt-file
command to search for a fragment of the name of the missing firmware file:
sudo -s
apt-get update
apt-get install apt-file
apt-file update
apt-file search bcrm/BCM2070 # Example partitial filename
If apt-file search
shows a package that has it, installing the package with apt-get
should fix your problem.
Use a Firmware Installer Package
Some firmware cannot be distributed in Debian packages themselves, but there are packages that can download the firmware from an authorized source and place it in /lib/firmware
for you. One example of this is the firmware-b43-installer
package.
Rename an Existing Firmware File
In some cases (such as this one) a newer revision of the device can use the older firmware in which case you can symlink the newer filename to the old one, e.g.
sudo -s
cd /lib/firmware/bcrm
ln -s BCM20702A0-0a5c-21e8.hcd BCM20702A1-0a5c-21e8.hcd
This additional step may apply to any of the methods given above or below, but try first to ascertain (via searching the web) that the two revisions do indeed use the same firmware.
Copy the Firmware from Another System
If you have a another Linux system that works with the device, copying the firmware file from that system may work. Searching the logs on that device for something along the lines of, e.g. Flash firmware /lib/firmware/BCM43430A1.hcd
may lead you to the specific file you need to copy.
Find the Firmware on the Web
Searching the web may lead you to a document or post describing where you can download the firmware you need.
Convert the Windows Firmware File
In some cases you can get proprietary firmware from a Windows machine and use a tool such as hex2hcd to convert the file to a form you can use under Linux. One example:
It is possible to correct it using the firmware extracted by the windows driver package.
You can copy BCM20702A1_001_002.014.1443.1453.hex
from \windows\system32\driver
from your windows installation and you can use hex2hcd (https://github.com/jessesung/hex2hcd) to convert it and copy it on /lib/firmware/brcm/BCM20702A0-0a5c-21e6.hcd
Further Reading
There's more that can cause trouble even if you have the right firmware file, such as having multiple versions of the firmware, multiple drivers, and dealing with different versions of the "same" device. The linuxwireless.org b43 and b43legacy page gives examples with a specific device of the various techniques that can help you to handle this.