Skip to content

Instantly share code, notes, and snippets.

@iqiancheng
Last active December 21, 2024 09:32
Show Gist options
  • Save iqiancheng/9db72059539ace9725cafc1d0e6bc27a to your computer and use it in GitHub Desktop.
Save iqiancheng/9db72059539ace9725cafc1d0e6bc27a to your computer and use it in GitHub Desktop.
pmset -g custom

macOS Power Management Guide

Overview

This guide covers power management settings for macOS using the pmset utility, focusing on battery optimization and sleep behavior.

Basic Commands

Check Current Settings

# View all power management settings
pmset -g

# View detailed settings for different power modes
pmset -g custom

# Check specific hibernatemode setting
pmset -g | grep hibernatemode

Sleep Image

# Check sleep image file size
ls -lh /private/var/vm/sleepimage

Wake Analysis

# View system wake reasons
syslog |grep -i "Wake reason"

Hibernate Modes

  • Mode 0: Traditional sleep mode
  • Mode 3: Modern sleep mode (saves to disk)
  • Mode 25: Aggressive hibernate (may lose state)

Set hibernate mode:

sudo pmset -a hibernatemode 0

Quick Restore to Defaults

sudo pmset -a restoredefaults

Recommended Power Settings

Battery Power Settings

sudo pmset -b sleepbutton 1
sudo pmset -b lowpowermode 0
sudo pmset -b standby 1
sudo pmset -b ttyskeepawake 0
sudo pmset -b hibernatemode 25
sudo pmset -b powernap 1
sudo pmset -b displaysleep 2
sudo pmset -b womp 0
sudo pmset -b networkoversleep 0
sudo pmset -b sleep 1
sudo pmset -b lessbright 1
sudo pmset -b tcpkeepalive 0
sudo pmset -b disksleep 5

AC Power Settings

sudo pmset -c sleepbutton 1
sudo pmset -c lowpowermode 0
sudo pmset -c standby 1
sudo pmset -c ttyskeepawake 1
sudo pmset -c hibernatemode 3
sudo pmset -c powernap 1
sudo pmset -c displaysleep 10
sudo pmset -c womp 1
sudo pmset -c networkoversleep 0
sudo pmset -c sleep 1
sudo pmset -c tcpkeepalive 1
sudo pmset -c disksleep 10

Quick Setup for Basic Power Saving

# Disable unnecessary wake features
sudo pmset -b ttyskeepawake 0
sudo pmset -b womp 0
sudo pmset -b powernap 0
sudo pmset -b hibernatemode 3

# Set aggressive auto power off (4 hours)
sudo pmset -b autopoweroffdelay 14400

Key Parameters Explained

  • sleepbutton: Control power button sleep behavior
  • ttyskeepawake: Terminal preventing sleep
  • womp: Wake on network access
  • powernap: Background maintenance during sleep
  • hibernatemode: Sleep state management method
  • displaysleep: Display sleep timer
  • disksleep: Hard drive sleep timer
  • networkoversleep: Network preventing sleep
  • tcpkeepalive: Keep TCP connections alive

Notes

  • Hibernatemode 25 is more aggressive but may risk state loss
  • Settings can be applied to all power modes (-a), battery (-b), or AC (-c)
  • Always verify changes with pmset -g custom
#!/bin/bash
# Battery Power Settings (-b)
sudo pmset -b sleepbutton 1
sudo pmset -b lowpowermode 0
sudo pmset -b standby 1
sudo pmset -b ttyskeepawake 0
sudo pmset -b hibernatemode 25
sudo pmset -b powernap 1
sudo pmset -b displaysleep 2
sudo pmset -b womp 0
sudo pmset -b networkoversleep 0
sudo pmset -b sleep 1
sudo pmset -b lessbright 1
sudo pmset -b tcpkeepalive 0
sudo pmset -b disksleep 5
# AC Power Settings (-c)
sudo pmset -c sleepbutton 1
sudo pmset -c lowpowermode 0
sudo pmset -c standby 1
sudo pmset -c ttyskeepawake 1
sudo pmset -c hibernatemode 3
sudo pmset -c powernap 1
sudo pmset -c displaysleep 10
sudo pmset -c womp 1
sudo pmset -c networkoversleep 0
sudo pmset -c sleep 1
sudo pmset -c tcpkeepalive 1
sudo pmset -c disksleep 10
# View all power management settings
pmset -g custom
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment