I have the exact same problem. WiFi was disabled in bios as default when I got the board. Enabling this changed nothing. Does not show up in either lsusb or lspci.
I’m using Xubuntu 20.04.3
uname -a
Linux knuxyl-ROCK-Pi-X 5.13.0-28-generic #31~20.04.1-Ubuntu SMP Wed Jan 19 14:08:10 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
dmesg output
[ 6.175651] brcmfmac: brcmf_chip_tcm_rambase: unknown chip: BCM43454/6
[ 6.175675] brcmfmac: brcmf_chip_get_raminfo: RAM base not provided with ARM CR4 core
[ 6.175684] brcmfmac: brcmf_sdio_probe_attach: brcmf_chip_attach failed!
[ 6.175693] brcmfmac: brcmf_sdio_probe: brcmf_sdio_probe_attach failed
[ 6.175922] brcmfmac: brcmf_ops_sdio_probe: F2 error, probe failed -19...
I found where the error is being thrown in the source code
linux/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
Line 703
static u32 brcmf_chip_tcm_rambase(struct brcmf_chip_priv *ci)
{
switch (ci->pub.chip) {
case BRCM_CC_4345_CHIP_ID:
return 0x198000;
case BRCM_CC_4335_CHIP_ID:
case BRCM_CC_4339_CHIP_ID:
case BRCM_CC_4350_CHIP_ID:
case BRCM_CC_4354_CHIP_ID:
case BRCM_CC_4356_CHIP_ID:
case BRCM_CC_43567_CHIP_ID:
case BRCM_CC_43569_CHIP_ID:
case BRCM_CC_43570_CHIP_ID:
case BRCM_CC_4358_CHIP_ID:
case BRCM_CC_43602_CHIP_ID:
case BRCM_CC_4371_CHIP_ID:
return 0x180000;
case BRCM_CC_43465_CHIP_ID:
case BRCM_CC_43525_CHIP_ID:
case BRCM_CC_4365_CHIP_ID:
case BRCM_CC_4366_CHIP_ID:
case BRCM_CC_43664_CHIP_ID:
case BRCM_CC_43666_CHIP_ID:
return 0x200000;
case BRCM_CC_4359_CHIP_ID:
return (ci->pub.chiprev < 9) ? 0x180000 : 0x160000;
case BRCM_CC_4364_CHIP_ID:
case CY_CC_4373_CHIP_ID:
return 0x160000;
case CY_CC_43752_CHIP_ID:
return 0x170000;
default:
brcmf_err("unknown chip: %s\n", ci->pub.name);
break;
}
return INVALID_RAMBASE;
}
So it would seem the problem isn’t that we do not have the correct firmware but that this driver just doesn’t support this card. I can’t seem to find where it probes for the card id, I’m not familiar with C, but it seems that whatever this is switch (ci->pub.chip)
is what is returning the value of the chip ip.
It seems brcmfmac is seeing this card as BCM43454/6, while bios says it is BCM4356.
Either way, BCM4354 and BCM4356 are both supported according to the source code, but kernel is showing a BCM43454/6.
The firmware files provided by Radxa are for BCM43455, which are not listed in the source code either, and neither is just BCM4355.
This is a weird mess and I hope anyone at Radxa could help explain what is going on.
Looks like it is your kernel not configured properly if you have the firmware in the right location.
Here is the correct setup where I based my findings, hope it helps.
I haven’t touched the board for a long time just waiting perhaps for the new processor with a better GPU.
Jun 18 19:35:07 rockpix kernel: [ 8.114297] Bluetooth: hci0: BCM: chip id 107
Jun 18 19:35:07 rockpix kernel: [ 8.116843] Bluetooth: hci0: BCM: features 0x2f
Jun 18 19:35:07 rockpix kernel: [ 8.140053] Bluetooth: hci0: BCM4345C0
Jun 18 19:35:07 rockpix kernel: [ 8.140069] Bluetooth: hci0: BCM4345C0 (003.001.025) build 0000
Jun 18 19:35:07 rockpix kernel: [ 8.145826] Bluetooth: hci0: BCM4345C0 'brcm/BCM4345C0.hcd' Patch
Jun 18 19:35:07 rockpix kernel: [ 8.315205] input: chtnau8824 Headset as /devices/pci0000:00/808622A8:00/cht-bsw-nau8824/sound/card1/input13
Jun 18 19:35:08 rockpix kernel: [ 10.222005] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
Jun 18 19:35:09 rockpix kernel: [ 10.864833] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
Jun 18 19:35:09 rockpix kernel: [ 10.864896] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
Jun 18 19:35:09 rockpix kernel: [ 10.865243] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Jun 12 2020 12:11:45 version 7.45.96.66 (c7a32cb@shgit) (r745790) FWID 01-cffa7eb1
Jun 18 19:35:13 rockpix kernel: [ 15.471478] Bluetooth: hci0: BCM: failed to write clock (-56)
Jun 18 19:35:14 rockpix kernel: [ 15.627154] Bluetooth: hci0: BCM4345C0 UART 37.4 MHz wlbga_ref_iLNA_iTR_eLG [Baseline: 0143]
Jun 18 19:35:14 rockpix kernel: [ 15.627188] Bluetooth: hci0: BCM4345C0 (003.001.025) build 0230
Jun 18 19:35:16 rockpix kernel: [ 18.125987] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Jun 18 19:38:55 rockpix kernel: [ 0.000000] Linux version 5.12.2-rockpix (alex@svn) (gcc (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0, GNU ld (GNU Binutils for Ubuntu) 2.30) #3 SMP Sat May 8 15:34:35 -03 2021
Jun 18 19:38:55 rockpix kernel: [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.12.2-rockpix root=UUID=a8baf400-01c5-4322-8b20-f2b9e79f3f1a rw no_console_suspend consoleblank=0
If i recall correctly it was mainline kernel (at that time) with some optimizations for embedded systems.
The stock kernel should work. Maybe you changed something in the bios. I don’t recommend any changes unless you have the tools to restore the BIOS.
i did not change anything in the bios. it was after i was having problems with the wifi driver i decided to look and saw bcm4356 was disabled in the bios, so i enabled it. it didnt change anything so i restored bios back to defaults. this is definitely not a user error.
According to Radxa v1.41 just fixed the GPIO pins voltage.
I would suggest triple check:
kernel config
firmware location
I still think is a kernel issue.
5.13.0-28-generic #31~20.04.1-Ubuntu SMP Wed Jan 19 14:08:10 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux seems to be an HWE SERVER and might not have the driver enabled.
Debian has the exact same problem brcmfmac: brcmf_chip_tcm_rambase: unknown chip: BCM43454/6
The firmware files being in the correct location is irrelevant at this point, brcmfmac is not recognizing the card, so it’s not even trying to load a firmware file.
Looking in the bios, In Advanced-System Component, it says PCIe based WLAN module - BCM4356 BCM4356 [Enabled]
By highlighting BCM4356 it says this By enabling this option, the corresponding GPIO configuration is performed to support this add-in card on CerryTrail - RVP.
I would rather have the build instructions for the kernel because radxa’s wiki makes no mention of requiring a custom built kernel for running an x86 ubuntu.
Where are you getting the kernel sources from? Mainline? Do they already have a defconfig or something for the rock pi x?
I can try your deb’s, but I’d like to know how you built it yourself. thanks!
No problem. This is a kernel issue, nothing to do with the board maker, all the sbc that use this chip are affected. You should blame Broadcom for overlooking their driver.
You can use Ubuntu’s defconfig and the usual instructions to build the kernel.
Preparing and pushing the deb and patch.
If you plan to build your kernel, just apply the patch and use your defconfig.
If you use ubuntu’s kernel source you have to apply the patch manually, it is fairly easy.
Make sure you firmware is in: /usr/lib/firmware/brcm
If initrd.img-5.16.6-rockpix has not been created for any reason, before reboot, type in:
sudo update-initramfs -u -k all
This will re-generate all initrd.img-X.XX.X for kernels found in /usr/lib/modules/
And examine the grub file generated in EFI (UEFI). I hope is not too late.
PS: that a good reason to boot from USB where you can edit and restore files at will
Bottable USB img file
I made a bootable USB img file with minimal ubuntu 20.04.3 LTS so you can boot from USB without messing your stock kernel in eMMC.