Dave Posted September 22 Share 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 Link to comment Share on other sites More sharing options...
Dave Posted September 23 Author Share 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 Link to comment Share on other sites More sharing options...
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.