The WLAN module of my RPI 4 B+ disappeared. At first I thought that the hardware component had blown. How can I properly diagnose whether there is a hardware or software problem?

What I have done for diagnosting so far:

# uname -a
Linux xxx 4.19.88-1-ARCH #1 SMP PREEMPT Wed Dec 11 20:19:41 UTC 2019 armv7l GNU/Linux

# ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether dc:a6:32:xx:xx:xx brd ff:ff:ff:ff:ff:ff

# rfkill list                                                 
0: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no

# cat /boot/config.txt
initramfs initramfs-linux.img followkernel

# dmesg | rg brcm
[    5.053910] brcm-pcie fd500000.pcie: dmabounce: initialised - 32768 kB, threshold 0x00000000c0000000
[    5.053953] brcm-pcie fd500000.pcie: could not get clock
[    5.054007] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:
[    5.054049] brcm-pcie fd500000.pcie:   MEM 0x600000000..0x603ffffff -> 0xf8000000
[    5.094140] brcm-pcie fd500000.pcie: link up, 5.0 Gbps x1 (!SSC)
[    5.094360] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00
[    5.334403] brcmstb_thermal fd5d2200.thermal: registered AVS TMON of-sensor driver
[   10.018800] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
[   10.020754] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.txt failed with error -2
[   10.021792] usbcore: registered new interface driver brcmfmac
[   11.027387] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50

Direct firmware load for brcm/brcmfmac43455-sdio.txt failed with error -2

From my point of view that clearly indicates a driver problem.

How should I proceed reasonably to fix this?

PS: The error probably occurred shortly after the encryption of the root partition.

PPS: Text has been edited multiple times to comply to forum rules (make it a question) and to clean up.

  • 2
    "but haven't found a solution" - neither have you asked a Question? What OS? Did it ever work? DO NOT post detail in Comments - edit your Question.
    – Milliways
    Jan 5 '20 at 23:03
  • Do you use an initramfs?
    – Ingo
    Jan 6 '20 at 21:04
  • @Milliways: you are right, I'm describing a problem. Usually, if I can state the question I am close to the answer already.
    – user113052
    Jan 7 '20 at 12:17
  • @Ingo: that's right, I am using an initramfs. Used to work from the beginning until two days ago.
    – user113052
    Jan 7 '20 at 12:19
  • 1
    ok, thx for the hint, I'm going to clean up the whole thing, formulate a question and an answer, so that it hopefully is useful for technically interested users.
    – user113052
    Jan 8 '20 at 15:53

A little research reveals that the RPI4 is using the dual band wifi-chipset Cypress CYW43455. I assume the chipset must be initialized in the early userland to work properly.

After encrypting the root partition the drivers can't be accessed from the early user space. To solve this you have to add the missing driver to the initramfs as files or preferably as binaries:

# nano /etc/mkinitcpio.conf
BINARIES=(/usr/lib/firmware/brcm/brcmfmac43455-sdio.bin /usr/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob /usr/lib/firmware/brcm/brcmfmac43455-sdio.txt )

Afterwards refresh the initramfs and reboot:

# mkinitcpio -P
# reboot

The wlan0 module should reappear now:

# ip link show wlan0
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether dc:a6:32:xx:xx:xx brd ff:ff:ff:ff:ff:ff

# iw dev           
    Interface wlan0
        ifindex 3
        wdev 0x1
        addr dc:a6:32:xx:xx:xx
        type managed
        channel 34 (5170 MHz), width: 20 MHz, center1: 5170 MHz
        txpower 31.00 dBm

In case you get

# iw dev wlan0 scan
[..] Interface does not support scanning [..]

or similar errors you probably forgot to include the corrosponding .txt and .clm_blob.


This error also shows up on the Raspberry Pi 4 platform if the firmware drivers are corrupt or missing. An easy fix would be to reinstall them.

sudo apt update
sudo apt install firmware-brcm80211 --fix-broken

All Raspbian versions come with this driver - and many others. See apt search ^firmware-* for all available firmware drivers.

Earlier versions of the Raspberry Pi than 4 do not need this driver.


User's @user113052 answer worked for me but in my case the answer was incomplete and I can't comment on his post (low rep).

File /usr/lib/firmware/brcm/brcmfmac43455-sdio.bin didn't exist on my rpi4b and instead I created this symlink (considering I have rpi4b as there are more files for different raspberryPIs):

cd /usr/lib/firmware/brcm/
sudo ln -s brcmfmac43455-sdio.raspberrypi,4-model-b.txt brcmfmac43455-sdio.txt

Output of ls -l brcmfmac43455-sdio.txt:

brcmfmac43455-sdio.txt -> brcmfmac43455-sdio.raspberrypi,4-model-b.txt

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy