Skip to content

← Firmware Downloads

Post-install setup · Reborn (Y2Linux) · Y2

Y2Linux 1.0 Beta 9.0: the system underneath, rebuilt

Debian-based Linux with a fast clickwheel interface for the Innioasis Y2.

Instructions published by the project, shown here word for word.

Y2Linux 1.0 Beta 9.0: the system underneath, rebuilt

Release 1.0.0-beta.9.0, Y2Reborn 1.0.0-beta.9.0, kernel 6.18.56-y2linux-1.0.0-beta.9.0, update sequence 11400, root 2026.08-platform-v1.212. Published as GitHub release baseline-186 (test build 186). Previous release: Beta 8.43.

This report is written for people who use the player. A short technical appendix is at the end.

In one paragraph

Beta 9.0 looks and works like Beta 8.43. Your music, playlists, settings, Wi-Fi networks and Bluetooth headphones stay as they are. What changed is the part of the system you never see: the services that look after the battery, sleep, Wi-Fi, Bluetooth, the SD card and Internal Storage, updates, USB file transfer, the clock and error reports. They were written in Python and are now written in Rust, the same language as the Reborn music player. The result:

On the way, a dozen small faults were found and fixed.

What is "the platform"?

The Y2 runs two kinds of software:

Every time Reborn shows the battery percentage, the Wi-Fi state, the update page or the storage page, it asks the platform.

Why rewrite it?

The platform was written in Python, which is quick to write and change, and which carried Y2Linux from the first beta to 8.43. But Python needs its interpreter on the player, and that has costs:

With both sides in Rust, every answer the platform gives is now run through Reborn's own reading code before a build is accepted, so a mismatch is caught before it reaches a player. Moving Reborn onto the platform's shared message definitions, so that the compiler itself checks both sides, is the next step after this release.

How we did it without breaking anything

A rewrite of this size is risky. It touches what happens when the battery runs out, how the player sleeps, and how updates install. We went step by step:

  1. Write down what the old system does. Before any code was changed, every command and every file the

    platform reads or writes was listed, and the old Python platform was recorded answering more than a thousand test situations (1,069, plus 5,729 ways of typing its commands): normal cases, odd ones and broken files. Each recording is a golden answer.

  2. Translate first, change nothing. The Rust version was written to give exactly the same answers, byte for

    byte, as the recordings. Only after it matched everywhere was Python removed from the player.

  3. Then fix and tidy. Small faults found while translating were fixed one at a time. Each fix is listed below

    and has its own test.

  4. Then make it proper Rust ("typed records"). A translation from Python still thinks like Python: it handles

    most of its data as loose bundles of text and numbers. In the last phase every file the system keeps became a clearly defined structure: the sleep receipt, the update journal, the SD-card record, the shutdown request and about fifty others. The computer now checks them instead of the code guessing what a field might hold.

  5. Every step checked. Each change passed an automatic gate:
    • formatting and code checks;
    • a build for the player's ARM processor;
    • about 570 unit tests;
    • all golden answers;
    • Reborn's own reading of the platform's answers;
    • a check that the files on your data partition stay readable by the version before.

That last check is what makes Restore Previous System safe: going back never finds a file it can't read.

  1. On the real player. 22 test builds (165 to 186) were installed over the air on the developer's player,

    each followed by a device check: health, daemons, Wi-Fi, USB, storage, sleep status and battery records. From test build 169, the first without Python, every update in the series was installed by the new code itself.

What you'll notice

The same player, a little quicker and more frugal. Measured on the developer's player:

Beta 8.43 (Python)Beta 9.0 (Rust)
CPU the system services use while on and idleabout 92 s per hourabout 12 s per hour
CPU Reborn uses with the screen off and idleabout 45 s per hourabout 14–16 s per hour
Memory of the system services (counted per process)58 MB17 MB
Their real share of RAM (shared parts counted once)35 MB5.5 MB
Answer to a simple question (sleep state, update state)about 0.5 s6–8 thousandths of a second
System partition130 MB111 MB (no Python any more)
Update download (system part)56.4 MB50.6 MB
From pressing Power to the music player being readyabout 44 sabout 37 s
Shutdown steps after you choose Power Offabout 2.6 sabout 1.2 s

What this means in daily use:

Reborn got leaner too. With the screen off and nothing playing, Reborn now checks things every 5 seconds instead of every second, and its watchdog every 5 seconds instead of every second. Pressing a button, music starting, a headset connecting or a computer being plugged in still wakes it at once.

Fixes in this release

Most of these were found while every line of the old system was read again for the rewrite.

Storage and USB

Updates

Battery, sleep and Wi-Fi

Damaged files no longer crash things. The system keeps small records on the data partition: the last sleep, the update journal, the SD card, the reset plan. Such a record can be damaged by a sudden power loss or an unusual copy. The old system then sometimes stopped with an internal error. Now:

A damaged record never decides that something is safe.

What did not change

Updating

Settings → About & Updates → Check for Updates → Update Now. The player restarts into the installer and back, as for every update, and confirms the new version once Reborn is running.

To go back: Settings → Diagnostics → Restore Previous System returns to the version you had before (8.43 or whatever you updated from). Your data stays; the new version was built so that the old one can still read everything.

Known issues and what still needs your help

This is the largest change since the first beta, so please send an error report if anything behaves differently from 8.43.

If one of these misbehaves, send an error report (Settings → Diagnostics) and, if needed, use Restore Previous System.

A few words explained

Technical appendix

Reborn workspace: 738 tests. Device check per test build: tools/development/platform-device-check.sh.

Published by the schulzcode/y2linux project [1] [3]