Repository navigation
Conversation
ccac1ff to
5e5e412
Compare
Add BCM43224 (14e4:4353) WiFi chip detection for MacBook Air 5,2. When b43/brcmsmac/bcma load before wl, they claim the device and prevent the proprietary wl driver from attaching. Blacklist them in /etc/modprobe.d/broadcom-wl.conf so broadcom-wl-dkms works out of the box on fresh installs. Verified on physical MacBook Air 5,2: 7.8x link speed improvement (144 Mbps → 1170 Mbps) with broadcom-wl-dkms vs brcmsmac.
5e5e412 to
ad56c45
Compare
Omarchy runs linux-omarchy, and the base install already supplies its headers before hardware setup, per agents/skills/install-scripts.md. linux-headers is the stock Arch kernel's, so it pulled in headers for a kernel that is not installed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
|
||
| if (echo "$pci_info" | grep -q "14e4:43a0" || echo "$pci_info" | grep -q "14e4:4331"); then | ||
| echo "BCM4360 / BCM4331 detected" | ||
| if (echo "$pci_info" | grep -q "14e4:43a0" || echo "$pci_info" | grep -q "14e4:4331" || echo "$pci_info" | grep -q "14e4:4353"); then |
There was a problem hiding this comment.
Existing installs miss the fix. This detection and blacklist run during installation or an explicit hardware-setup rerun, but no migration applies them to existing systems. Updating an affected MacBook Air therefore leaves its driver conflict unresolved unless the user reruns hardware setup. Add an upgrade migration so existing installations receive the fix.
| blacklist b43 | ||
| blacklist brcmsmac | ||
| blacklist bcma |
There was a problem hiding this comment.
Blacklist affects other adapters. If a machine has a second Broadcom adapter that needs b43 or brcmsmac and is not supported by wl, these system-wide blacklist entries prevent its driver from loading. That adapter stops working even though the detected Wi-Fi device may work. Account for other installed devices before applying the blacklist globally.
| grep -q '14e4:43a0' "$fix_script" || \ | ||
| fail "fix-bcm43xx.sh still detects BCM4360 (14e4:43a0)" | ||
| pass "fix-bcm43xx.sh still detects BCM4360 (14e4:43a0)" | ||
|
|
||
| grep -q '14e4:4331' "$fix_script" || \ | ||
| fail "fix-bcm43xx.sh still detects BCM4331 (14e4:4331)" | ||
| pass "fix-bcm43xx.sh still detects BCM4331 (14e4:4331)" |
There was a problem hiding this comment.
Existing chips lack behavior tests. These checks only confirm that the BCM4360 and BCM4331 IDs appear somewhere in the script. They would still pass if detection stopped handling either chip but its ID remained in a comment. Run both IDs through the stubbed
lspci path so the tests catch regressions in the shared detection branch.
The package already ships /usr/lib/modprobe.d/broadcom-wl-dkms.conf blacklisting b43, b43legacy, bcm43xx, bcma, brcm80211, brcmfmac, brcmsmac and ssb, so the extra /etc file added nothing while wl is installed. Unlike the package's file, it outlived the package: removing broadcom-wl-dkms to fall back to brcmsmac or b43 left both blacklisted and the machine without Wi-Fi after reboot. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: Codex Medium <noreply@openai.com>
|
Thanks for this, @andyholst. I reviewed it and pushed two commits to your branch. The detection line for BCM43224 ( What changed on the branch, and why
What ran, and where All of this ran on a disposable Omarchy VM with a stubbed
The VM has no BCM43224, so whether wl actually binds and performs better on a MacBook Air 5,2 hasn't been tested here. Second opinion Codex Medium reviewed the PR. Its independence from my review isn't guaranteed. It agreed about the headers and the redundant blacklist, and it was the one that spotted the leftover file breaking a fallback to brcmsmac. On the pushed head it found nothing left to act on. For the maintainer The open question isn't about the code. brcmsmac supports BCM43224 in the kernel, and the table in the description shows it connected. So on quattro this machine already has Wi-Fi, and this PR is a choice to switch it to the proprietary wl driver for performance. That decision is the maintainer's. The 1170 Mbit/s figure can't be a link rate for this chip: BCM43224 is 2x2 802.11n, which tops out around 300 Mbit/s. @andyholst, could you say where that number came from? Could you also confirm that Related open PRs also change This now waits on the maintainer. |
|
Diff only adds PCI Please confirm on a MacBook Air 5,2 that wl is the right driver here; #7593 / #13532 are the cautionary tale for shipping wl on Airs where b43/brcmsmac was safer. Nearby chip PRs: #15106 (BCM43228), #11311 (BCM4322 b43-firmware). |
Summary
Changes
Why the blacklist is needed
When b43/brcmsmac/bcma load before wl, they claim the BCM43224 device and prevent the proprietary wl driver from attaching. This leaves the interface down or unstable. Blacklisting ensures broadcom-wl-dkms works out of the box.
Why this only affects Broadcom hardware
The blacklist is only written when a Broadcom WiFi chip is detected (14e4:43a0, 14e4:4331, or 14e4:4353). Systems with Intel, Qualcomm, or other WiFi chips never trigger this code path.
Testing
Real-World WiFi Verification
7.8x faster link speed with broadcom-wl-dkms. Clean boot, no conflicts.