broadcom-wl doesn't work with supported network card

I have a BCM43602 802.11ac Wireless LAN SoC in my ~2017 Macbook Pro. Right now, the brcmfmac is doing the wireless work, but I'm having trouble with lagging and choppy audio via Bluetooth.

I tried installing broadcom-wl-dkms, made sure it installed and the dependencies were met, including the headers. I can use modprobe to turn wl on, but when I disable brcmfmac, my wireless network immediately drops off. If I blacklist brcmfmac, wl never loads on reboot and if I want network access I turn brcmfmac back on.

This card should be supported, so I don't know what the problem is. I've walked through the Broadcom page on archwiki, tried a few solutions here, including this page. How should I troubleshoot?

EDIT: (Somewhat) fixed the issue. I wish the kernel mailing list was more visible, once I found the solution here, search string "So for new 2020 comers," and follow the steps, you're golden. There is still some latency, but a low enough amount that unless this is just bugging someone that there isn't a perfect solution, I'll call this good.

The root problem is that Apple hardware is highly customized, so even the driver for the adequate wireless adapter model won't work sometimes.

The fix is to code a driver.

Isn't Apple a bit stingy about giving out details of their systems? Good Reason among many not to buy Apple products.

2 Likes

Yes, but broadcom-wl is the proprietary driver from the manufacturer, so Apple's opacity shouldn't really factor in.

Yes but if Apple had the chip customized with their own driver, this would would mean only Apples are supported.

2 Likes

I have tested this in depth. On a Mac if you install the right driver it simply doesn't work. It has nothing to do with tweaking which driver modules are active or not.

For the ideal experience using Linux buy a computer which hardware is as generic as possible, and fully works on libre drivers.

1 Like

That's upsetting to hear. I'll leave this open if someone happens to know something we don't, but I appreciate your input.

The camera driver can conflict with the wl driver. Backlist the facetimehd module, it can be modprobed after startup if needed

Run this command then reboot:

echo 'blacklist facetimehd' | sudo tee /etc/modprobe.d/facetimehd-blacklist.conf

Reboot, then run this command if your Wifi has not started:

nmcli networking off; sudo systemctl stop NetworkManager; sleep 1;  sudo rmmod brcmfmac; sudo modprobe -r wl; sleep 3; sudo modprobe wl; sleep 1; sudo systemctl start NetworkManager; sleep 1; nmcli networking on; sleep 1; nmcli r wifi off; sleep 1; nmcli r wifi on

If blacklisting the facetimehd module did not improve things then delete /etc/modprobe.d/facetimehd-blacklist.conf.

Thanks for the help! No luck, though, unfortunately.

Post the outputs:

dkms status
rfkill list
nmcli networking off; sudo systemctl stop NetworkManager; sleep 1;  sudo rmmod brcmfmac; sudo modprobe -r wl; sleep 3; sudo modprobe wl; sleep 1; sudo systemctl start NetworkManager; sleep 1; nmcli networking on; sleep 1; nmcli r wifi off; sleep 1; nmcli r wifi on
inxi -SMa; hwinfo --netcard --bluetooth | grep -Ei "(hotplug|speed|model|status|cmd|file|detected|driver:)" | grep -v "Config S" && echo "System install date $(head -n1 /var/log/pacman.log | cut -d " " -f1 | cut -c 2-11)" 
sudo dmesg  | grep -Ei 'error|fail|deauth|firm|regdom|wmi|wl|b43|80211|brcm|ssb|bcma' | grep -viE 'acpi|ras|nvidia|eth'
pacman -Qsq linux | grep linux | grep -v -E '(arch|util|sys|api|firmware)' | grep -v nvidia

You obviously read my tutorial as you posted the link. However you neglected to post the outputs I requested in the tutorial (if you couldn't get your adapter working}.

Oh sure, sorry.

[trey@citron ~]$ echo 'blacklist facetimehd' | sudo tee /etc/modprobe.d/facetimehd-blacklist.conf
[sudo] password for trey:
blacklist facetimehd
[trey@citron ~]$ sudo dkms autoinstall
[sudo] password for trey: 
[trey@citron ~]$ sudo modprobe brcmfmac
[trey@citron ~]$ sudo modprobe -r brcmfmac
[trey@citron ~]$ nmcli networking off; sudo systemctl stop NetworkManager; sleep 1;  sudo rmmod brcmfmac; sudo modprobe -r wl; sleep 3; sudo modprobe wl; sleep 1; sudo systemctl start NetworkManager; sleep 1; nmcli networking on; sleep 1; nmcli r wifi off; sleep 1; nmcli r wifi on
rmmod: ERROR: Module brcmfmac is not currently loaded
[trey@citron ~]$ dkms status
applespi, 0.1, 5.4.13-rt7-MANJARO, x86_64: installed
applespi, 0.1, 5.4.18-1-MANJARO, x86_64: installed
applespi, 0.1, 5.5.2-1-MANJARO, x86_64: installed (WARNING! Missing some built modules!) (WARNING! Missing some built modules!) (WARNING! Missing some built modules!) (WARNING! Missing some built modules!)
broadcom-wl, 6.30.223.271, 5.4.13-rt7-MANJARO, x86_64: installed
broadcom-wl, 6.30.223.271, 5.4.18-1-MANJARO, x86_64: installed
macbook12-spi-driver, 0+git.301, 5.4.13-rt7-MANJARO, x86_64: installed
macbook12-spi-driver, 0+git.301, 5.4.18-1-MANJARO, x86_64: installed
macbook12-spi-driver, 0+git.301, 5.5.2-1-MANJARO, x86_64: installed (original_module exists) (WARNING! Missing some built modules!) (WARNING! Missing some built modules!) (WARNING! Missing some built modules!) (WARNING! Missing some built modules!)
[trey@citron ~]$ rfkill list
0: hci0: Bluetooth
	Soft blocked: no
	Hard blocked: no
[trey@citron ~]$ nmcli networking off; sudo systemctl stop NetworkManager; sleep 1;  sudo rmmod brcmfmac; sudo modprobe -r wl; sleep 3; sudo modprobe wl; sleep 1; sudo systemctl start NetworkManager; sleep 1; nmcli networking on; sleep 1; nmcli r wifi off; sleep 1; nmcli r wifi on
rmmod: ERROR: Module brcmfmac is not currently loaded
[trey@citron ~]$ inxi -SMa; hwinfo --netcard --bluetooth | grep -Ei "(hotplug|speed|model|status|cmd|file|detected|driver:)" | grep -v "Config S" && echo "System install date $(head -n1 /var/log/pacman.log | cut -d " " -f1 | cut -c 2-11)" 
System:
  Host: citron Kernel: 5.4.18-1-MANJARO x86_64 bits: 64 
  parameters: \\boot\vmlinuz-5.4-x86_64 
  root=UUID=13c8724b-5239-4535-a104-41f47d117620 rw quiet 
  udev.log_priority=3 initrd=boot\initramfs-5.4-x86_64.img 
  Desktop: Gnome 3.34.3 Distro: Manjaro Linux 
Machine:
  Type: Laptop System: Apple product: MacBookPro14,3 v: 1.0 
  serial: <root required> 
  Mobo: Apple model: Mac-551B86E5744E2388 v: MacBookPro14,3 
  serial: <root required> UEFI: Apple v: 204.0.0.0.0 date: 12/16/2019 
  Model: "Broadcom BCM43602 802.11ac Wireless LAN SoC"
    Driver Status: brcmfmac is not active
    Driver Activation Cmd: "modprobe brcmfmac"
    Driver Status: wl is active
    Driver Activation Cmd: "modprobe wl"
  Model: "Realtek RTL8153 Gigabit Ethernet Adapter"
  Hotplug: USB
  Driver: "r8152"
  Device File: enp125s0u2u2
  Link detected: no
    Driver Status: r8152 is active
    Driver Activation Cmd: "modprobe r8152"
System install date 2020-02-20
[trey@citron ~]$ sudo dmesg  | grep -Ei 'error|fail|deauth|firm|regdom|wmi|wl|b43|80211|brcm|ssb|bcma' | grep -viE 'acpi|ras|nvidia|eth'
[    0.179260] Spectre V2 : Enabling Restricted Speculation for firmware calls
[    0.644521] apple-properties: device path parse error -19 at 0x14:
[    0.649166] pci 0000:05:02.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[    0.649172] pci 0000:05:02.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[    0.649238] pci 0000:7b:02.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[    0.649243] pci 0000:7b:02.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[    1.582755] applespi: module verification failed: signature and/or required key missing - tainting kernel
[    2.413981] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[    2.421748] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[    2.611621] wl: module license 'MIXED/Proprietary' taints kernel.
[    2.685146] wl driver 6.30.223.271 (r587334) failed with code 1
[    2.685149] ERROR @wl_cfg80211_detach : 
[    2.685149] NULL ndev->ieee80211ptr, unable to deref wl
[    2.908627] [drm] Found UVD firmware Version: 1.130 Family ID: 16
[    2.909666] [drm] Found VCE firmware Version: 53.26 Binary ID: 3
[    3.111526] Bluetooth: hci0: BCM: failed to write update baudrate (-16)
[    3.111527] Bluetooth: hci0: Failed to set baudrate
[    3.223623] Bluetooth: hci0: BCM20703A2 Generic UART UHE Apple 40MHz wlcsp_x100
[    3.226030] bluetooth hci0: Direct firmware load for brcm/BCM.hcd failed with error -2
[    3.226036] Bluetooth: hci0: BCM: Patch brcm/BCM.hcd not found
[   79.779014] usbcore: registered new interface driver brcmfmac
[   79.883993] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43602-pcie for chip BCM43602/2
[   79.884698] brcmfmac 0000:03:00.0: Direct firmware load for brcm/brcmfmac43602-pcie.Apple Inc.-MacBookPro14,3.txt failed with error -2
[   79.884708] brcmfmac 0000:03:00.0: Direct firmware load for brcm/brcmfmac43602-pcie.txt failed with error -2
[   80.207078] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43602-pcie for chip BCM43602/2
[   80.207108] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[   80.208041] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43602/2 wl0: Nov 10 2015 06:38:10 version 7.35.177.61 (r598657) FWID 01-ea662a8c
[   80.253358] brcmfmac 0000:03:00.0 wlp3s0: renamed from wlan0
[  200.220842] IPv6: ADDRCONF(NETDEV_CHANGE): wlp3s0: link becomes ready
[  200.271607] ieee80211 phy0: brcmf_inetaddr_changed: fail to get arp ip table err:-52
[  271.071854] usbcore: deregistering interface driver brcmfmac
[  271.087341] ieee80211 phy0: brcmf_fil_cmd_data: bus is down. we have nothing to do.
[  271.087344] ieee80211 phy0: brcmf_cfg80211_get_tx_power: error (-5)
[  271.107948] ieee80211 phy0: brcmf_netdev_start_xmit: xmit rejected state=0
[  285.545267] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[  285.545437] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[  285.715395] wl driver 6.30.223.271 (r587334) failed with code 1
[  285.715396] ERROR @wl_cfg80211_detach : 
[  285.715397] NULL ndev->ieee80211ptr, unable to deref wl
[  459.311539] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[  459.311704] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[  459.482857] wl driver 6.30.223.271 (r587334) failed with code 1
[  459.482861] ERROR @wl_cfg80211_detach : 
[  459.482861] NULL ndev->ieee80211ptr, unable to deref wl

[trey@citron ~]$ pacman -Qsq linux | grep linux | grep -v -E '(arch|util|sys|api|firmware)' | grep -v nvidia
linux54
linux54-headers
linux54-rt
linux54-rt-headers

I should note that at some point during this I uninstalled linux55, so there is some output related to that.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.

Forum kindly sponsored by