Charger-insertion boots (androidboot.mode=charger, ABL-appended) divert to a minimal charging.target instead of the full UI, ending the dead-battery bootloop: ADSP charging/USB-PD runs, splash+panel killed ~6-10s in via an initramfs hook, modem+cdsp stopped, radios/sensors suppressed, CPU capped. Power key reboots to a normal boot, volume-up shows battery status, volume-down enables USB ssh, unplug powers off. Measured >= breakeven on a 100mA-classified SDP port, strongly net-positive on real chargers. Suspend duty-cycling (~13mA floor) exists behind an off-by-default flag: resume from deep suspend intermittently kills the UFS link (hibern8 exit failed ret=5) - do not enable until that kernel bug is fixed. Byte-identical to the deployment verified on the dev phone 2026-08-24 (journal/power: r5 armed tests, crash autopsies, measurements). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
7 lines
349 B
Text
7 lines
349 B
Text
# Installed by work/charging-mode (FP6 offline charging) as a drop-in for
|
|
# units that are pointless while charging (radios, sensors, hotkeys).
|
|
# Inert in normal boots: the generator creates /run/charging-mode only on
|
|
# charger-triggered boots, and only after the default.target diversion
|
|
# succeeded.
|
|
[Unit]
|
|
ConditionPathExists=!/run/charging-mode
|