The system Wi-Fi card was powered on and the interface (en1) was recognized by the OS kernel, but the Wi-Fi menu bar, Control Center, and CoreWLAN CLI probes showed zero wireless networks available.
Scan timed out after 30.0s with error EBUSY (16).
Discovered in 3.99s across 2.4 GHz and 5 GHz bands.
Ch 36 (80 MHz), RSSI -56 dBm to -67 dBm, WPA3 Personal.
Wedged userspace Dext recovered without rebooting OS.
🔍 Incident Summary & Symptoms
⚙️ Root Cause Analysis
A multi-layered diagnostic inspection of the macOS unified log stream and CoreWLAN subsystem revealed three interacting bottlenecks:
DriverKit WLAN Finite State Machine (FSM) Deadlock
In modern macOS releases, wireless hardware interactions are managed by the DriverKit userspace daemon (com.apple.DriverKit-AppleBCMWLAN.dext). After prolonged uptime (~32 days), the driver's internal scan manager became stuck in SCAN_MANAGER_STATE_IN_PROGRESS.
kernel: (com.apple.DriverKit-AppleBCMWLAN.dext) [wcl] handleAbortRequest@1241: Scan Timeout after 30.002472791 sec, processing state: 3
kernel: (com.apple.DriverKit-AppleBCMWLAN.dext) [wcl] cmdIouc@145: Fail to Set cmd=<APPLE80211_IOC_WCL_TRIGGER_CC, 439> res=0xe00002ec
kernel: (com.apple.DriverKit-AppleBCMWLAN.dext) [dk] handleEventScanComplete@2292: Infra Scan complete status 4 (Aborted)
Continuous EBUSY (16) Scan Rejections in airportd
Because the Dext was indefinitely waiting for firmware completion timers, every subsequent scan request dispatched by airportd or Control Center was rejected immediately with error code 16 (EBUSY):
airportd: (IO80211) Apple80211IOCTLSetWrapper: ifname['en1'] IOUC type 10/'APPLE80211_IOC_SCAN_REQ' return 16/0x00000010
airportd: (IO80211) Apple80211Scan: ifname['en1'], total time [0.001193], err[16], Apple80211Scan Failed
airportd: (IO80211) Info: Failed to perform Wi-Fi scan, returned error code 16, will try again in 200 ms
Regulatory Domain Channel Sanitization Collapse
While stuck in this hung FSM state, the 802.11 regulatory domain could not query local 802.11d beacon data or geocoding services, resetting the locale to fallback X0. The driver subsequently stripped all 35 channels from the scan list:
kernel: (com.apple.DriverKit-AppleBCMWLAN.dext) [dk] sanitizeScanData@350: 0 (35 - 35) unsupported channels removed
🛠️ Remediation Performed
| Phase | Action | Target Component | Result |
|---|---|---|---|
| 1. Driver Reset | Terminated hung Dext PID | com.apple.DriverKit-AppleBCMWLAN |
Dext Respawned Cleanly |
| 2. IPC Daemon Recovery | Restarted AirPort daemon & user agent | /usr/libexec/airportd & WiFiAgent |
Fresh XPC Channels Created |
| 3. Regulatory Resync | Country code updated from X0 to US |
CoreWLAN / IO80211 Family | All 35 Channels Enabled |
| 4. Auto-Association | Reconnected preferred SSID | LogicNet (WPA3-SAE, 5GHz) |
Active & DHCP Assigned |
📡 Post-Fix Discovery Verification
A fresh live CoreWLAN sweep completed in 3.99 seconds, successfully discovering 25 nearby access points:
💻 One-Liner Cheatsheet for Future Troubleshooting
If macOS Wi-Fi scanning locks up after weeks of continuous uptime, execute the following commands in Terminal:
# 1. Kill the hung DriverKit WLAN userspace process (will auto-respawn)
sudo pkill -9 -f "DriverKit-AppleBCMWLAN"
# 2. Restart airportd and the user-facing WiFiAgent
sudo killall -9 airportd WiFiAgent 2>/dev/null
# 3. Verify scan capabilities and visible SSIDs via CoreWLAN
swift -e '
import CoreWLAN
if let iface = CWWiFiClient.shared().interface() {
if let nets = try? iface.scanForNetworks(withSSID: nil) {
print("Discovered \(nets.count) networks:")
for n in nets { print(" - \(n.ssid ?? ""): \(n.rssiValue) dBm (Ch \(n.wlanChannel?.channelNumber ?? 0))") }
}
}
'