Open colemickens opened 3 years ago
I suspect I'm not the only one to have noticed this:
Of course, I have no idea where ALARM is getting that file from, or why they're also seemingly unable to use the one this repo provides.
What do you get from ls -l /lib/firmware/brcm/brcmfmac43430*
? The 43430 firmware has a built in CLM database so doesn't need an external clm_blob file - notice that this repo doesn't contain one.
I note that the Linux firmware repo includes a cypress/cyfmac43430-sdio.clm_blob
(md5 9ff46519b8b8c2cab323322c9d983873). If you find a brcmfmac43430-sdio.clm_blob
, what is its md5sum
?
A fresh install of the latest RPiOS image gives working WLAN on the Zero W. Allowing it to self-update (not a quick process) fails to break it. For comparison, after a reboot the kernel log contains:
$ dmesg | grep brcmfmac
[ 23.762658] brcmfmac: F1 signature read @0x18000000=0x1541a9a6
[ 23.992846] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
[ 24.004350] usbcore: registered new interface driver brcmfmac
[ 24.369277] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
[ 24.369616] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
[ 24.369808] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[ 24.371193] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Oct 22 2019 01:59:28 version 7.45.98.94 (r723000 CY) FWID 01-3b33decd
[ 48.592692] brcmfmac: brcmf_cfg80211_set_power_mgmt: power save enabled
rpizero2% ls -l /run/current-system/firmware/brcm/brcmfmac43430*
lrwxrwxrwx 1 root root 120 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430a0-sdio.bin -> /nix/store/1qb4kf2jkkdw7mqzahfgnk4zmhxbvgv0-firmware-linux-nonfree-2021-08-18/lib/firmware/brcm/brcmfmac43430a0-sdio.bin
lrwxrwxrwx 1 root root 131 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430a0-sdio.ilife-S806.txt -> /nix/store/1qb4kf2jkkdw7mqzahfgnk4zmhxbvgv0-firmware-linux-nonfree-2021-08-18/lib/firmware/brcm/brcmfmac43430a0-sdio.ilife-S806.txt
lrwxrwxrwx 1 root root 139 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430a0-sdio.jumper-ezpad-mini3.txt -> /nix/store/1qb4kf2jkkdw7mqzahfgnk4zmhxbvgv0-firmware-linux-nonfree-2021-08-18/lib/firmware/brcm/brcmfmac43430a0-sdio.jumper-ezpad-mini3.txt
lrwxrwxrwx 1 root root 134 Jan 1 1970 '/run/current-system/firmware/brcm/brcmfmac43430a0-sdio.ONDA-V80 PLUS.txt' -> '/nix/store/1qb4kf2jkkdw7mqzahfgnk4zmhxbvgv0-firmware-linux-nonfree-2021-08-18/lib/firmware/brcm/brcmfmac43430a0-sdio.ONDA-V80 PLUS.txt'
lrwxrwxrwx 1 root root 163 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430-sdio.AP6212.txt -> /nix/store/xarcz7nl4l4wdx2s81zr0rr2sqgqlaq0-raspberrypi-wireless-firmware-armv6l-unknown-linux-gnueabihf-2021-06-28/lib/firmware/brcm/brcmfmac43430-sdio.AP6212.txt
lrwxrwxrwx 1 root root 156 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430-sdio.bin -> /nix/store/xarcz7nl4l4wdx2s81zr0rr2sqgqlaq0-raspberrypi-wireless-firmware-armv6l-unknown-linux-gnueabihf-2021-06-28/lib/firmware/brcm/brcmfmac43430-sdio.bin
lrwxrwxrwx 1 root root 123 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430-sdio.clm_blob -> /nix/store/1qb4kf2jkkdw7mqzahfgnk4zmhxbvgv0-firmware-linux-nonfree-2021-08-18/lib/firmware/brcm/brcmfmac43430-sdio.clm_blob
lrwxrwxrwx 1 root root 174 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430-sdio.Hampoo-D2D3_Vi8A1.txt -> /nix/store/xarcz7nl4l4wdx2s81zr0rr2sqgqlaq0-raspberrypi-wireless-firmware-armv6l-unknown-linux-gnueabihf-2021-06-28/lib/firmware/brcm/brcmfmac43430-sdio.Hampoo-D2D3_Vi8A1.txt
lrwxrwxrwx 1 root root 163 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430-sdio.MUR1DX.txt -> /nix/store/xarcz7nl4l4wdx2s81zr0rr2sqgqlaq0-raspberrypi-wireless-firmware-armv6l-unknown-linux-gnueabihf-2021-06-28/lib/firmware/brcm/brcmfmac43430-sdio.MUR1DX.txt
lrwxrwxrwx 1 root root 140 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt -> /nix/store/1qb4kf2jkkdw7mqzahfgnk4zmhxbvgv0-firmware-linux-nonfree-2021-08-18/lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt
lrwxrwxrwx 1 root root 143 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.txt -> /nix/store/1qb4kf2jkkdw7mqzahfgnk4zmhxbvgv0-firmware-linux-nonfree-2021-08-18/lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.txt
lrwxrwxrwx 1 root root 172 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430-sdio.raspberrypi-rpi.txt -> /nix/store/xarcz7nl4l4wdx2s81zr0rr2sqgqlaq0-raspberrypi-wireless-firmware-armv6l-unknown-linux-gnueabihf-2021-06-28/lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi-rpi.txt
lrwxrwxrwx 1 root root 139 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-plus.txt -> /nix/store/1qb4kf2jkkdw7mqzahfgnk4zmhxbvgv0-firmware-linux-nonfree-2021-08-18/lib/firmware/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-plus.txt
lrwxrwxrwx 1 root root 140 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-ultra.txt -> /nix/store/1qb4kf2jkkdw7mqzahfgnk4zmhxbvgv0-firmware-linux-nonfree-2021-08-18/lib/firmware/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-ultra.txt
lrwxrwxrwx 1 root root 139 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-zero.txt -> /nix/store/1qb4kf2jkkdw7mqzahfgnk4zmhxbvgv0-firmware-linux-nonfree-2021-08-18/lib/firmware/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-zero.txt
lrwxrwxrwx 1 root root 134 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430-sdio.sinovoip,bpi-m3.txt -> /nix/store/1qb4kf2jkkdw7mqzahfgnk4zmhxbvgv0-firmware-linux-nonfree-2021-08-18/lib/firmware/brcm/brcmfmac43430-sdio.sinovoip,bpi-m3.txt
lrwxrwxrwx 1 root root 156 Jan 1 1970 /run/current-system/firmware/brcm/brcmfmac43430-sdio.txt -> /nix/store/xarcz7nl4l4wdx2s81zr0rr2sqgqlaq0-raspberrypi-wireless-firmware-armv6l-unknown-linux-gnueabihf-2021-06-28/lib/firmware/brcm/brcmfmac43430-sdio.txt
Indeed, the clm_blob
is indeed coming from firmware-linux-nonfree
rather than the raspberrypi-wireless-firmware
package:
/nix/store/1qb4kf2jkkdw7mqzahfgnk4zmhxbvgv0-firmware-linux-nonfree-2021-08-18/lib/firmware/brcm/brcmfmac43430-sdio.clm_blob
And finally:
rpizero2% sha256sum /run/current-system/firmware/brcm/brcmfmac43430-sdio.clm_blob
3376b9c9b32d16bf762e21c7fafb665365070ae240d092498d0d1987c22022aa /run/current-system/firmware/brcm/brcmfmac43430-sdio.clm_blob
rpizero2% sha256sum $(readlink -f /run/current-system/firmware/brcm/brcmfmac43430-sdio.clm_blob)
3376b9c9b32d16bf762e21c7fafb665365070ae240d092498d0d1987c22022aa /nix/store/1qb4kf2jkkdw7mqzahfgnk4zmhxbvgv0-firmware-linux-nonfree-2021-08-18/lib/firmware/cypress/cyfmac43430-sdio.clm_blob
@pelwell I do understand that RPiOS is working though, I can eventually try to provision, update, and then image the SD card and try to figure out what the diffs are in terms of installed firmware files.
I'm guessing, though, that RPiOS is using old firmware packages...
For some extra info:
rpizero2% strings cyfmac43430-sdio.bin | grep 202
^[[AMar 30 2021
2021-03-30 01:02:19
I created a firmware-linux-nonfree
package that drops out:
brcmfmac43430-sdio.clm_blob
cypress43430-sdio.clm_blob
Pushed the config over, rebooted, and now wifi works.
Where should this be fixed?
In whichever repo your OS is getting them from - I don't think it's our problem.
Uhm, that's upstream linux-firmware
I guess maybe that's my answer though? I guess I just assumed it would've been someone from... the Raspberry PI Foundation that would've pushed these blobs into linux-firmware in the first place, but maybe not? I just don't know who owns which pieces.
Before you report a problem with the upstream firmware repo, just be certain that your OS hasn't ended up with an incompatible combination of upstream and ours, which would make it an OS packaging problem.
@pelwell aha, I think that's kind of the question I'm dancing around, as an OS maintainer, how do I determine the expected compatibility matrix?
Just pick one source - upstream or downstream. There will be differences, but each should work.
Raspberry Pi Zero W + Latest RPi Foundation Kernel + Latest wireless firmware from this repo
= Not working
I think this is the fatally bad part:
ieee80211 phy0: brcmf_c_process_clm_blob: clmload (4733 byte file) failed (-52)
I grabbed a usb-ethernet adapter, built a NixOS image with tailscale, and got access to it to grab dmesg logs:
Versions:
Extra Detail:
I tested briefly, using mainline linux kernel was broken in the same way or very similar.