WIFI 5GHz not showing (F40, broadcom)

Hi everyone,

Problem : 5GHz wifi won’t show in wifi networks.

Environment :

  • Macbook pro mid 2015
  • broadcom chipset 43602/43ba (apparently known for this issue)
  • fedora workstation 40 gnome (up to date)

Things I’ve tried :

  • broadcom-wl (gives errors at boot(unpatched thunk?) and wl.ko not found)
  • removing, reinstalling brcmfmac driver
  • tried this workaround (with brcmfmac blacklisted & all)
  • tried this workaround too (with modified .txt file) → I know it’s taken into account because there’s 1 less error in dmesg at startup
  • followed instruction on this topic

relevant part of inxi -F :

Network:
  Device-1: Broadcom BCM43602 802.11ac Wireless LAN SoC vendor: Apple
    driver: brcmfmac v: kernel pcie: speed: 2.5 GT/s lanes: 1 bus-ID: 03:00.0
    chip-ID: 14e4:43ba
  IF: wlp3s0 state: up mac: <filter>

relevant part of dmesg :

[    6.205780] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43602-pcie for chip BCM43602/1
[    6.208410] brcmfmac 0000:03:00.0: Direct firmware load for brcm/brcmfmac43602-pcie.Apple Inc.-MacBookPro12,1.bin failed with error -2
[    6.242920] brcmfmac 0000:03:00.0: Direct firmware load for brcm/brcmfmac43602-pcie.clm_blob failed with error -2
[    6.242976] brcmfmac 0000:03:00.0: Direct firmware load for brcm/brcmfmac43602-pcie.txcap_blob failed with error -2
[    6.993814] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[    6.993820] brcmfmac: brcmf_c_process_txcap_blob: no txcap_blob available (err=-2)
[    6.994327] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43602/1 wl0: Nov 10 2015 06:38:10 version 7.35.177.61 (r598657) FWID 01-ea662a8c
[   12.444631] ieee80211 phy0: brcmf_inetaddr_changed: fail to get arp ip table err:-52 # probably because using AP 
[   30.502326] warning: `ThreadPoolForeg' uses wireless extensions which will stop working for Wi-Fi 7 hardware; use nl80211

I’m thinking maybe there’s a way to install broadcom-wl driver and get it working since it’s supposed to support my chip doesn’t seem to reference 5GHz not working.

I’m also thinking maybe tweaking the bugzilla txt file a bit more could get it to work but i’m completely out of my knowledge here.

Please do take into account I know next to nothing about drivers/firmware/grub, i might need some explaining

anyone with experience on broadcom drivers ? :smiling_face_with_tear:

I’m wondering if 5GHz is supported in that chip at all.

Did 5GHz work from macOS?

yes 100% positive :slight_smile: just checked, it says : Channel 149 (5GHz, 80MHz)

The akmods build of wl should create log files /var/log/akmods/akmods.log\* and complete build details in /var/cache/akmods/wl*.logbeside the.rpmfiles, or logs with addedfailedfor builds that failed (no.rpm` file produced).

thanks, i’ve just had a look in akmods.log :

2024/09/04 16:22:30 akmods: Checking kmods exist for 6.10.6-200.fc40.x86_64
2024/09/04 16:22:30 akmods: Building and installing wl-kmod
2024/09/04 16:22:30 akmods: Building RPM using the command '/usr/sbin/akmodsbuild --kernels 6.10.6-200.fc40.x86_64 /usr/src/akmods/wl-kmod.latest'
2024/09/04 16:22:42 akmods: Installing newly built rpms
2024/09/04 16:22:42 akmods: DNF detected
2024/09/04 16:23:02 akmods: Successful.

nothing out the ordinary.

[root@thomas-mbp ~]# ls /var/cache/akmods/wl/
6.30.223.271-53-for-6.10.6-200.fc40.x86_64.log  kmod-wl-6.10.6-200.fc40.x86_64-6.30.223.271-53.fc40.x86_64.rpm
[root@thomas-mbp ~]# rpm -ql /var/cache/akmods/wl/kmod-wl-6.10.6-200.fc40.x86_64-6.30.223.271-53.fc40.x86_64.rpm 
/lib/modules/6.10.6-200.fc40.x86_64/extra
/lib/modules/6.10.6-200.fc40.x86_64/extra/wl
/lib/modules/6.10.6-200.fc40.x86_64/extra/wl/wl.ko.xz

build seems to have worked, but i still got boot errors anyway.

It’s not clear to me what i’m supposed to do with this ?

My understanding is that your chipset is not supported by the proprietary broadcom-wl, but rather by the open source driver bcrmfmac, given that BCM4360 and BCM43602 are not the same:

$ dnf info broadcom-wl

Available Packages
Name         : broadcom-wl
Version      : 6.30.223.271
Release      : 23.fc40
Architecture : noarch
Size         : 24 k
Source       : broadcom-wl-6.30.223.271-23.fc40.src.rpm
Repository   : rpmfusion-nonfree
Summary      : Common files for Broadcom 802.11 STA driver
URL          : https://www.broadcom.com/support/download-search?pg=Legacy+Products&pf=Legacy+Wireless&pn=&pa=&po=&dk=&pl=
License      : Redistributable, no modification permitted
Description  : This package contains the license, README.txt and configuration
             : files for the Broadcom 802.11 Linux STA Driver for WiFi, a Linux
             : device driver for use with Broadcom's BCM4311-, BCM4312-, BCM4313-,
             : BCM4321-, BCM4322-, BCM43142-, BCM43224-, BCM43225-, BCM43227-,
             : BCM43228-, BCM4331-, BCM4360 and -BCM4352- based hardware.

Kernel.org Wireless wiki brcm80211 lists your chip-ID: 14e4:43ba as supported. You might want to verify that Fedora has the same firmware files – sometimes names change and Fedora needs prompting to catch up to upstream.

brcmfmac is widely used, and is known to report firmware load failures that still allow it to work, but maybe with some functionality missing. Do you dual boot macOS? I recall copying firmware from macOS to /lib/firmware.

Reddit discsussion of error -52 – one comment found that disabling mac address randomization worked.

Ubuntu: boot-failed-with-error-ieee80211-phy0-brcmf-inetaddr-changed-failed-to-get has a comment that disabling bluetooth got WiFi working.
That could be a firmware issue.

1 Like

I completely agree however when visiting wiki.archlinux my device is listed and explained to be compatible with 5GHz with a low enough channel number

Then maybe it’s not exactly the same software ?

Actually that archwiki page refers to all 3 types of drivers (brcm80211, b43 and broadcom-wl). The links presented in chapter 1 are also pointing to the open source driver, where your chipset is listed.

So I think there is no conflicting information here, your chipset’s driver is brcm80211 one, included in the kernel.

1 Like

Thanks for the info, however I don’t fully understand.

What files should I check if they are the same ?
I have these :

[root@thomas-mbp ~]# ll /usr/lib/firmware/brcm/brcmfmac43602-pcie.*
-rw-r--r--. 1 root root 314796 16 août  02:00 /usr/lib/firmware/brcm/brcmfmac43602-pcie.ap.bin.xz
-rw-r--r--. 1 root root 328248 16 août  02:00 /usr/lib/firmware/brcm/brcmfmac43602-pcie.bin.xz
-rw-r--r--. 1 root root   6048  4 sept. 17:29 /usr/lib/firmware/brcm/brcmfmac43602-pcie.txt

What file should I check these against ?

Thanks for the links ! However i’d prefer to have my BT working at the moment.

I am indeed dualbooting macOS, but i can’t find where the drivers are. I found some at /System/Library/Extensions/ but nothing inspires me wifi or broadcom, and googling did not help yet. Do you have any pointers ?
Are they compatible ?

edit :
I found this :

/System//Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortBrcm4360.kext

Thomass-MacBook-Pro:~ root# kextstat | grep -i airport
   54    0 0xffffff7f81be4000 0x7bd000   0x7bd000   com.apple.driver.AirPort.Brcm4360 (1152.2.1a2) EE8C74F7-F355-3521-BCAC-6A8A9F69F05C <53 52 51 50 12 7 6 5 4 3 1>

ioreg -c AirPort_Brcm4360
        | |   |     +-o AirPort_Brcm4360  <class AirPort_Brcm4360, id 0x100000295, registered, matched, active, busy 0 (4 ms), retain 37>
    | |   |       | {
    | |   |       |   "IOClass" = "AirPort_Brcm4360"
    | |   |       |   "IOActiveMedium" = "00000080"
    | |   |       |   "mDNS_KEY" = "2009-07-30"
    | |   |       |   "TruePowerOff" = Yes
    | |   |       |   "IO80211Family.BuildTag" = "AirPortFamily_kexts-1200.40.1"
    | |   |       |   "mDNS_Keepalive" = Yes
    | |   |       |   "IOReportLegendPublic" = Yes
    | |   |       |   "IOPowerManagement" = {"CapabilityFlags"=61440,"MaxPowerState"=2,"CurrentPowerState"=2}
    | |   |       |   "IOProviderClass" = "IOPCIDevice"
    | |   |       |   "IOLinkStatus" = 3
    | |   |       |   "APFeatures" = 1
    | |   |       |   "APChipRev" = 1
    | |   |       |   "APTAPD" = 1
    | |   |       |   "IOProbeScore" = 1152
    | |   |       |   "IOVendor" = "Apple"
    | |   |       |   "IOMinPacketSize" = 64
    | |   |       |   "IOPacketFilters" = {"IONetworkFilterGroup"=275,"IOEthernetDisabledWakeOnLANFilterGroup"=0,"IOEthernetWakeOnLANFilterGroup"=1}
    | |   |       |   "IOMediumDictionary" = {"00000080"={"Index"=0,"Type"=128,"Flags"=0,"Speed"=11000000}}
    | |   |       |   "IONameMatch" = ("pci14e4,43ba","pci14e4,43a3","pci14e4,43a0","pci14e4,4331","pci14e4,4353")
    | |   |       |   "IOMACAddress" = <a45e60bd1111>
    | |   |       |   "IOMatchCategory" = "IODefaultMatchCategory"
    | |   |       |   "CFBundleIdentifier" = "com.apple.driver.AirPort.Brcm4360"
    | |   |       |   "IOFirmwareVersion" = "Broadcom BCM43xx 1.0 (7.21.171.134.1a2)"
    | |   |       |   "IONameMatched" = "pci14e4,43ba"
    | |   |       |   "IOSelectedMedium" = "00000080"
    | |   |       |   "IO80211Family.BuildDate" = "Jun  2 2019 20:53:50"
    | |   |       |   "IOModel" = "Wireless Network Adapter (802.11 a/b/g/n/ac)"
    | |   |       |   "IOLinkSpeed" = 11000000
    | |   |       |   "IO80211Family.BuildTagGit" = ""AirPortFamily_kexts-1200.40.1""

Try searching the entire disk for files whose names start with brcmfmac43602. Linux uses compressed files, but the driver may be able to load the same format Apple uses if you copy them to /lib/firmware/brcm in Fedora.

I doubt the AIrPort files will be useful with your chip. One limitation of the linux Broadcom 43602 is that it only supports globally valid channels, so can’t use some channels that work with other devices using proprietary WiFi.

You have /usr/lib/firmware/brcm/brcmfmac43602-pcie.txt which is not part of the Fedora package, so you appear to be using some 3rd party package. Here:

dnf info brcmfmac-firmware.noarch                                                                 
[...]
Installed Packages
Name         : brcmfmac-firmware
Version      : 20240811
Release      : 2.fc40
Architecture : noarch
Size         : 9.5 M
Source       : linux-firmware-20240811-2.fc40.src.rpm
Repository   : @System
From repo    : updates
Summary      : Firmware for Broadcom/Cypress brcmfmac WiFi/Bluetooth adapters
URL          : http://www.kernel.org/
License      : Redistributable, no modification permitted
Description  : Firmware for Broadcom/Cypress brcmfmac WiFi/Bluetooth adapters.

Try dnf whatprovides /usr/lib/firmware/brcm/brcmfmac43602-pcie.txt. There is a file with this name at https://gist.github.com/MikeRatcliffe. It has to be edited if you are going to use it (with MikeRatcliffe’s drivers).

FYI The kext is a darwin kernel module, nothing linux can use.

This is about the brcmfmac43602-pcie firmware files being loaded by the kernel module.
I have used firmware files from macOS when linux didn’t have the correct firmware.

1 Like