Trouble loading firmware (error -2)
Hello,
please help with this issue, the error message is cryptic I don't know what error -2 means:
b43 bcma0:1: Direct firmware load for b43/ucode30_mimo.fw failed with error -2
b43 bcma0:1: Direct firmware load for b43/ucode30_mimo.fw failed with error -2
b43 bcma0:1: Direct firmware load for b43-open/ucode30_mimo.fw failed with error -2
b43 bcma0:1: Direct firmware load for b43-open/ucode30_mimo.fw failed with error -2
b43-phy0 ERROR: Firmware file "b43/ucode30_mimo.fw" not found b43-phy0 ERROR: Firmware file "b43-open/ucode30_mimo.fw" not found b43-phy0 ERROR: You must go to
http://wireless.kernel.org/en/users/Drivers/b43#devicefirmware and download the correct firmware for this driver version. Please carefully read all instructions on this website.
Yet, ls -al /lib/firmware/b43/ucode30_mimo.fw:
-rw-r--r-- 1 root root 39632 Apr 6 18:09 /lib/firmware/b43/ucode30_mimo.fw
it's there, as put by b43-fwcutter package (Debian 1:019-2). Though I don't have b43-open directory, tried symlinking it, didn't help.
The kernel is virgin 4.2.0 Linus, custom compiled, relevant config entries below, am I missing something?
CONFIG_B43=yCONFIG_B43_BCMA=y
# CONFIG_B43_BUSES_BCMA_AND_SSB is not setCONFIG_B43_BUSES_BCMA=y
# CONFIG_B43_BUSES_SSB is not setCONFIG_B43_BCMA_PIO=yCONFIG_B43_PHY_N=y
# CONFIG_B43_PHY_HT is not set
# CONFIG_B43_DEBUG is not set
# CONFIG_B43LEGACY is not setCONFIG_BCMA=yCONFIG_BCMA_BLOCKIO=yCONFIG_BCMA_HOST_PCI_POSSIBLE=yCONFIG_BCMA_HOST_PCI=y
# CONFIG_BCMA_HOST_SOC is not setCONFIG_BCMA_DRIVER_PCI=y
# CONFIG_BCMA_DRIVER_GMAC_CMN is not set
# CONFIG_BCMA_DEBUG is not set
CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE=""
# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
Thanks for any help and please Cc: (not subscribed).
Signature · 1 line
Zlatko
Quoted 24 lines · Zlatko Calusic
Hello,
please help with this issue, the error message is cryptic I don't know what error -2 means:
b43 bcma0:1: Direct firmware load for b43/ucode30_mimo.fw failed with error -2
b43 bcma0:1: Direct firmware load for b43/ucode30_mimo.fw failed with error -2
b43 bcma0:1: Direct firmware load for b43-open/ucode30_mimo.fw failed with error -2
b43 bcma0:1: Direct firmware load for b43-open/ucode30_mimo.fw failed with error -2
b43-phy0 ERROR: Firmware file "b43/ucode30_mimo.fw" not found b43-phy0 ERROR: Firmware file "b43-open/ucode30_mimo.fw" not found b43-phy0 ERROR: You must go to
http://wireless.kernel.org/en/users/Drivers/b43#devicefirmware and download the correct firmware for this driver version. Please carefully read all instructions on this website.Yet, ls -al
/lib/firmware/b43/ucode30_mimo.fw:-rw-r--r-- 1 root root 39632 Apr 6 18:09
/lib/firmware/b43/ucode30_mimo.fw
Quoted 7 lines
it's there, as put by b43-fwcutter package (Debian 1:019-2). Though I don't have b43-open directory, tried symlinking it, didn't help.
The kernel is virgin 4.2.0 Linus, custom compiled, relevant config entries below, am I missing something?
CONFIG_B43=y
Are you using an initrd? The b43 driver tries to load the firmware when it is initialised. If b43 is builtin (not a module) then the load will happen at boot time - when the initrd is mounted, but before the real root - and the firmware won't be found. The solution is to either copy the firmware to the initrd, or build b43 as a module and make sure the module isn't on the initrd.
Quoted 1 line
CONFIG_FIRMWARE_IN_KERNEL=y
Trying to include the firmware blobs in to the kernel binary is unlikely to work for b43, because b43/main.c only defines 7 firmware files in MODULE_FIRMWARE(). There are ~117 firmware files in /lib/firmware/b43 and your wifi card requires some subset of those, probably not the 7 that are defined.
Quoted 40 lines · Chris Bainbridge
Quoted 24 lines · Zlatko Calusic
Hello,
please help with this issue, the error message is cryptic I don't know what error -2 means:
b43 bcma0:1: Direct firmware load for b43/ucode30_mimo.fw failed with error -2
b43 bcma0:1: Direct firmware load for b43/ucode30_mimo.fw failed with error -2
b43 bcma0:1: Direct firmware load for b43-open/ucode30_mimo.fw failed with error -2
b43 bcma0:1: Direct firmware load for b43-open/ucode30_mimo.fw failed with error -2
b43-phy0 ERROR: Firmware file "b43/ucode30_mimo.fw" not found b43-phy0 ERROR: Firmware file "b43-open/ucode30_mimo.fw" not found b43-phy0 ERROR: You must go to
http://wireless.kernel.org/en/users/Drivers/b43#devicefirmware and download the correct firmware for this driver version. Please carefully read all instructions on this website.Yet, ls -al
/lib/firmware/b43/ucode30_mimo.fw:-rw-r--r-- 1 root root 39632 Apr 6 18:09
/lib/firmware/b43/ucode30_mimo.fwQuoted 7 lines
it's there, as put by b43-fwcutter package (Debian 1:019-2). Though I don't have b43-open directory, tried symlinking it, didn't help.
The kernel is virgin 4.2.0 Linus, custom compiled, relevant config entries below, am I missing something?
CONFIG_B43=yAre you using an initrd? The b43 driver tries to load the firmware when it is initialised. If b43 is builtin (not a module) then the load will happen at boot time - when the initrd is mounted, but before the real root - and the firmware won't be found. The solution is to either copy the firmware to the initrd, or build b43 as a module and make sure the module isn't on the initrd.
Quoted 8 lines
Quoted 1 line
CONFIG_FIRMWARE_IN_KERNEL=yTrying to include the firmware blobs in to the kernel binary is unlikely to work for b43, because
b43/main.conly defines 7 firmware files inMODULE_FIRMWARE(). There are ~117 firmware files in/lib/firmware/b43and your wifi card requires some subset of those, probably not the 7 that are defined.
Thank you very much Chris for this great reply. I would've spent lots of time trying to figure this out alone.
First I set CONFIG_FIRMWARE_IN_KERNEL=n as it obviously doesn't help my case. Still it didn't work because initramfs is not pulling the needed firmware. This I solved with a simple /etc/initramfs-tools/hooks/b43 hook:
#! /bin/sh -e
mkdir -p "${DESTDIR}/lib/firmware"
cp -a /lib/firmware/b43 "${DESTDIR}/lib/firmware"
And now all is well, firmware gets loaded, wifi works.
Best regards,
Signature · 1 line
Zlatko