Skip to content

← Firmware Downloads

Post-install setup · Reborn (Y2Linux) · Y2

POWER-FINAL-13 — stock suspend power parity (golden master from the Y2's own firmware)

Debian-based Linux with a fast clickwheel interface for the Innioasis Y2.

Instructions published by the project, shown here word for word.

POWER-FINAL-13 — stock suspend power parity (golden master from the Y2's own firmware)

Status: FLASHED, FIRST SLEEP PASSED, USB-AFTER-WAKE DEFECT OPEN (published as Baseline 13, tag baseline-13; see physical result). Sealed as IMPLEMENTATION_READY_PHYSICAL_NOT_RUN. Branch codex/platform-v1-power-final-13 (worktrees ~/Dokumente/Code/worktrees/platform-v1-power-final-13/{Y2Linux,Y2Reborn}), Linux build commit 47c1cf225dc140d151366f9e6309a3a07556fa67 (later test-only tests: commit), Reborn unchanged (71ddb0d). Package out/y2linux-platform-v1-power-final-candidate-13/ (fallback = sealed 12), symbols …-13-symbols/, receipts out/deep-sleep-final/build13-receipts/. BOOTIMG f73c24da3abe5978f2c234bd9501a929415fc156fc5ab79ebc7755390dddc178, Y2ROOT e62cb6c7bab621e6f791359e5b56bba3a21f065d2ba864f4917b3ae808c01915; kernel -power-final-13, root v1.43. Offline: container suite 651 cases PASS (10 host-dependency skips), 32 packaging-host + 27 splash PASS, package/ELF 385/1416/installed-ARM/inventory/privacy PASS. Scope audit: POWER-FINAL-13 entry in docs/planning/roadmap-gap-audit.md (13 branch). Data: docs/validation/data/y2-stock-suspend-golden-20261011.json (13 branch).

Why 13

Golden master: the stock FM kernel

Source: evidence-private/20260908-ram-map/fm-decompressed.bin (the Y2's stock kernel, base 0xc0008000) with fm-symbols.json, disassembled with llvm-objdump (armv7). Decoded:

Stock objectAddressFinding
PMIC_INIT_SETTING_V1 (E2)0xc04b81f880 field writes; 55 differ from the live 12 PMIC (archive 99, read-only debugfs dump). Power-relevant: VPROC sleep voltage set (8 fields), LP_SEL on VMC/VMCH/VEMC3V3, BAT_L/thermal interrupt enables, EFUSE/AUXADC clock PDN. Not power: ADC trim selects (would shift Y2's battery calibration), charger/speaker/start-up fields.
mt6323_power_gs_suspend_data0xc0757cd044 PMIC rows; identical to the vendor table the 05 report used.
mt6582_power_gs_suspend_data0xc0759c9857 SoC rows: clock muxes powered down, INFRA/PERI clock gates, DCM, MAIN/UNIV/MM/MSDC PLL software-enable 0 and AP_PLL_CON3 hardware control, CLK_SCP_CFG 0x3ff/0x11. Never read on Y2 before 13.
tpd_suspend / tpd_resume0xc04a41c0 / 0xc04a3088APT32F wheel: reg6 firmware; 1..19 gets the sleep command reg5=1, else GPIO56 (reset) held low; resume pulses GPIO56 and writes reg5=0. This unit reads reg6 = 0x01. Y2 never slept the controller.
usb_phy_savecurrent_internal0xc04d98f0Full PHY power-down whenever no cable is present. Y2 only ran the recover half at boot.
pmic_mt6323_suspend0xc04b3dd4AUXADC hardware mode and VREF18 off in suspend (not adopted: would change Y2's ADC).
cs43131_early_suspend0xc054bed0DAC GPIOs low and hwPowerDown of VGP2 (refcounted). Y2 already keeps the GPIOs low; VGP2 stays on (not adopted).
GC9503 lcm_suspend0xc04a24f4Display off, sleep in, power-register tail and AF=02, reset left high (Y2: off, sleep in, reset held). Not adopted.
slp_suspend_ops_enter0xc0035bd4Only spm_go_to_sleep; the PLL/clock state comes from the static configuration above.

Changes in 13 (each switchable at run time)

ChangeSwitchRestored / non-fatal
Radio quiesce waits up to 25 s for the Bluetooth operation lock; the failure reason names the radio. The guard is cleared whenever the kernel was not entered; only a kernel_entry record quarantines.—host-tested (test_product_auto_sleep, 3 new cases)
Stock VPROC sleep voltage 0.85 V: 8 stock fields applied only inside y2_spm_enter (one CPU, IRQs off) around the PCM sleep, VOSEL_ON preset to the live selector, live voltage re-verified, every word restored mode-bit first before the normal PCM./sys/module/pwrap/parameters/vproc_sleep, state in vproc_sleep_staterefusal or failure keeps 1.15 V and sleeps anyway
LP_SEL on VMC, VMCH, VEMC3V3 (stock init). Enables stay unwritable./sys/firmware/y2_pmic/lp_selreadback-verified
Stock USB PHY save-current in the y2-usb suspend_noirq (no cable, no session); byte-exact restore in recover order in resume_noirq..../y2-usb/phy_savecurrent (counters)mismatches counted and logged
APT32F sleep command / reset pulse on wake (stock sequence); GPIO56 admitted with the latch preset high./sys/bus/i2c/devices/0-0051/sleep (bus number can swap)failed sleep never blocks suspend; wake retries 5×
Maintenance wake 600 s to 1800 s (stock uses a dynamic period).—PCM watchdog timer + 30 s
Read-only stock golden capture at every suspend entry.cat /sys/devices/platform/10006000.power-controller/golden (root)reads only always-on/INFRA blocks

Owner test after flashing

  1. Plugged in: cat the four switches above; golden shows captures=0 and the awake now values.
  2. Unplug, screen times out, leave ≥ 35 min (one 30-min maintenance wake), press Power once. Then read

    vproc_sleep_state (entries = restores, failures 0), phy_savecurrent (saves = restores, mismatches 0), wheel sleep (sleeps = wakes, failures 0) and that the wheel scrolls, USB reconnect works, y2_infra/state (restores>0 means INFRA really powers down), golden (entry rows that still differ from stock).

  3. Overnight drain against 12's ≈2.2 points/h. If anything misbehaves, switch the suspect item off at run time

    (echo 0 > …) and compare the next night.

Not done (next steps decided by the golden capture)

PLL hardware control (AP_PLL_CON3 / CLK_SCP_CFG) and the DIS/MMSYS power domain, eMMC supply removal in suspend, VGP2/DAC rail, panel deep-standby table, PMIC low-battery interrupt instead of timer wakes, AUXADC clocking, and the awake-dark drain (Reborn blanks only the backlight; the display pipeline keeps scanning out).

Physical result (2026-10-11)

Published by the schulzcode/y2linux project [1] [3]