spruceOS v4.6.0 adds touch controls, Kid Mode, and V90S support

The open-source handheld firmware adds touchscreen gestures to PyUI, locks down menus with Kid Mode, and brings support for the Powkiddy V90S.

spruceOS v4.6.0 adds touch controls, Kid Mode, and V90S support
spruceUI via GitHub

The open-source spruceOS custom firmware is out with version 4.6.0, adding touchscreen navigation to its PyUI frontend, a locked-down Kid Mode, and support for the Powkiddy V90S, TrimUI Brick on oakMOSS, and GameMT E5 Plus. This update follows version 4.5.6 and continues a busy run for a project that originally launched on June 15, 2024.

Created by developer Tenlevels to fix the rough stock software on the Allwinner A33-powered Miyoo A30, spruceOS has since grown into a multi-device platform maintained by the spruceUI collective (including contributors like Sundownersport, ryanmsartor, and CatalyticArkun). It now runs across a huge pile of budget ARM handhelds, and v4.6.0 brings some overdue quality-of-life changes to how those systems handle menus and emulators.

Touch gestures and handing the console to a kid

Touchscreen navigation is finally built into the Python-based PyUI interface. On touch-capable devices, you can tap to launch games, swipe through grid and list views, use edge scrolling, and type on an on-screen touch keyboard. The Anbernic RG353M gets these PyUI touch controls alongside fixes for its RetroArch and PPSSPP inputs, while the MagicX XU20 and Zero 40 gain touch support inside the RetroArch menu itself.

If you're brave enough to hand your retro handheld to a child, the new Kid Mode restricts the system to Game Selection Only Mode and forces the game list into a simple carousel view. You can also toggle individual entries on or off in the In-Game Menu Settings, which should stop younger players from accidentally wiping your save states or digging into RetroArch's labyrinthine configuration menus at 2 a.m.

Core swaps and the oakMOSS lineup

Hardware support expands in v4.6.0 through spruceUI's custom base images for two-card handhelds, where the first SD slot (TF1) holds the system image and the second slot (TF2) carries a swappable spruceOS installation. The Powkiddy V90S is now supported via the oakMOSS TF1 image, joining the MagicX Zero 28, Zero 40, and XU20 V32. TrimUI's compact 1024x768 vertical handheld, the TrimUI Brick, also picks up optional oakMOSS support (and gets functioning Gallery and eBook apps on oakMOSS units), while the GameMT E5 Plus enters preliminary development using the BobMoss base image.

Alongside those additions, spruceOS still runs on single-card devices like the Miyoo Mini series, Miyoo Flip, Miyoo A30, and TrimUI Smart Pro, plus dArkMoss and BaseOS systems like the Powkiddy RGB30, Powkiddy V10, and Anbernic's H700 lineup.

Under the hood, the update reshuffles several default emulators:

  • Game Boy and GBA: Updated to v1.4, armGBA is now the default Game Boy Advance core and replaces tgbdual for standard Game Boy and Game Boy Color games. It includes custom LCD shaders with lighter versions tuned for weaker GPUs like the one inside the TrimUI Brick.
  • Experimental cores: A new pokedaisy core is available for GB, GBC, and GBA games on everything except the Miyoo Minis.
  • Nintendo DS and 3D systems: DSperate moves to v3.3.0 with a Vulkan backend for 64-bit handhelds, dArkMoss devices gain DraStic and defaults for standalone Flycast on Dreamcast, and RK3326 units get their own PPSSPP build.
  • Cleanups: Standalone PCSX-ReARMed, tgbdual, and DraStic-Steward (on systems capable of 64-bit DraStic) have been removed.

60 Hz panels and preserved settings

A handful of hardware quirks got ironed out in this build. The TrimUI Smart Pro S display panel now runs at a proper 60 Hz instead of its slightly bizarre 62.94 Hz refresh rate, the Powkiddy RGB30 picks up Bluetooth support, and the Miyoo A30 gets a better backlight curve that actually remembers your brightness level when you reboot. The updater now keeps your UI language and system settings intact across versions, though the team also removed the toggle to disable automatic update checks, so connected handhelds will always ping for new releases.