Progetto driver Wi-Fi personalizzato per Broadcom BCM4360 (rev 03)
con subsystem Apple 0x106b:0x0117 (MacBook Air Early 2015 — MacBookAir7,2)
su Debian 13 Trixie, kernel 6.12.x+deb13-amd64.
Il chip BCM4360 è supportato esclusivamente dal driver proprietario wl
(pacchetto broadcom-sta-dkms). Non esistono alternative open-source
(brcmfmac/brcmsmac/b43 non supportano questo chip).
Il driver wl è un binary blob del 2013 con un thin C-wrapper.
Broadcom non lo aggiorna più. Su Apple hardware il driver presenta:
| Sintomo | Causa radice |
|---|---|
| Disconnessioni frequenti | set_power_mgmt() ignorato; il driver torna a PM_FAST automaticamente |
| Velocità bassa / throughput scarso | Power throttling, parametri NVRAM Apple non ottimizzati |
| Rotto dopo sleep/wake | PM settings azzerati all'uscita dal suspend, mai re-applicati |
| Errori con NetworkManager scan-rand | Bug nel MAC address setting (già fixato nel patch 20 Debian) |
Questo progetto crea bcm4360-apple, un modulo DKMS che:
- Parte dal sorgente
broadcom-sta-dkms 6.30.223.271(37 patch Debian già incluse) - Applica patch Apple-specifiche in cima:
apple-001— forza semprePM_FORCE_OFFa livello cfg80211apple-002— applicaPM_FORCE_OFFdurante l'init dell'interfacciaapple-003— re-applicaPM_FORCE_OFFdopo ogni resume da suspendapple-004— fix TX power qdBm per hardware Appleapple-005— soglie di roaming ridotte (evita "sticky AP")
- Installa configurazioni di sistema (udev, systemd, NetworkManager, modprobe)
- Si auto-aggiorna via DKMS ad ogni aggiornamento kernel
prj-driver-wifi/
├── README.md ← questo file
├── Makefile ← orchestratore build (fetch→patch→dkms→install)
├── dkms.conf.in ← template dkms.conf
├── patches/
│ ├── series ← lista ordinata delle patch Apple
│ ├── apple-001-pm-force-off-always.patch
│ ├── apple-002-init-pm-off.patch
│ ├── apple-003-wake-pm-reinit.patch
│ ├── apple-004-tx-power-correction.patch
│ └── apple-005-roaming-threshold.patch
├── system/
│ ├── install.sh ← installa configs di sistema
│ ├── uninstall.sh ← rollback completo
│ ├── modprobe.d/ ← blacklist conflicting modules + options
│ ├── udev/ ← trigger PM off su interface-up
│ ├── systemd/ ← service PM re-apply post-resume
│ ├── networkmanager/ ← disable NM powersave, scan-rand fix
│ └── scripts/ ← helper scripts
└── docs/
├── ANALYSIS.md ← template raccolta dati sistema
├── INSTALL.md ← guida installazione step-by-step
├── PATCHES.md ← documentazione tecnica di ogni patch
└── TESTING.md ← procedura di test e validazione
# 1. Clona il repo (o usa il workspace esistente)
cd /home/matteo/Dev/prj-driver-wifi
# 2. Installa dipendenze
sudo apt-get install -y dkms broadcom-sta-dkms build-essential linux-headers-$(uname -r)
# 3. Build e install completo
sudo make install
# 4. Ricarica il modulo
sudo modprobe -r wl && sudo modprobe wl
# 5. Verifica
make testPer una installazione manuale passo-passo, vedi docs/INSTALL.md.
| Componente | Versione testata |
|---|---|
| OS | Debian 13 Trixie |
| Kernel | 6.12.63+deb13-amd64 |
| broadcom-sta-dkms | 6.30.223.271-26 |
| DKMS | ≥ 2.1.0 |
| GCC | ≥ 12 |
sudo make uninstall
sudo apt-get install --reinstall broadcom-sta-dkms
sudo modprobe wl- WPA3 non supportato — il binary blob è troppo datato; usare WPA2
- IBT warnings — su CPU Intel Broadwell (MacBook Air 2015) non presenti; su CPU
post-2020 potrebbero richiedere
ibt=offnel kernel cmdline GRUB - Windows-only chips — NDISwrapper non è un'opzione praticabile su kernel 6.x
- brcmfmac/brcmsmac — non supportano BCM4360; esclusivamente
wl