Skip to content

Charging / Battery / Sleep Overhaul — test build

Pre-release
Pre-release

Choose a tag to compare

@Jacob-Matthew-Cook Jacob-Matthew-Cook released this 21 Aug 20:37
· 119 commits to main since this release

Test build of ROCKNIX#3220battery, SD-card and suspend/resume fixes for the RK817-based RK3326/RK3566 handhelds, plus two mmc fixes that apply to every device.

What's fixed

  • Deep sleep no longer crashes the device on battery. Two kernel bugs, both fixed: resuming from sleep while unplugged could oops the USB controller (frozen screen, dead buttons), and entering sleep after booting with no cable attached could hang the machine hard. Both were root-caused from crash captures on a GKD Pixel 2.
  • RK817 gauge no longer reads 0% after charging a powered-off device — and charge added while powered off now shows up at the next boot instead of being discarded. A new System Settings → System Management and Reset → RESET BATTERY FUEL GAUGE entry handles gauges that already drifted: it powers the device off — leave the charger unplugged and power back on, and the level is re-estimated from the resting battery voltage.
  • GKD Pixel 2 powers off on measured battery voltage rather than the gauge, and its OTG port stops sourcing 5 V after a peripheral is unplugged — so it charges again without a reboot.
  • SD card no longer lost on resume. A failed cache-enable or a failed resume used to remove a mounted card: ext4 replayed its journal, exFAT was left corrupted, and on a boot card the device hung. A card that does drop is now remounted instead of leaving an empty /storage/roms.
  • batteryplus voltage-based battery percentage on RK3326/RK3566 (ES toggle ENABLE BATTERYPLUS), with RetroArch's battery display following it.
  • RK3566 GPU: removes the unbalanced disables for vdd_gpu warning that fired on every suspend.
  • New in this build (20260830, head 45cf0548a0): the boot charge logic now arbitrates on measured voltage when the coulomb counter and the saved level disagree — a rested-voltage sample decides outright, else the power-on voltage picks the side it corroborates, else the counter (how Rockchip's own driver handles it). That's what makes powered-off charging finally track. Diagnostics under /sys/class/power_supply/battery/: voltage_boot (raw power-on sample) and voltage_ocv (last validated rested voltage; reads as an error until one exists).

Install — two ways

Flash (clean install, erases the card): write the .img.gz for your device.

file devices
ROCKNIX-RK3326.aarch64-20260830-a.img.gz Anbernic RG351M / RG351V · Odroid Go 2 (incl. v11) / Go 3 · GameConsole R33S / R36S · Powkiddy RGB10 · MagicX XU10
ROCKNIX-RK3326.aarch64-20260830-b.img.gz Powkiddy RGB10X / RGB20S · MagicX XU10 / XU Mini M · GameConsole EEClone · BatlExp G350 · GKD Pixel 2
ROCKNIX-RK3566.aarch64-20260830-Generic.img.gz Anbernic RG353P / RG353PS / RG353V / RG353VS / RG503 / RG ARC-D / RG ARC-S · Powkiddy RGB10 MAX 3 / RGB20 Pro / RGB20SX / RGB30 / RK2023
ROCKNIX-RK3566.aarch64-20260830-Specific.img.gz Powkiddy X55 / X35S · Anbernic RG DS

MagicX XU10 appears in both RK3326 images — use whichever your current install came from.

Update (keeps your games and settings): copy the matching .tar to /storage/.update/ on the device and reboot — it installs on the next boot.

  • ROCKNIX-RK3326.aarch64-20260830.tar — RK3326
  • ROCKNIX-RK3566.aarch64-20260830.tar — RK3566

Use the same variant your current install uses. .sha256 files are alongside each artifact — verify after copying, especially onto a card that has misbehaved.

What to test

  1. Sleep on battery: suspend and wake repeatedly while unplugged — including straight after a boot with no cable ever attached. No freezes.
  2. Off-charge: power off, charge a good while (>10%), boot — the battery % should reflect the added charge (dmesg | grep arbitrates shows the decision).
  3. Suspend/resume repeatedly with a game card in use; it should stay mounted.
  4. Pixel 2: plug and unplug an OTG adapter, then confirm the port charges again.
  5. RG353x: dmesg | grep unbalanced should be empty after a suspend.
  6. cat /sys/class/power_supply/battery/voltage_ocv — should fail while the device is busy or in use, then return a sane voltage while the battery rests; after a suspend-and-rest cycle dmesg | grep -i recalibrating shows the self-correction firing.
  7. Fuel-gauge reset entry: device powers off; after powering back on unplugged, the level should match reality (dmesg | grep -i "rk817" on that boot shows the first-boot re-estimate).

Report results on the PR. This is a test build, not an official ROCKNIX release.