Skip to content

Add Allium support - #128

Merged
misantronic merged 4 commits into
mainfrom
allium-support
Aug 25, 2026
Merged

Add Allium support#128
misantronic merged 4 commits into
mainfrom
allium-support

Conversation

@misantronic

@misantronic misantronic commented Aug 25, 2026

Copy link
Copy Markdown
Owner

Adds Allium as a Linux target, covering every device Allium runs on: Miyoo Mini, Mini Plus and Mini Flip.

Allium shares the Miyoo Mini hardware, kernel and MI SDK with Onion, so the bundle reuses Onion's armv7 runtime, pygame + Mini SDL2 vendor stack and libraproxy_rchash.so rather than duplicating any of it.

Verified end-to-end on a Miyoo Mini Plus running Allium v1.0.1.

Layout

Allium packages apps as .pak directories, so the bundle installs to Apps/RAOfflineProxy.pak instead of the App/RAOfflineProxy tree Onion and spruce share.

No credential handling is needed: Allium launches stock RetroArch directly, so RetroArch's own achievements login writes into .retroarch/retroarch.cfg and nothing rewrites those keys behind the proxy.

Autostart

The boot hook goes into .tmp_update/updater, which is the literal same path as DEFAULT_SPRUCE_STARTUP_SCRIPT. The dispatch in platform.py is therefore keyed on running_on_allium() rather than path equality, with a test asserting spruce still wins on spruce.

The hook is also skipped while allium-ota.zip is present. It sits above the updater's own OTA check, and ota-update.sh extracts the release over the whole card and then reboots — so without the guard the service would open its SQLite database mid-extract, seconds before a forced reboot.

Self-update

install_onion_update_archive() was layout-agnostic apart from one hardcoded App/, so it now takes an archive_root argument (App for Onion/spruce, Apps for the .pak). Atomic replace, rollback and same-major data/ preservation are unchanged.

Releasing Allium requires attaching RAOfflineProxy-Allium-v<VER>.zip to the release. The asset matcher is in place, and a test ties the in-archive layout to what build_bundle.sh produces.

Worth a closer look: shared installer change

remove_tree_best_effort() in update.py also changes behaviour for Onion, spruce and muOS — it is the only non-Allium-scoped change here.

shutil.rmtree(..., ignore_errors=True) half-fails on FAT32 right after an install writes ~129MB. Measured on device: 5,831 files / 193.8MB orphaned after a single update, while an immediate retry of the identical tree removed everything with zero errors. It now retries, then warns instead of staying silent. Re-verified on device: leftovers zero.

This bites hardest on Allium, whose own OTA updater refuses to run below 300MB free — a couple of updates' debris could block firmware updates and look like Allium's fault.

Release version drift guard

The app version lives in two files per target across three declaration styles, with no CI and no bump script (linux/onion/build_bundle.sh bakes it in twice). A stale common.sh is what the app reports as its current version, which the updater compares against the latest release — so a missed bump silently breaks updates. test_linux_release_versions.py pins them together; verified it catches a simulated forgotten bump.

Verified on hardware

Platform detection; boot hook install (syntax-checked, idempotent, diff is only the block); autostart across a real reboot (proxy up 6.2s after boot, without delaying alliumd); proxy patches cheevos_custom_host, binds and serves; stop reverts and releases the port; offline award queue → flush → RA; graphical menu at 640x480 with no fallback; support-log metadata (os: Allium, v1.0.1); and a fresh install of the release zip from a wiped app directory.

Docs updated across the Linux section (tabs, install steps, cfg patching, autostart) plus the platforms table and homepage.

@misantronic misantronic self-assigned this Aug 25, 2026
@misantronic misantronic added the enhancement New feature or request label Aug 25, 2026
@misantronic
misantronic merged commit 14e8000 into main Aug 25, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant