Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Armbian-24.11.0 RPi ubuntu noble based wlan interface is missing (*.zst firmware files)

Featured Replies

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 by Dave

Solved by c0rnelius

  • Author

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 by Dave

  • Dave changed the title to Armbian-24.11.0 RPi ubuntu noble based wlan interface is missing (*.zst firmware files)

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.

Hi 'may', i followed your instructions on RPi5 everything seemed to go ok but still no option for built in wifi adapter. You say in your next post to install Armbian firmware i am not sure how to do this, perhaps that is why it is not working! could you please explain?

  • Solution

https://github.com/armbian/build/pull/7694

 

patrick@rpi4b:~$ dmesg | grep brcmfmac
[    3.443168] brcmfmac: F1 signature read @0x18000000=0x15264345
[    3.444363] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
[    3.444650] usbcore: registered new interface driver brcmfmac
[    3.673499] brcmfmac: brcmf_c_process_txcap_blob: no txcap_blob available (err=-2)
[    3.673793] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Apr 15 2021 03:03:20 version 7.45.234 (4ca95bb CY) FWID 01-996384e2
[    8.815477] brcmfmac: brcmf_cfg80211_set_power_mgmt: power save disabled

 

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.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.