Skip to content

Instantly share code, notes, and snippets.

@vhogemann
Last active June 14, 2026 14:03
Show Gist options
  • Select an option

  • Save vhogemann/9e0f98e17dd51f82f0147ed1b03f66da to your computer and use it in GitHub Desktop.

Select an option

Save vhogemann/9e0f98e17dd51f82f0147ed1b03f66da to your computer and use it in GitHub Desktop.
Fixing Broadcom BCM43224 Wireless on MacBook Air (Mid 2011) with Kubuntu 26.04

Fixing Broadcom BCM43224 Wireless on MacBook Air (Mid 2011) with Kubuntu 26.04

This tutorial outlines the steps to fix the immediate kernel panic/hard freeze caused by the Broadcom BCM43224 wireless card on older MacBook hardware running modern Linux kernels (e.g., 7.0.0+).

The Problem

The internal Broadcom card (BCM43224 [14e4:4353]) often triggers an immediate system freeze when loading the proprietary wl driver or the open-source b43 driver. This is typically due to modern power management or MSI (Message Signaled Interrupts) conflicts on the older MacBook PCI bus.

Prerequisites

  • An external USB Wi-Fi dongle or Ethernet adapter (to maintain internet during the fix).
  • Terminal access.

Step 1: Purge Conflicting Drivers

First, remove the proprietary Broadcom stack which is often the primary cause of the panics.

sudo apt purge bcmwl-kernel-source dkms

Step 2: Stabilize Hardware Handshake (GRUB)

Modify the GRUB configuration to include kernel parameters that stabilize the hardware interaction by disabling MSI for PCI and limiting CPU idle states.

  1. Open /etc/default/grub:

    sudo nano /etc/default/grub
  2. Find the line starting with GRUB_CMDLINE_LINUX_DEFAULT and append the following parameters: pci=nomsi intel_idle.max_cstate=1

    Example: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=nomsi intel_idle.max_cstate=1"

  3. Update GRUB:

    sudo update-grub

Step 3: Configure Module Blacklist

Ensure that the faulty b43 and ssb modules are blocked, allowing the more stable brcmsmac driver to take control.

  1. Create a new blacklist file:
    sudo nano /etc/modprobe.d/blacklist-broadcom.conf
  2. Add the following content:
    # Blacklist drivers that cause panics on BCM43224
    blacklist b43
    blacklist ssb
    # Ensure bcma and brcmsmac are NOT blacklisted
    

Step 4: Install Firmware (if missing)

The brcmsmac driver requires the Broadcom firmware package.

sudo apt update
sudo apt install firmware-brcm80211

Step 5: Finalize and Reboot

To apply the GRUB parameters and clean up the module state, a reboot is required.

sudo reboot

Verification

After rebooting, check that the interface is active:

nmcli device status
# You should see wlp2s0b1 (or similar) as 'connected' or 'disconnected' (not 'unmanaged')

# Verify the driver in use
lspci -nnk -d 14e4:4353
# Look for "Kernel driver in use: brcmsmac"

Troubleshooting

If the system still feels unstable, verify that your kernel command line correctly applied the parameters:

cat /proc/cmdline

Check for pci=nomsi and intel_idle.max_cstate=1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment