Skip to content

02-wifi-firmware.sh

Manages Broadcom BCM4377b Wi-Fi and BRCM4377 Bluetooth firmware for the MacBook Air 2020. Provides verification, backup, restore, and re-installation capabilities.

Usage

bash
# Interactive menu
bash scripts/02-wifi-firmware.sh

# Direct subcommands
bash scripts/02-wifi-firmware.sh verify
bash scripts/02-wifi-firmware.sh backup
sudo bash scripts/02-wifi-firmware.sh restore
sudo bash scripts/02-wifi-firmware.sh install-pkg
bash scripts/02-wifi-firmware.sh guide

# Preview without changes
bash scripts/02-wifi-firmware.sh --dry-run
bash scripts/02-wifi-firmware.sh --help
FlagDescription
--dry-runPreview all actions without modifying the system
--helpShow usage information and exit

Subcommands

CommandRootDescription
verifyNoCheck that all required firmware files are present and test Wi-Fi/BT interfaces
backupNoCopy firmware files to ~/.config/firmware-backup/brcm/ with a manifest
restoreYesRestore firmware from the backup directory and reload brcmfmac
install-pkgYesDownload and install the apple-bcm-firmware package from the arch-mact2 mirror
guideNoDisplay the macOS firmware extraction guide for fresh installs

Firmware Files

The MacBook Air 2020 (board ID: fiji) requires:

FilePurpose
brcmfmac4377b3-pcie.apple,fiji.binWi-Fi firmware binary
brcmfmac4377b3-pcie.apple,fiji.clm_blobWi-Fi regulatory data
brcmfmac4377b3-pcie.apple,fiji.txcap_blobWi-Fi TX power caps
brcmbt4377b3-apple,formosa.binBluetooth firmware
brcmbt4377b3-apple,formosa.ptbBluetooth patch RAM

All files live in /lib/firmware/brcm/.

Backup Location

Backups are stored at ~/.config/firmware-backup/brcm/ with a MANIFEST.txt listing file sizes and backup date.

Files Modified

PathPurpose
/lib/firmware/brcm/brcmfmac4377*Wi-Fi firmware (restore/install-pkg)
/lib/firmware/brcm/brcmbt4377*Bluetooth firmware (restore/install-pkg)
~/.config/firmware-backup/brcm/Backup directory (backup)

Prerequisites

  • curl (for install-pkg)
  • Internet connectivity (for install-pkg)
  • Backup must exist before running restore

Source

View the full source on GitHub.