Charging / Battery / Sleep Overhaul — test build
Pre-release
Pre-release
·
119 commits
to main
since this release
Test build of ROCKNIX#3220 — battery, 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_gpuwarning 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) andvoltage_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— RK3326ROCKNIX-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
- Sleep on battery: suspend and wake repeatedly while unplugged — including straight after a boot with no cable ever attached. No freezes.
- Off-charge: power off, charge a good while (>10%), boot — the battery % should reflect the added charge (
dmesg | grep arbitratesshows the decision). - Suspend/resume repeatedly with a game card in use; it should stay mounted.
- Pixel 2: plug and unplug an OTG adapter, then confirm the port charges again.
- RG353x:
dmesg | grep unbalancedshould be empty after a suspend. 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 cycledmesg | grep -i recalibratingshows the self-correction firing.- 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.