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