2017 MBP Unable to connect to 5 Ghz networks

Just started giving a modern desktop linux distro a shot. Using a Mac Book Pro from 2017, and while almost everything was up and running quickly, I’m having trouble with my wifi card. It partially works but is not picking up 5 Ghz signals.

Asking around in some communities someone found Broadcom wireless - ArchWiki which included the following:

Issue appears to be linked to a channel issue. Changing the wireless channel to a lower channel number (like 40 or, if your router show MHz instead of channel numbers, like 5200 MHz or 5280 MHz) seems to allow connection to 5GHz bands. If your router has the same SSID for the 2.4GHZ and 5GHZ, this can fix problems with your wireless connection being unstable or very slow.

While I did switch my router to 40 and the width to 40 MHz, it’s still not listed in the wifi networks I can connect to.

Confirming card mentioned by article:


eccentric-j@localhost:~> sudo hwinfo --wlan --short              
network:                                                         
  wlp3s0               Broadcom BCM43602 802.11ac Wireless LAN SoC

Is there any solutions out there to fix support for 5 Ghz networks?

Tried running

sudo /usr/sbin/install_bcm43xx_firmware

But do not notice any difference.

Any help would be appreciated!

Does broadcom-wl from Packman work?

Thanks! I’m trying that now but really new to desktop linux.

I found this post about how to add the Packman repositories https://forums.opensuse.org/showthread.php/518460-How-do-I-install-Pacman-repos and that part is done.

However, not sure what the next step is. I ran sudo zypper in broadcom-wl, but first I tried to find it in the Discover app which didn’t work.

That seemed to work as it’s now listed in YaST > Software Management

https://i.postimg.cc/qqkjZJ5S/Screenshot-20220813-150515.png

I take it the next step would be to restart and see if that fixes the issue?

After restart: Seems like nothing has changed. The only networks listed are around ~2.5 Ghz frequency instead of the 5 Ghz network broadcast from 3 ft away.

Any other options come to mind? Maybe I need to uninstall the previous driver?

Couldn’t edit previous post, asked around and learned about the dmesg and journalctl commands:


ay@localhost:~> journalctl -b | grep brcmfmac
Hint: You are currently not seeing messages from other users and the system.
      Users in the 'systemd-journal' group can see all messages. Pass -q to
      turn off this notice.
jay@localhost:~> sudo journalctl -b | grep brcmfmac
[sudo] password for root:  
Aug 13 15:20:47 localhost kernel: usbcore: registered new interface driver **brcmfmac**
Aug 13 15:20:47 localhost kernel: **brcmfmac**: brcmf_fw_alloc_request: using brcm/**brcmfmac**43602-pcie for chip BCM43602/2
Aug 13 15:20:47 localhost kernel: **brcmfmac** 0000:03:00.0: Direct firmware load for brcm/**brcmfmac**43602-pcie.Apple Inc.-MacBookPro13,3.bin failed with error -2
Aug 13 15:20:47 localhost kernel: **brcmfmac** 0000:03:00.0: Direct firmware load for brcm/**brcmfmac**43602-pcie.Apple Inc.-MacBookPro13,3.txt failed with error -2
Aug 13 15:20:47 localhost kernel: **brcmfmac** 0000:03:00.0: Direct firmware load for brcm/**brcmfmac**43602-pcie.txt failed with error -2
Aug 13 15:20:47 localhost kernel: **brcmfmac**: brcmf_fw_alloc_request: using brcm/**brcmfmac**43602-pcie for chip BCM43602/2
Aug 13 15:20:47 localhost kernel: **brcmfmac**: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
Aug 13 15:20:47 localhost kernel: **brcmfmac**: brcmf_c_preinit_dcmds: Firmware: BCM43602/2 wl0: Nov 10 2015 06:38:10 version 7.35.177.61 (r598657) FWID 01-ea662a8c
Aug 13 15:20:48 localhost kernel: **brcmfmac** 0000:03:00.0 wlp3s0: renamed from wlan0
Aug 13 15:20:48 localhost.localdomain NetworkManager[1231]: <info>  [1660418448.3904] rfkill0: found Wi-Fi radio killswitch (at /sys/devices/pci0000:00/0000:00:1c.0/0000:03:00.0/ieee802
11/phy0/rfkill0) (driver **brcmfmac**)
jay@localhost:~> sudo journalctl -b | grep Wi-Fi
Aug 13 15:20:48 localhost.localdomain NetworkManager[1231]: <info>  [1660418448.3904] rfkill0: found **Wi-Fi** radio killswitch (at /sys/devices/pci0000:00/0000:00:1c.0/0000:03:00.0/ieee802
11/phy0/rfkill0) (driver brcmfmac)
Aug 13 15:20:48 localhost.localdomain NetworkManager[1231]: <info>  [1660418448.3908] manager[0x55db0df0d010]: rfkill: **Wi-Fi** hardware radio set enabled
Aug 13 15:20:48 localhost.localdomain NetworkManager[1231]: <info>  [1660418448.3980] manager: rfkill: **Wi-Fi** enabled by radio killswitch; enabled by state file
Aug 13 15:20:48 localhost.localdomain NetworkManager[1231]: <info>  [1660418448.4047] manager: (wlp3s0): new 802.11 **Wi-Fi** device (/org/freedesktop/NetworkManager/Devices/2)
Aug 13 15:20:49 localhost.localdomain NetworkManager[1231]: <info>  [1660418449.1788] **Wi-Fi** P2P device controlled by interface wlp3s0 created
Aug 13 15:20:49 localhost.localdomain NetworkManager[1231]: <info>  [1660418449.1790] manager: (p2p-dev-wlp3s0): new 802.11 **Wi-Fi** P2P device (/org/freedesktop/NetworkManager/Devices/4)
jay@localhost:~> open /org/freedesktop
If 'open' is not a typo you can use command-not-found to lookup the package that contains it, like this:
    cnf open

This line seems especially relevant:

Aug 13 15:20:47 localhost kernel: **brcmfmac**: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available

Hi
The brcmfmac module should be blacklisted (and others) when installing the broadcom-wl package and equivalent kmp package with a file in /etc/modprobe.d/50-broadcom-wl-blacklist.conf does this file exist, if so, as root user run the command mkinitrd and reboot.

Thanks! I was able to fix this but will do those steps anyway just to make sure. A kind soul on the doom emacs discord server used my problem as an excuse to learn more about the kernel modules and was able to help find a solution.

https://bugzilla.kernel.org/show_bug.cgi?id=193121

It comes down to the particular WiFi chip I have, Broadcom 43602 just not really being really well supported by the firmware itself. Fortunately, someone came up with a workaround in the form of a config file that can be copied into the /lib/firmware/brcm/. Instructions may be found near the bottom of that link:

https://bugzilla.kernel.org/show_bug.cgi?id=193121#c74
Which is a small enhancement on top of 193121 – brcmfmac working extremely poorly on MacBookPro13,*.

With that latest text file copied to /lib/firmware/brcm/ and a reboot I am now able to connect to my 5 Ghz network and see many more networks in the list.

As for why those changes and others are not upstreamed, correspondence earlier in the discussion https://bugzilla.kernel.org/show_bug.cgi?id=193121#c23 provide some insight:

The firmware update is not an easy task as it updates regulatory data in firmware it means a full verification cycle is required to assure the power levels stay within regulatory limits. This is always a hard sell for us as there is no return of investment for the engineering costs involved. Hence we release fullmac firmware that has been verified in running projects. Sadly the 43602 in the MacBook does not use a fullmac driver architecture so there is no fullmac firmware available. I have forwarded your request, but no high hopes we can resolve this.

Hi
If you going to use the brmc module(s), then you don’t want the broadcom-wl items installed or that blacklist file… once removed make sure to run mkinitrd to ensure the brmc module(s) are not blacklisted.

Ok I will try uninstalling broadcom-wl.

Not sure if it’s important but looking at the blacklist https://pmbs.links2linux.de/package/view_file/Essentials/broadcom-wl/broadcom-wl-blacklist?expand=1

It only targets brcmsmac not brcmfmac

EDIT: Confirmed after uninstalling broadcom-wl the fix still works.

In that case does that mean broadcom-wl drivers were never actually used?

Hi
Correct, not used at all…

Alright. Then I’m curious how broadcom-wl would perform and it’s probably a good learning opportunity.

How do I remove the brcmfmac drivers? Searching brcmfmac in YaST Software Management shows no results

Running sudo rmmod brcmfmac also did not seem to work

May have found it in YaST: 'kernal-firmware-brcmso would I uninstall that and installbroadcom-wl` or are there more steps?

Hi
Well, just install the broadcom-wl and broadcom-kmp packages, run mkinitrd and reboot to see what happens…

Could also check drivers in use via;


/sbin/lspci -nnk | grep -A3 "Network"

Current driver:


03:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 02)
       Subsystem: Apple Inc. Device [106b:015a]
       Kernel driver in use: brcmfmac
       Kernel modules: brcmfmac, wl

After installing broadcom-wl, broadcom-kmp, and running mkinitrd then rebooting:


03:00.0 **Network** controller [0280]: Broadcom Inc. and subsidiaries BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 02)

        Subsystem: Apple Inc. Device [106b:015a]

        Kernel driver in use: brcmfmac

        Kernel modules: brcmfmac, wl

Is there a step I’m missing? Not sure anything changed.

Hi
Well it can use wl as shown is available, so what you could do is add blacklist brcmfmac to the blacklist file (location in previous post) and then run mkinitrd, reboot and check the lspci output and test if working. Else revmove the broadcom-wl packages, rebuild initrd and reboot use the oss driver…


 > /sbin/lspci -nnk | grep -A3 "Network"

03:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 02)
        Subsystem: Apple Inc. Device [106b:015a]
        Kernel modules: brcmfmac, wl
04:00.0 PCI bridge [0604]: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] [8086:1578] (rev 02)


No change in lspci but in the networks UI, I have no option to use any wifi features. I’m going to revert this.

I think now, broadcom-wl does not support this Chip?

Not really sure. All I know is blacklisting brcmfmacs and installing broadcom-wl in its place did not work :slight_smile: