Apple - MacBook Pro 13 with Retina display consumes 10% battery overnight with the lid closed, is this normal?

The problem is the macOS continues to check for updates (including email, software, news, etc.) while your MacBook Pro is asleep (this feature is called "Power Nap"). This means it's very quick to get up and running when you open your MacBook, but it also means your battery goes down while it's asleep.

The problem some people have is that even with "Power Nap" disabled, their battery still goes down as MacOS continues to check for updates (it's possibly other software checking online for things).

To fix this, you can tell you MacBook Pro to disconnect from the Internet while it's asleep, preventing online checks.

To do this, you need to set the tcpkeepalive setting to 0.

Open up Terminal and type:

sudo pmset -b tcpkeepalive 0

After you enter your password for sudo it gives you a warning saying some features may not work properly. This is fine, it simply disables Internet access during sleep.

You can check it is set correctly by running:

pmset -g

Which should show "tcpkeepalive 0"

And you can, of course, reverse it at any time by running:

sudo pmset -b tcpkeepalive 1

Simple!

Note: You can also force your Mac not to connect to the Internet when it's asleep even when connected to a power supply, if you like: sudo pmset -a tcpkeepalive 0. (Personally I don't mind as long as it's not using my battery, so -b is fine for me.)

Also note: The results from pmset -g will vary depending on if your MacBook Pro is connected to power or not when you run the command. It will reflect the current tcpkeepalive setting, depending on its current power situation.


Update : This doesn't work with Catalina, see Django Reinhardt's answer instead.

I was suffering the same issue before, my MBP 2015's battery was draining slowly but when I don't use it so frequently, this caused so much pain. This method helped me so much; now I can go out with my Mac with 20% charge and make my day. There is a significant difference between MacBook Pro 2015 and the previous models of MacBook Pros. You can check these settings by this command line;

ioreg -l | grep IOPlatformFeatureDefaults

The output on your mac would be like this;

{"TCPKeepAliveDuringSleep"=Yes,"DNDWhileDisplaySleeps"=No,"TCPKeepAliveExpirationTimeout"=43200,"NotificationWake"=Yes}

To make your MBP sleep deep like the old versions you should first restart your computer into recovery mode. To do that you should restart your mac and hold CMD+R until you hear the start up sound. After that open terminal and type this;

csrutil disable

Then restart your MacBook again. Go to this destination, you can access inside kext files by right clicking -> Show Package Contents /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources

Find your board id with:

ioreg -l | awk '/board-id/{print $4}' | sed 's/[<">]//g'

Open <your_board_id>.plist (e.g. Mac-E43C1C25D4880AD6.plist) file by a text editor and edit these settings just like these;

<key>TCPKeepAliveDuringSleep</key>
<false/>
<key>NotificationWake</key>
<false/>
<key>DNDWhileDisplaySleeps</key>
<true/>

TCPKeepAliveDuringSleep keeps your MacBook connections open when its sleeping, so it keep Wifi connected. NotificationWake wakes your Mac randomly to check notifications especially make this one false. DNDWhileDisplaySleeps means "Do not disturb on sleep"; MacBook does get disturbed by notifications when it's asleep.

My personal opinion is this process should be done by every 2015+ MacBook user because MacBooks are not cell phones that ring for notifications. Apple should have made a toggle button for this.

Do not forget to enable System Integrity Protection again. You should restart into recovery mode and on terminal type "csrutil enable" and restart.

UPDATE: This reportedly no longer works with the latest versions of macOS. See this MacRumors article for more info.


This is not normal, but it is, at the least, very clear in the logs that there are ACK packets being processed, and your wireless card is preventing the laptop from sleeping normally. The logs are in line with developer notes for events available to make the computer wake up, and log that it is "slow", so far example, as OzzieSpin said in a comment above, your computer is waking up abnormally--unless (as also several comments above discussed, it is trying to connect with something)--for example verify, bluetooth is off, nothing is connect to the computer in any way, including the SD card slot,the computer was not connected to any type of server e.g. smb shared-drives or ldap, and there are no programs at all running (yes, including Safari, or Drop Box, which both could cause exactly these symtoms), including those you don't expect (see for example your "start-up" items under Users & Groups in System Preferences, and $USER/Library/LaunchAgents). Would you please post the output of sudo ifconfig?

You can verify this by looking at this nearly identical post on Apple's website, where the OP comes back after receiving Apple support, and decides that the issue was an incompatible wireless access point or router, and a firmware upgrade on the router solved the issue, apparently. That link as well as this one, contains long lists of things you need to check, directly from Apple, and

I would be surprised if your issue doesn't go away after walking through those posts alone.

Moving on a bit further, the usual action, if I had not seen those posts would be to reset your SMC (instructions by model, here), and PRAM. Plug in your laptop to the wall, close all applications/save your data, then hold down Cmd+Opt+Shift and press the power button. The screen should turn off instantly. Then, wait 10 seconds. Next, while it is off, hold Cmd+Opt+P+R then press the power button. Keep holding those buttons until you hear the chime, the screen lights up, then turns off again. After ensuring you'd turned off services (see the links above), and then reset the hardware, you could mostly eliminate the computer as the sole source of the issue.

As a side note here, since Sierra literally just came out, then depending on your situation, you might wait until the bugs are worked out a bit before upgrading.