Broadcom BCM43224 Wifi Slow

PC: Apple MacBook Air 11" mid-2011 model.
Adapter: Broadcom BCM43224

The Wifi adapter worked out of box with Clear Linux, I never had to change anything to get it to connect to Wifi as expected. My problem is with the speeds I am getting - only a max of 20mbps on a 300mbps connection.

This is the original output post-install using lspci -k:

Network controller: Broadcom Inc. and subsidiaries BCM43224 802.11a/b/g/n (rev 01)
Subsystem: Apple Inc. AirPort Extreme
Kernel driver in use: bcma-pci-bridge
Kernel modules: bcma

I followed the instructions from this post to install the broadcom-wl driver with DKMS.

I blacklisted bcma in /etc/modprobe.d/broadcom.conf

After this, my Wifi is still working, but the speeds I am getting are still no better.

This is my current output from lspci -k:

Network controller: Broadcom Inc. and subsidiaries BCM43224 802.11a/b/g/n (rev 01)
Subsystem: Apple Inc. AirPort Extreme
Kernel driver in use: wl
Kernel modules: bcma, wl

I’m really not sure where to go from here. Anything I find online for troubleshooting Broadcom Wifi is focused on someone with a non-working/intermittent connection. I’m not sure what I can do to troubleshoot this slow speed issue.

The only other bit of info that may help is from my previous install of Fedora 30. I had the same problem, and it turned out to be a bug with wpa_supplicant. I had to install a different version using a copr repo. I’m not sure how to troubleshoot my issue with with wpa_supplicant, so any help there would be much appreciated as well.

I might have made a mistake with the blacklist. I recreated the conf as follows:

/etc/modprobe.d/blacklist.conf

The file contains:

blacklist bcma

After doing that and rebooting, I can get up to 70mbps on speed tests, but still a far cry from 300mbps. Perhaps there is still a driver issue afterall. Will keep plugging away while waiting on some replies.

Is your speed for LAN transfers also capping out at 20?

This device doesn’t have ethernet, and I don’t have a USB adapter unfortunately.

What sort of speed test is this? What sort of internet connection does your house have?

Even in the most ideal situation, you will not be able to get 100% of the advertised wifi bandwidth. The spectrum is shared between devices and if you are anywhere near other houses with wifi, you will be sharing the spectrum with others and interference will be degrading your bandwidth - You’d have to live far outside of town to be able to get close to the maximum, and have very few devices connected.

Speed tests were done through speedtest.net and fast.com, as well as the speed test page from my ISP. I am using Wifi for my connection in the home, and I have been able to achieve close to the maximum provisioned speed (300mbps) from this device through Wifi. I was able to do this under macOS as well as my previous Linux install of Fedora 30. I did have a speed issue with F30, and the cause was a bug in wpa_supplicant. I can’t find any info to say the same bug is present in Clear Linux, and as well I know Broadcom chips have always been problematic in Linux. In all honesty, I would replace the Broadcom chip in the device for something else with better Linux support, even if it meant losing support under macOS.

Perhaps there is no real solution, and the problem lies with poor driver support. So I may never see optimal Wifi performance. But, if there is anything I can try that I haven’t posted about so far in regards to drivers or otherwise, I’m still willing to troubleshoot.

You could try iwd with systemd-networkd to manage the device, which would bypass wpa_supplicant entirely and use the kernel crypto stack instead. It works, but setup is manual (not too difficult, mostly use iwctl and create a network file for the wifi device link for systemd-networkd). Maybe that will shed some light on whether wpa_supplicant is the issue.

Searching your adapter finds others with your symptoms too, unfortunately.

The reddit thread and linked fedora bug report narrow it down to a bug in the broadcom drivers and disabling CONFIG_MESH with a custom version of wpa_supplicant, like you mentioned earlier:

So atleast you know where the fix is if you wanted to compile your own version of wpa_supplicant for a workaround. There is a comment that reddit thread about setting wifi.scan-rand-mac-address=no in a NetworkManager conf. I’d be curious to know if that fixes your problem trying both drivers.

Thanks everyone for the suggestions. I have been busy and haven’t been able to mess around much since my last post. I will dig into the wpa_supplicant suggestions as soon as I can, and if I find a solution/improvement I will report back. I don’t want to be one of those people that leaves a thread in limbo so if I have more to add I will be back!