Repository navigation
Description
Mac and installed build
- Mac: MacBook Pro (14-inch, M1 Pro, 2021),
apple,j314s/apple,t6000, 8 cores. - Installed: Omarchy 4.5.0rc2 (Arch),
linux-aurora 7.2.11.aurora9-1,m1n1-aurora 1.6.1.aurora3-1,uboot-asahi 2026.07.asahi2-1, GRUB 2.16. - Also measured: the CI package of Make M3 Pro sleep use 1.4 W instead of 2.6 W, and add the RTC wake alarm #274 (
7.2.11.aurora10-1.382, installed beside the regular kernel). No local kernel patches.
Both firmware versions and provisioning
asahi,os-fw-version: 13.5, asahi,system-fw-version: 26.6.2
Reproduction, expected result, and actual result
Close the lid on battery with nothing attached. s2idle draws about 1.9–2.0 W, so a full charge lasts about a day and a half asleep. I've been measuring it since early October with a systemd-sleep hook that logs battery state and kernel power-state snapshots around each sleep, and I want to hand over what's already ruled out.
Measurements
Short lid-closed runs (11–14 min), averaged from charge_counter:
| kernel | change | avg |
|---|---|---|
| aurora9 | none (control) | 1987 mW |
| aurora9 | PMP request 0xd (pmp-dispext0) withdrawn in noirq | 2012 mW |
| aurora9 | 0xc + 0xd withdrawn | 1945 mW |
| aurora10 + #274 | none | 1945 mW |
Overnight (17–24 h, from energy_now):
| kernel | change | avg |
|---|---|---|
| 7.1.12 (iconidentify 11.16) | none | 2172–2198 mW (3 nights) |
| 7.2.10 | none | 1838 mW |
| 7.2.10 | AOP unbound | 1825 mW |
| 7.2.10 | Wi-Fi/BT soft-blocked | 1797 mW |
| aurora8 | radios + dwc3/PCIe wakeup off | 1759 mW |
| aurora9 | radios off | 1844 mW |
Method notes:
- On this machine
charge_countercounts mA·s, not µAh. Over 61 s awake it gave 12.3 W againstenergy_now's 12.1 W. energy_nowrose 0.7–0.85 Wh during every short sleep, with no charger attached (the gauge re-estimating after a rest). So short runs needcharge_counter, and night-to-night differences under ~50 mW are within gauge noise.- Short runs include a few seconds awake at each end, roughly +100 mW at 12 min, so they sit above the overnight figures.
Where the power isn't
- CPUs: all 8 cores enter
CPU PDin s2idle;s2idle/usagecounts none in WFI. Each core logs about 3.6 entries per second of sleep, the rate of the AOP mailbox interrupt (293408000.mbox, IRQ 40), which fires about 3.6 times a second all night. - AOP: unbinding
293c00000.aopstops that interrupt but didn't change sleep power. It also can't be rebound on t6000 without a reboot (RTKit discovery fails with -62). - Radios: soft-blocking Wi-Fi and Bluetooth saves about 41 mW.
- USB-C:
atc0–3_usbstay on in sleep only because the dwc3-apple controllers are wakeup-enabled (GENPD_FLAG_ACTIVE_WAKEUP). With their wakeup disabled for the sleep they switch off. The saving is somewhere between 40 and 85 mW, unresolved because the kernel changed between nights. - Display PMP requests:
pmp-disp0andpmp-dispext0are asserted all night, but withdrawing them changes nothing (the table above; details in Make M3 Pro sleep use 1.4 W instead of 2.6 W, and add the RTC wake alarm #274). - The PMP is on for this board (pmgr-misc: PMP resume fix, idle fabric governor and PMP for j314s #91: "PMP manages fabric and DCS p-states"), so
apple_pmgr_misc.idle_fabric_pstatedoesn't apply.
What stays powered
From pmgr-pwrstate dynamic debug across s2idle:
- Display coprocessors:
disp0_cpu0,disp0_fe,dispext0_cpu0anddispext0_fenever switch off.pmp_report_disp0andpmp_report_dispext0areapple,always-onint600x-die0.dtsi, and they pin their PMGR parents. (dispext1_*does switch off.) - Wi-Fi PCIe link:
apcie_gpandpcie0_refnever switch off either. They're parents of theapple,always-onapcie_gp_sys, which holds590000000.pcie. Removing the Wi-Fi/BT PCI functions for the sleep doesn't free them. - 73 domains are
apple,always-on: DCS and AMCC, the AFNC fabric, AIC, nub/aon/SPMI, pms, pmp, sep, soc_dpe, the ATC common, pcie and usb_aon blocks, and debug. - Everything else powers down: gfx, ans2, audio, i2c, spi, uart, sio, mca, ane, isp, avd,
atc*_cio*, dispext1, and the SD reader's link (pcie1_ref).
So what's left looks like the display coprocessors kept up because their firmware can't be restarted, plus the always-on SoC blocks. Is there known work on either on T600x: a DCP low-power state for s2idle, or the SoC sleep sequence (memory and fabric) beyond #170's CPU context-loss diagnostic? Or something cheaper to try first?
I can test on J314s. I can install a PR's CI package beside the regular kernel (no boot-chain changes, one-shot boot) and return charge_counter sleep numbers plus a PMGR-domain and interrupt breakdown the same day.
Relevant error lines
None; nothing fails. Every resume logs brcmf_p2p_set_firmware: failed to update device address ret -52 and spi-hid-apple-of spi2.0: status message mismatch on both aurora9 and aurora10.
Related issues, pull requests, or code examples
- pmgr-misc: PMP resume fix, idle fabric governor and PMP for j314s #91: PMP for J314s, and probably most of the 7.1.12 → 7.2.10 drop.
- Make M3 Pro sleep use 1.4 W instead of 2.6 W, and add the RTC wake alarm #274: DISPEXT withdrawal (the T600x data point is in its comments).
- thunderbolt: apple: opt-in port power-off for s2idle with CD321x restore #92: Thunderbolt teardown; doesn't apply with nothing attached.
- soc: apple: add gated J314s CPU context-loss diagnostic #170: J314s CPU context-loss diagnostic.
What was not tested
- No external display or dock.
- No RTC-timed runs (no wake alarm on T600x), so every short run is a manual lid close.
- Overnight figures are
energy_nowonly; no full night withcharge_counteryet. - No other T600x board.
Activity
CoreyH commentedon Oct 30, 2026
macOS sleep on this J314s, for comparison. macOS 26.6.2, clamshell sleep on battery: 185 min asleep (11:43:46 → 14:51:57), with 27 dark wakes totalling about 2.8 min. 13 came from the PMU RTC alarm (
NUB.SPMISw3IRQ nub-spmi0.0x02) and 14 from wifibt via SMC. The gauge's raw capacity fell 22–33 mAh over the sleep, a range because the first reading was taken on AC seconds before unplugging. That's about 7–10 mA, roughly 0.1 W, about a twentieth of Linux's s2idle on the same machine, and the same order as the 0.24 W macOS figure for an M2 Pro in JJRPF/Aurora-DeepIdle. I'll repeat it overnight with a cleaner starting reading.