Dave Posted September 22 Posted September 22 (edited) For Armbian-24.11.0 RPi ubuntu noble based builds wlan interface is missing Issue is present in Rpi3 B plus, RPi4 for current (kernel 6.6.x) and edge (kernel 6.10.x) armbian builds OS info ================ pi@rpi4b:~$ cat /etc/os-release PRETTY_NAME="Armbian-unofficial 24.11.0-trunk noble" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04 LTS (Noble Numbat)" VERSION_CODENAME=noble ID=ubuntu ID_LIKE=debian HOME_URL="https://duckduckgo.com/" SUPPORT_URL="https://community.armbian.com/" BUG_REPORT_URL="https://armbian.atlassian.net/" PRIVACY_POLICY_URL="https://duckduckgo.com/" UBUNTU_CODENAME=noble LOGO="armbian-logo" ARMBIAN_PRETTY_NAME="Armbian-unofficial 24.11.0-trunk noble" pi@rpi4b:~$ uname -a Linux rpi4b 6.10.10-edge-bcm2711 #1 SMP PREEMPT Fri Sep 13 15:35:16 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux ================ wlan interface is missing (at all): =============== pi@rpi4b:~$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: end0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether d8:3a:dd:8e:79:9a brd ff:ff:ff:ff:ff:ff inet 192.168.1.139/24 metric 100 brd 192.168.1.255 scope global dynamic end0 valid_lft 25034sec preferred_lft 25034sec inet6 fe80::da3a:ddff:fe8e:799a/64 scope link valid_lft forever preferred_lft forever =============== The reason is incorrect firmware files format inside /lib/firmware. Firmware files are zstd packed (has *.zst extensons). Broadcom driver is unable to load such files =================== pi@rpi4b:~$ dmesg|grep -i brcmfmac [ 4.387851] brcmfmac: F1 signature read @0x18000000=0x15264345 [ 4.395645] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6 [ 4.403229] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin failed with error -2 [ 4.403347] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.bin failed with error -2 [ 5.407124] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50 =================== Files from /lib/firmware: ============================ ls -l /lib/firmware/brcm | egrep "raspberrypi,4-model-b" lrwxrwxrwx 1 root root 17 Sep 21 22:27 BCM4345C0.raspberrypi,4-model-b.hcd.zst -> BCM4345C0.hcd.zst lrwxrwxrwx 1 root root 35 Sep 21 22:27 brcmfmac43455-sdio.raspberrypi,4-model-b.bin.zst -> ../cypress/cyfmac43455-sdio.bin.zst lrwxrwxrwx 1 root root 40 Sep 21 22:27 brcmfmac43455-sdio.raspberrypi,4-model-b.clm_blob.zst -> ../cypress/cyfmac43455-sdio.clm_blob.zst lrwxrwxrwx 1 root root 26 Sep 21 22:27 brcmfmac43455-sdio.raspberrypi,4-model-b.txt.zst -> brcmfmac43455-sdio.txt.zst ls -l /lib/firmware/cypress | egrep "cyfmac43455*" lrwxrwxrwx 1 root root 38 Sep 21 22:27 cyfmac43455-sdio.bin.zst -> /etc/alternatives/cyfmac43455-sdio.bin -rw-r--r-- 1 root root 1261 Apr 11 00:46 cyfmac43455-sdio.clm_blob.zst -rw-r--r-- 1 root root 384405 Apr 11 00:46 cyfmac43455-sdio-minimal.bin.zst -rw-r--r-- 1 root root 453440 Apr 11 00:46 cyfmac43455-sdio-standard.bin.zst ls -l /etc/alternatives/cyfmac43455-sdio.bin lrwxrwxrwx 1 root root 55 Apr 11 00:46 /etc/alternatives/cyfmac43455-sdio.bin -> /lib/firmware/cypress/cyfmac43455-sdio-standard.bin.zst ============================ To fix this issue following steps have to be done: 1) install zstd package 2) unpack *.zst files inside /lib/firmware using unzstd 3) recreate all symlinks inside /lib/firmware from symlink_src(*.zst) => to symlink_dst(*.zst) to (no *.zst) 4) recreate /etc/alternatives/cyfmac43455-sdio.bin symlink /etc/alternatives/cyfmac43455-sdio.bin -> -> /lib/firmware/cypress/cyfmac43455-sdio-standard.bin.zst to /etc/alternatives/cyfmac43455-sdio.bin -> -> /lib/firmware/cypress/cyfmac43455-sdio-standard.bin The recipe is proven to be working - wlan interface is back. Tested for Rpi3 B plus, RPi4 current (kernel 6.6.x) and edge (kernel 6.10.x) armbian builds Edited September 22 by Dave 0 Quote
Dave Posted September 23 Author Posted September 23 (edited) Probably the core reason is following Kernel options defining firmware files compression: CONFIG_FW_LOADER_COMPRESS_ZSTD CONFIG_FW_LOADER_COMPRESS Check https://github.com/armbian/build/blob/main/config/kernel/linux-bcm2711-current.config https://github.com/armbian/build/blob/main/config/kernel/linux-bcm2711-edge.config So there have to be one of the following cases: case 1 (compressed): kernel firmware compression options set CONFIG_FW_LOADER_COMPRESS_ZSTD CONFIG_FW_LOADER_COMPRESS firmware files are compressed (*.zst) case 2 (not compressed): kernel firmware compression options CONFIG_FW_LOADER_COMPRESS_ZSTD CONFIG_FW_LOADER_COMPRESS not set firmware files are not compressed (no *.zst files) By the way "bad" *.zst firmware files come from the linux-firmware-raspi ubuntu package: https://launchpad.net/ubuntu/+source/linux-firmware-raspi https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/linux-firmware-raspi/12-0ubuntu1/linux-firmware-raspi_12.orig-nonfree.tar.gz Check https://github.com/armbian/build/blob/main/config/sources/families/bcm2711.conf pre_install_distribution_specific__add_rpi_packages() function Edited September 23 by Dave 0 Quote
may Posted November 16 Posted November 16 decompress `/usr/lib/firmware/cypress/cyfmac43455-sdio-standard.bin.zst` to `/usr/lib/firmware/cypress/` , then run `update-alternatives --install /lib/firmware/cypress/cyfmac43455-sdio.bin cyfmac43455-sdio.bin /lib/firmware/cypress/cyfmac43455-sdio-standard.bin 60` now `cyfmac43455-sdio.bin` is updated. 0 Quote
may Posted November 18 Posted November 18 (edited) after install armbian-firmware ,this issue solved . the .zst files were introduced by package linux-firmware-raspi Edited November 18 by may 0 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.