Skip to content

j613 (MacBook Air 13" M3): lid-closed s2idle on battery drains 30% → 0% overnight (≥1.35 W), no hibernation or RTC wake fallback #403

Open

Description

@yongkang-yang

Mac and installed build

  • Mac: MacBook Air (13-inch, M3, 2024), apple,j613 / apple,t8122
  • Installed: Omarchy 4.5.0-3, omarchy-mac 0.2.3-2, linux-aurora 7.2.11.aurora14-1 (uname -r: 7.2.11-14-1-ARCH)
  • Boot chain: m1n1-aurora 1.6.1.aurora22-1, uboot-aurora 2026.07.aurora6-1
  • Distribution: Arch Linux ARM, btrfs on LUKS2, zram swap only. No local kernel patches.
  • systemd 262.1-1, Hyprland 0.56.2-7, mesa-aurora 26.3.0_devel.20261031

Both firmware versions and provisioning

asahi,os-fw-version: 14.7
asahi,system-fw-version: 27.0

Reproduction, expected result, and actual result

To reproduce, close the lid on battery with nothing attached. logind suspends to s2idle, which is the only mode offered (/sys/power/mem_sleep: [s2idle]), and the machine is left closed overnight.

Expected: a closed Air loses a few percent overnight, as it does under macOS.

Actual: the battery runs completely flat. The machine never resumes, and the next start is a cold boot at 0%.

Timeline from the journal and UPower history (GetHistory charge):

Time (CET) Event Battery
03:31:48 34%
03:47:31 → 03:47:34 lid close/open, s2idle entry and exit OK
03:48:14 30%
03:49:26 → 03:52:01 lid close/open, s2idle entry and exit OK
03:53:57 Lid closed → PM: suspend entry (s2idle), the last line of the boot ~30%
13:01:45 next boot (cold), UPower reads 0% 0%

So about 30% of a 41.0 Wh pack (~12.3 Wh) was drained in at most 9.1 h. That puts the s2idle draw at ≥ 1.35 W (~3.3 %/h). It is a lower bound, because the time the battery hit empty is unknown.

That is lower than the T600x/T6030 figures in #290 (~1.9–2.0 W) and #291 (~2.65 W), but still more than 10× the ~0.1 W macOS figure in #290. As far as I can find, this is the first sleep-drain data point for J613.

Other details:

  • This is not a failed suspend. Two short s2idle cycles a few minutes earlier in the same boot resumed correctly on lid open. The final cycle entered cleanly, and nothing is logged after PM: suspend entry (s2idle).
  • The RTC survived. On the next boot macsmc-rtc set the correct wall-clock time (setting system clock to 2026-11-07T12:01:45 UTC). That differs from #779, where the RTC reset to 1970/1976.
  • The gauge read 0% right after boot (energy_now 0, voltage_now ~11.50 V while charging at ~21 W). It recovered to normal readings after a short charge.
  • Battery: bq40z651, energy_full 41.0 Wh of 52.0 Wh design, 308 cycles. The charge thresholds (75/80) are configured.
  • No fallback is available while asleep on this machine either. /sys/power/state is freeze mem with no disk, so there is no hibernation. /sys/class/rtc/rtc0 (macsmc-rtc) has no wakealarm, so there is no timed wake to power off. iw phy phy0 wowlan show returns -95. As a result, the stock lid-close behaviour on battery is "suspend and drain to zero".

Graphics or session details (if relevant)

The display is on DCP (apple-t8122-display: enabled ... /soc/dcp@28ec00000). Hyprland 0.56.2 runs with Omarchy's lid-close lock. The two short resumes before the final sleep came back to the locked session without a compositor restart.

Relevant error lines

2026-11-07T03:53:56+01:00 systemd-logind[835]: Lid closed.
2026-11-07T03:53:56+01:00 systemd-logind[835]: Suspending...
2026-11-07T03:53:57+01:00 fprintd[8701]: Failed to install a sleep delay inhibitor: GDBus.Error:org.freedesktop.login1.OperationInProgress: The operation inhibition has been requested for is already running
2026-11-07T03:53:57+01:00 systemd-sleep[8968]: Performing sleep operation 'suspend'...
2026-11-07T03:53:57+01:00 kernel: PM: suspend entry (s2idle)
-- (end of boot; next boot starts 13:01:45) --
2026-11-07T13:01:45+01:00 kernel: macsmc-rtc macsmc-rtc: setting system clock to 2026-11-07T12:01:45 UTC (1794052905)

The previous boot logs no Battery critical line from macsmc-power.

Related issues, pull requests, or code examples

Workaround: power off instead of suspending when leaving the machine closed on battery.

What was not tested

  • Only one overnight measurement, taken from UPower history (1% granularity). There are no charge_counter short runs yet.
  • The exact time the battery reached empty is unknown, so 1.35 W is a lower bound.
  • No per-domain (pmgr-pwrstate), cpuidle s2idle counter, or interrupt breakdown during sleep. The counters were lost with the dead boot.
  • No comparison with radios soft-blocked or USB-C wakeup disabled.
  • No macOS sleep measurement on this unit.
  • No external display, dock or USB devices were attached. The Bluetooth mouse (MX Master 3S) was paired.

I can run short charge_counter lid-closed measurements, or test a CI kernel package, on this J613 if that helps.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions