The Spruce Dev team released a new version of spruce for the Miyoo A30, find out below why I think this release is the “Game Changer”, which will stop A30 owners from dreaming of an OnionOS port.

My new Miyoo A30

I’m a relatively new A30 owner, I got it with the hope that, when combined with a USB-C Bluetooth transmitter, it could finally be the pocket device for me. I was expecting a flawed device, but what I’ve found is a good-looking, comfortable-to-hold device that is easy to use, and a lot of the credit for how good the device is, needs to go to all the people who’ve had a hand in developing spruce.

My current Bluetooth transmitter monstrosity

In addition to making a great OS, some of the devs can be regularly found in the A30 thread on the RH Discord, taking suggestions and helping solve technical issues from new users like me.

Under New Management

Spruce 3.0 is the second major release of spruce under the new development team. Initial developer tenlevels handed over the reins in August 2024 to a new team, headed up by new lead SundownerSport.

Their first release, spruce 2.0, came soon afterward, but this version, spruce 3.0, is where I think they started to add the same sort of functionality to the A30 which made OnionOS such a beloved custom firmware within the community. While at the time of writing, spruce 3.0 is less than a week old, the developers have already released spruce 3.0.1, responding to a small number of bugs identified by users.

I think spruce 3.0 is the point where spruce should be considered alongside Onion (which it frequently takes inspiration from) as a top-tier OS.

New Features

While a number of quality-of-life improvements have been made – for example, new games are now auto-detected at bot-up, the icons have been updated to ones with a higher resolution, and the overall file size is reduced – there are a handful of new features that show the progress made in this release.

OnionOS Style Game Switcher

The spruce Game Switcher looks much like the OnionOS Game Switcher

The biggest headline change in spruce 3.0 is the introduction of an OnionOS-style game switcher. While the controls have been reversed from the OnionOS controls (a long press triggers the Game Switcher, while a quick press brings up the in-game menu), every other aspect is nearly identical to those found in OnionOS.

One of my biggest annoyances with the OnionOS Game Switcher is that the game I’d long given up on still showed up in the Game Switcher. spruce 3.0 allows unwanted saves to be removed with a quick tap of the Y button on the unwanted game

Improved Shutdown & Resume with Autosaves

The Firmware Updater Option in the spruce Apps menu

As with Onion, Spruce 3.0 automatically generates a save state and shuts down when the power button is held. This save state will be loaded on the next bootup. While this previously worked on some systems (although it was previously triggered by holding down select which was slightly illogical), support has now been added for both PPSSPP and Drastic games.

Auto-updating of Both Spruce and the A30 Firmware

Cores can now be selected for more systems by pressing X on the entry in the main menu

One of the biggest pains with the original Miyoo Mini was the number of hoops that needed to be jumped through in order to update the device’s firmware (new SD card, battery removed, device connected to power).

While it wasn’t as painful, updating the A30 firmware wasn’t previously painless. Resolving this, spruce 3.0 introduces 2 new updater applications:

  • Firmware Update: Walks A30 users through updating the A30 firmware in the tool (this is needed to fix Wi-Fi performance).
  • AutoUpdater: This is the first step in a future implementation which will enable spruce to be delivered over WiFi. The A30 firmware will first need to be updated (using the app) for Wi-Fi to function correctly

Increased Number of RetroArch Cores

With the notable exception GBA and arcade emulation, previous versions of spruce have only included one RA core for each system.

As of spruce 3.0, multiple cores are supported for many more systems. As before, cores can be selected on a game-by-game basis in the spruce menu, by using the X button. The additional cores available in spruce are versions of DuckStation (PS1), ParaLLEI (N64), Genesis Plus (Multiple Sega Systems), UAE4ARM (Amiga), Hatari (Atari ST) & Nestopia (Famicom Disk System).

Of these, the addition of DuckStation is by far my favorite improvement across the whole release. While it has significantly longer load and shutdown times compared to other included cores — PCSX Rearmed — the new DuckStation core will allow a handful of previously incompatible games to be run on the A30. This will include RH’s Game of the Month for October — Koudelka — and my own personal completion project, The Lions War ROM hack of Final Fantasy Tactics.

Improved Network Functionality

Like the screen says, spruce 3.0.1 installed

Spruce 3.0 introduces a new approach to Syncthing which I can see might end up being adopted by a number of other operating systems, as well as other new features.

New to spruce is the Syncthing Sync Checker. The Sync Checker will show a screen checking whether the Game Saves & Save States are fully synced when a game is launched or shut down. When a game is auto-resumed following a power-off (assuming WiFi is available) Sync Checker will also check the sync state, to make sure the latest save state is loaded.

In addition, spruce 3.0 will also allow the SD card to be accessed over the network, allowing ROMs to be added and removed without the SD card needing to be ejected. When the A30 is connected to Wi-Fi, navigating to the current IP address in a tool like Windows Explorer will give access to the storage.

New Unified Shortcuts

Previously spruce had two sets of alternative hotkey shortcuts, depending on whether the “basic” or “advance” configurations were selected. spruce 3.0 now simplifies the hotkey options, with the hotkey moving to Select, to match most RH devices, and to allow the home button to trigger the game changer.

New Hotkeys:

  • SELECT+B = Exit to Main Menu
  • SELECT+X = Open In-Game Menu
  • SELECT+Y = Toggle FPS Indicator
  • SELECT+L1 = Load Current Save State
  • SELECT+R1 = Save New Save State
  • SELECT+L2 = Toggle Slow Motion
  • SELECT+R2 = Toggle Fast Forward
  • SELECT+Up = Turn Shaders On or Off
  • SELECT+Left = Select Previous Save State Slot
  • SELECT+Right = Select Next Save State Slot

Power Savings

Spruce 3.0 also introduces a number of small features that are designed to improve the amount of gaming that can be gained from a single charge. The new release includes a “smart” CPU clock speed manager in order to ensure the optimum configuration is set for each supported emulator, saving power where possible. In addition, the Wi-Fi can be automatically turned off in-game to save power, and new standby rules can be set to reduce the amount of time the device spends idle before shut off (with save state creation).

How to Update Miyoo A30 to spruce 3.0

Existing spruce users can either choose to update automatically using spruce’s EZ Updater or can manually update the SD Card using a Windows or Mac device, by downloading the new version and manually copying over the files.

Automatic Update Steps

Once the zip has been extracted, the option should show up

  1. Download the EZUpdater ZIP file from GitHub.
    • At the time of writing the latest file is “EZ.Updater.sprucev3.0.1.ZIP”
  2. Put the existing spruce MicroSD card into your computer and extract the ZIP of EZUpdater into the root of the SD card. This only applies to spruce 2.3 and below, for any updates for spruce 3.0 and above, the ZIP file should be copied to the root of the SD card but not extracted.
  3. Put the SD card back into the A30, power it on, and select “spruce Updater” from the “Apps” section.

Manual Update Steps

The new version of spruce is installing

  1. Connect the MicroSD card with the old version of spruce onto your PC.
  2. Back up anything you might want to save if the worst happens.
  3. Delete everything on the SD card except the following 3 folders: Roms, Saves, and BIOS. Make sure that those hidden files are viewable, as some folders (.config and .temp_Update) aren’t viewable by default.
    • It is very important that these files are deleted.
  4. Download the latest version of spruce from the GitHub Releases page and extract it directly to the root of the SD card.
  5. When prompted, select the option that replaces all files on the SD card with those from the ZIP file.
  6. Put the card back into the A30 and boot up, a screen will now show that spruce 3.0.1 is installed.

After that, the update is complete and you can sit back and enjoy your improved device!

What did you think of this article? Let us know in the comments below, and chat with us in our Discord!

This page may contain affiliate links, by purchasing something through a link, Retro Handhelds may earn a small commission on the sale at no additional cost to you.