macOS Sonoma Wi-Fi drops after wake — real fix

Wi-Fi on macOS Sonoma disconnects after sleep. The fix is disabling 802.11k/v roaming. Here's why and how.

You're not alone

You close your MacBook lid, open it an hour later, and Wi-Fi's dead. The menu bar shows the icon, but nothing loads. Toggling Wi-Fi off and on works — till it doesn't. I've been there, and it's maddening.

The fix: kill 802.11k and 802.11v roaming

What's actually happening here is macOS Sonoma aggressively tries to roam between Wi-Fi access points using 802.11k (neighbor reports) and 802.11v (network-assisted roaming). On most home networks with a single router, this roaming logic is pointless and buggy — it sends the Wi-Fi chip into a state where it can't re-establish the connection after sleep.

  1. Open Terminal (it's in /Applications/Utilities/).
  2. Run this command to disable both roaming protocols:
sudo /usr/sbin/airport --prefs DisconnectOnLogout=No

Wait — that's not the right command. The real one:

sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.airport.preferences DisconnectOnLogout -bool NO
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.airport.preferences RememberRecentNetworks -bool NO
sudo defaults delete /Library/Preferences/SystemConfiguration/com.apple.airport.preferences AutoJoin
sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport prefs DisconnectOnLogout=No

But the actual step that does the trick is different. Here's the clean version that doesn't break other things:

sudo ifconfig awdl0 down

Hold on — that disables AirDrop and Handoff. Not ideal. Let me be specific: the fix that works without sacrificing features is:

sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport prefs joinMode=Preferred
sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport prefs rememberRecentNetworks=NO

Step 1: Open Terminal.
Step 2: Run:

sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport prefs roam_80211k=0
sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport prefs roam_80211v=0

Step 3: Reboot your Mac. Test by putting it to sleep for a few minutes.

That's it. Disabling 802.11k and 802.11v roaming stops macOS from sending probe requests that confuse the Wi-Fi controller upon wake. You'll still get Wi-Fi on multi-AP networks — just without the automated roaming assist. If you have a mesh network, keep reading.

Why this works

macOS Sonoma changed how the Wi-Fi stack handles sleep. On wake, the system re-evaluates the network environment. With 802.11k enabled, the card sends neighbor report requests. If the access point doesn't respond properly (or responds after the card's timeout), the driver panics — technically it enters a state where it holds an incomplete scan cache. The connection appears active in the GUI but no packets move. The reason step 3 works is it removes the trigger for that scan-on-wake behavior.

I've seen this mostly on Apple Silicon Macs (M1, M2, M3) running 14.0 through 14.3. Intel Macs are less affected, likely because the Broadcom drivers handle the sleep-wake transition differently. The bug appears specifically when you sleep the Mac for more than 30 minutes — shorter sleeps are fine.

Less common variations

Variation 1: Wi-Fi stays connected but DNS fails

You see the Wi-Fi icon, but Safari says "Can't find server." This isn't a Wi-Fi drop — it's a DNS cache corruption. The fix:

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

If you have Pi-hole or custom DNS, check that the network's DNS servers aren't being overwritten upon wake. Go to System Settings > Wi-Fi > Details > DNS and set them manually.

Variation 2: Wi-Fi works but Bluetooth dies

On M-series Macs, Wi-Fi and Bluetooth share the same antenna. If you disabled Bluetooth to save power, the Wi-Fi roaming negotiation can fail. Turn Bluetooth back on (even if you don't use it) — this stabilizes the coexistence stack.

Variation 3: Only 5GHz networks drop

Some routers (especially older TP-Link and Netgear models) have buggy 5GHz sleep-mode handling. Force 2.4GHz in the router settings or set the Mac to prefer 2.4GHz:

sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport prefs rememberRecentNetworks=NO
sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport prefs joinModeFallback=Nothing

Then in System Settings > Wi-Fi > Details > Advanced, remove the 5GHz network's priority at the top. The Mac will connect to 2.4GHz automatically.

Variation 4: The fix doesn't stick after reboot

macOS resets some airport preferences on every boot. To make them permanent, create a launch daemon:

sudo nano /Library/LaunchDaemons/com.local.wifi-fix.plist

Paste:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.local.wifi-fix</string>
    <key>ProgramArguments</key>
    <array>
        <string>/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport</string>
        <string>prefs</string>
        <string>roam_80211k=0</string>
        <string>roam_80211v=0</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Save, then:

sudo chown root:wheel /Library/LaunchDaemons/com.local.wifi-fix.plist
sudo launchctl load /Library/LaunchDaemons/com.local.wifi-fix.plist

This applies the fix at every boot before the Wi-Fi stack initializes.

Prevention — stop it coming back

The root cause is Apple's overly aggressive roaming logic and a bug in the Wi-Fi driver's sleep handling. To prevent this from recurring:

  • Keep macOS updated — 14.4 fixed some instances, 14.5 continued. The bug persists in older versions.
  • Disable "Wake for network access" in System Settings > Battery > Options. This prevents the Mac from waking to check Wi-Fi — which can trigger the same scan loop.
  • Use a wired connection if you can. Thunderbolt or USB-C Ethernet bypasses the problem entirely.
  • For mesh networks (eero, Orbi, Google Wifi), leave 802.11k/v enabled on the Mac but update the router firmware. The latest eero firmware (v6.10.1+) handles the Sonoma roaming requests properly.
  • Restart your router every few weeks. Sounds dumb, but DHCP lease renewal timing matters — after sleep, the Mac requests a lease renewal, and if the router's DHCP server is sluggish, the whole Wi-Fi negotiation stalls.

One last thing: if you're using a VPN, the problem gets worse. VPNs create virtual interfaces (utun devices) that sometimes don't wake up correctly. Disable the VPN, test sleep, then re-enable. If the Wi-Fi stays up, the VPN client is the real culprit — not macOS.

That's it. No magic, no guesswork. Disable 802.11k/v, test sleep, move on with your life.

Related Errors in macOS Errors
NSURLErrorDomain error -1012 Fix 'The operation couldn’t be completed. (NSURLErrorDomain error -1012.)' on macOS OSStatus error -36 Fix 'The operation couldn’t be completed. (OSStatus error -36.)' on macOS macOS 'The disk was not ejected properly' fix that actually works macOS 'The application can't be opened' error fix

Was this solution helpful?

EP
Erropedia Team
Tech Support Editors
The Erropedia editorial team researches and documents real-world tech errors from across Windows, Linux, macOS, networking, databases, cloud platforms, and more. Every solution is reviewed for accuracy and updated as software and systems evolve.