MacBook Pro M5 Pro: DarkWake causing overnight battery drain

Hello! I'm new to Macbook's, brand new and was hoping for some advice.

(MacBook Pro M5 Pro 18-20 48GB 2TB macOS Tahoe 26.3.1)


I’m trying to figure out if what I’m experiencing is normal or something off with my new MacBook Pro M5 Pro 48G 18-20gpu 2TB.

It’s brand new (about a week old, AppleCare+), and I’m seeing about 20% battery drain overnight while the lid is closed and it should be sleeping.

What’s confusing is that during normal use, battery life is excellent. For example, I watched ~1.5 hours of Apple TV in high quality and only lost about 5%, so the battery itself seems solid.

What I’ve tested so far:

  • Fully quit all apps (Cmd+Q, not just closing windows)
  • Properly ejected and disconnected from dock/external devices
  • Verified Wake for network access = Never
  • Checked pmset -g assertions before sleep → clean (no system sleep blockers, no external media)
  • Tried to leave it unplugged again overnight , battery at 100%
  • Ran pmset -g log | grep -i "wake" and saw repeated DarkWake entries overnight


From what I can tell, it looks like the system is waking frequently for:

  • network activity (WiFi / mDNSResponder)
  • background tasks (SleepService / dasd)


Current hypothesis:

It seems like a DarkWake loop caused by network/background services, not hardware or battery-related.


My questions:

  1. Is this something others with M4/M5 Pro Macs are seeing on newer macOS versions?
  2. Has anyone narrowed it down to a specific cause (Handoff, AirDrop, network environment, etc.)?
  3. Is there a proper fix without disabling core features like WiFi or Handoff long-term?

Not panicking since it’s under warranty, just trying to understand whether this is expected behavior, a macOS bug, or something misconfigured.


Appreciate any insight 👍

MacBook Pro (M5 Pro, 2026)

Posted on Mar 18, 2026 11:07 AM

Reply
Question marked as Top-ranking reply

Posted on Jun 23, 2026 8:50 AM

Hello you All :)


I do have the same problem with darkwakes on battery. It does not happen when I do turn off Wi-Fi and Bluetooth before closing the laptop lid/pressing sleep. Below are my findings using Gemini, where finaly some script is managing turning off/on the wifi/bt automaticly:


Apple Silicon Battery Drain Fix (SMC.OutboxNotEmpty)

1. The Problem

MacBooks (M1 to M5) experience severe battery drain (20-30% overnight) and overheat inside bags due to a persistent DarkWake loop.

Checking pmset -g log reveals repetitive wake triggers every few seconds:

due to smc.sysState.Wake(0x70070000) wifibt SMC.OutboxNotEmpty centauri-beta/ (or centauri-alpha / ARPT)

Root Cause: The Apple Silicon System Management Controller (SMC) and wireless chip handle sleep states hardware-side, ignoring macOS settings like "Wake for Network Access". In heavy radio environments, Bluetooth BLE/Continuity spam or Wi-Fi session drops overflow the chip's hardware buffer (OutboxNotEmpty), forcing hardware interrupts that repeatedly kick the CPU out of deep sleep.

2. The Manual Fix

Physically disabling radios before closing the lid resets the SMC buffer and stops the loop completely. Turning off both Wi-Fi and Bluetooth via the menu bar toggles guarantees 0% drain.

The Automated Fix (Script + Trigger)

This setup uses sleepwatcher to automatically cut off Bluetooth and Wi-Fi the millisecond the lid closes, and restores them within 2 seconds of opening it.

Step 1: Install Required CLI Tools

Install the necessary binaries via Homebrew:

Bash


brew install sleepwatcher blueutil

Step 2: Create the Execution Script

Open the editor:

Bash


sudo nano /usr/local/bin/bt-sleep-fix.sh

Paste the following code, save (Ctrl + O -> Enter), and exit (Ctrl + X):

Bash


#!/bin/bash
BLUEUTIL="/opt/homebrew/bin/blueutil"

if [ "$1" = "sleep" ]; then
    $BLUEUTIL --power 0
    networksetup -setnetworkserviceenabled Wi-Fi off
elif [ "$1" = "wake" ]; then
    $BLUEUTIL --power 1
    networksetup -setnetworkserviceenabled Wi-Fi on
fi

Apply strict system permissions:

Bash


sudo chmod 755 /usr/local/bin/bt-sleep-fix.sh
sudo chown root:wheel /usr/local/bin/bt-sleep-fix.sh

Step 3: Create the LaunchDaemon Config

Create a configuration file to link sleepwatcher events to the script:

Bash


sudo nano /Library/LaunchDaemons/com.powerpatrol.btfix.plist

Paste this XML structure, save, and exit:

XML


<?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.powerpatrol.btfix</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/homebrew/sbin/sleepwatcher</string>
        <string>-V</string>
        <string>-s</string>
        <string>/usr/local/bin/bt-sleep-fix.sh sleep</string>
        <string>-w</string>
        <string>/usr/local/bin/bt-sleep-fix.sh wake</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

Step 4: Load the Daemon into the OS Kernel

Register and run the daemon in the background:

Bash


sudo launchctl load -w /Library/LaunchDaemons/com.powerpatrol.btfix.plist
⚠️ Crucial: Upon the first wake, macOS security (TCC) will prompt you with a dialog asking if sleepwatcher can use Bluetooth. You must click "Allow", otherwise the background process will be silently blocked from manipulating the hardware state.


67 replies

MacBook Pro M5 Pro: DarkWake causing overnight battery drain

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.