u/hollywood__kills

I built the iPod Classic experience I always wanted on the Innioasis Y1 (full feature rundown)

I've been building InniClassic for a while now on top of JJ Launcher, and since it's grown a lot since the first release, figured it's worth a proper rundown of what it actually does at this point — not just a changelog post.

The look and feel
Bundled iPod Classic theme (light + dark), aiming for a 1:1 look — plain-text menu lists, real bold system typography, tight iPod-accurate spacing, status bar showing the current screen name instead of a clock. Main Menu and Music menu both use the classic two-pane layout: list on the left, a slowly panning ("Ken Burns") album cover on the right bleeding all the way to the top of the screen.

Now Playing
Big angled cover with a reflection underneath (toggle it off if you don't like it), glass-look progress bar, scrolling marquee for long titles. Center-click cycles through Progress → Seek → Shuffle & Repeat → Rating exactly like a real iPod Classic — the wheel does something different at each stage. Long-press Center for the hold-menu: Add to On-The-Go, Rate Song, Browse Album, Browse Artist, Toggle Visualizer.

Synced lyrics — drop a .lrc file next to a song, or just have lyrics embedded in the tags (ID3/FLAC/ALAC), and "Toggle Visualizer" shows them scrolling in sync with playback instead of the spectrum analyzer.

Music library
Artists, Album Artists, Albums, Songs, Genres, Composers, Playlists, Favorites. Wide format support — MP3, FLAC, WAV, OGG Vorbis, Opus, ALAC/M4A, AAC. Gapless playback for smaller albums/playlists. Fast-scroll letter jump on every list, like actually spinning the wheel fast on a real iPod.

Last.fm scrobbling — works out of the box with zero setup: every track you finish gets logged to a local .scrobbler.log on your SD card, no account needed. Optionally log into a real Last.fm account to sync scrobbles live too.

Beyond music

  • Podcasts — subscribe, stream, download for offline
  • FM Radio — talks to the real hardware tuner directly
  • Video playback — dedicated Videos folder, full-screen, wheel-driven volume/seek, running on libVLC for stable playback
  • Audiobooks — bookmarked, resumable
  • Wireless PC Upload — a little web server for copying music over Wi-Fi, no cable needed
  • Music Quiz — a from-scratch recreation of the classic iPod game using your own library, multiple question types, 5 rounds of 8 questions

Install
Two ways: a flashable rom.zip via the Innioasis Updater (no ADB needed), or a standalone APK if you're updating an existing install.

Repo + downloads: https://github.com/FabianZettl/inniclassic
Latest release: https://github.com/FabianZettl/inniclassic/releases/latest

If you'd like to support the project: https://buymeacoffee.com/gz17egcara — totally optional, never required.

Disclosure: I use Claude Code (AI) as a coding assistant for this project — it writes/edits the code under my direction, and I review and test everything before it ships.

u/hollywood__kills — 20 hours ago

InniClassic 1.3.1 — fixes for Albums, Videos, FLAC covers, scrobbling & cover blur

Another bug-fix round based on what you all reported here — thanks again for the detailed reports.

Fixed:

  • "Albums" was completely broken for some of you — black screen, freeze, or silently bouncing back to the Music menu. Root cause: it was scanning your whole library plus doing a slow metadata lookup on the main thread for every row, every scroll. Now runs in the background instead.
  • Videos: nothing selectable when scrolling — you'd hear the click but nothing would highlight or play. The list was never actually focusing its first item. Fixed.
  • Some FLAC albums showed no cover art in Albums (but did on Now Playing/Cover Flow) — embedded FLAC covers weren't being read on that screen at all. Fixed.
  • Last.fm scrobbling confusion — the local .scrobbler.log now gets written automatically for every track, no toggle or login needed (it's just a private text file on your SD card — note it starts with a dot, so it's hidden in a lot of file managers). The Settings toggle now only controls syncing to a real Last.fm account.
  • Cover art looking blurry while panning on the Main Menu — turns out cover art was always getting decoded at half resolution regardless of size, which hit small (e.g. 300×300) covers hard. Fixed — if you're picking your own cover images, aim for at least 600×600, ideally 1000×1000+.

Grab it here: https://github.com/FabianZettl/inniclassic/releases/tag/v1.3.1 (rom.zip via Innioasis Updater, or the APK if you're updating an existing install)

Full changelog: https://github.com/FabianZettl/inniclassic/blob/master/CHANGELOG.md

Disclosure: I use Claude Code (AI) as a coding assistant for this project — it writes/edits the code under my direction, and I review and test everything before it ships.

u/hollywood__kills — 17 days ago

InniClassic 1.3.0 — sleep/wake, radio, Bluetooth & FLAC fixes

Quick update with a batch of fixes for stuff you all reported here — thanks for the detailed bug reports, they made this one a lot easier to track down.

If you'd like to support the project: https://buymeacoffee.com/gz17egcara — totally optional, never required.

Fixed:

  • Screen not waking up after auto-sleep (vibrated/made sound but stayed black) — two separate bugs, both fixed
  • Full lockup requiring a paperclip reset when playing FM Radio through wired headphones for a few minutes — turned out Wi-Fi was getting toggled off mid-session and could wedge the shared radio hardware
  • Screen dimming too fast during normal use — default backlight timeout was 10s, now 1 minute
  • Bluetooth headphones (AirPods reported) playing very quiet — known AVRCP absolute-volume quirk, now disabled so headphones use their own volume control
  • Some FLAC files failing outright — they now automatically retry through a second decoding engine instead of just giving up

Grab it here: https://github.com/FabianZettl/inniclassic/releases/tag/v1.3.0 (rom.zip via Innioasis Updater, or the APK if you're updating an existing install)

Full changelog: https://github.com/FabianZettl/inniclassic/blob/master/CHANGELOG.md

u/hollywood__kills — 22 days ago
▲ 133 r/innioasis

InniClassic 1.2.0 — consistent theme, gapless playback, video, and a much leaner system

Big one this time. TL;DR: every menu now looks and behaves the same way (fonts, spacing, arrows, animations), music transitions gaplessly on albums, there's basic video playback now, and the OS underneath got a proper debloat + battery pass. Full breakdown below for anyone who wants the details.

How to update:

  • rom.zip from the release page, flash via Innioasis Updater, no ADB needed.
  • Already running InniClassic/JJ Launcher? InniClassic-1.2.0.apk is there too, adb install over your existing setup.

For the nerds, here's everything:

Consistent theme, top to bottom
Every screen — Main Menu, Music menu, Artists, Albums, Songs, Settings/Bluetooth/Wi-Fi — was quietly running slightly different font sizes, left margins, and row padding depending on which code path built it. All unified now: same left alignment (flush with the status bar title, like a real iPod), same row spacing, same font scale everywhere. The little "〉" focus arrow used to be visible (just dimmer) on every row all the time — now it only shows on the actual focused row, like it should. Status bar is thinner too, matching real iPod proportions instead of the oversized one we had.

Also fixed: Main Menu and the Music menu had two different cover-art implementations — Main Menu had a nice slow "Ken Burns" pan/zoom on the album art, Music menu was just a static crop. They're identical now, same animation, same behavior.

Gapless playback
Kicks in automatically for albums or playlists of 15 tracks or fewer, as long as shuffle's off and there's no FLAC in the queue. Previously every track change tore down the player and reloaded from scratch — small but audible gap. Now for that bounded case we load the whole queue into ExoPlayer natively and let it transition internally, zero gap. FLAC is excluded because it runs on a completely separate legacy decoder that can't join that queue, and big/shuffled lists (like All Songs shuffled) intentionally keep the old per-track loading, since gapless doesn't really matter there and it's the safer, more tested path.

Video (first pass)
New "Videos" entry in the Main Menu, own folder on the SD card, full-screen player, wheel does volume by default and seek if you long-press center to switch modes. Built on the same ExoPlayer engine we already use for audio — no new dependency, no VLC. Calling this explicitly a first implementation: it plays back fine but hasn't been optimized (large/high-bitrate files, no thumbnails in the list yet, no resume position). Expect follow-up passes.

Debloat + battery
Two separate things here:

  1. Found and killed two background loops that were doing real, continuous work for no visible benefit — one recalculated Now Playing's progress bar/timer every 0.5s even while browsing other screens with music just playing in the background, and one refreshed the clock/widgets every second forever, including during "screen off" playback (screen-off here is a virtual black overlay, not real display power-down, so the app runs the whole time underneath). Both now sit idle unless actually needed — should be a real, measurable battery win especially for long screen-off listening sessions.
  2. Also went through the stock Android/MediaTek app list and identified a chunk of stuff a dedicated MP3 player never touches — Exchange mail sync, the phone/telephony stack, SIM toolkit, text-to-speech, live-wallpaper demos, calendar, an OEM RAM-cleaner utility that could theoretically kill background processes including music playback. Verified against our own code first — turns out the stock FM Radio app and Download Manager are not safe to touch, since our own Radio and PC Upload features quietly depend on them. This debloat isn't baked into the ROM yet (still validating it holds up), but it's documented for anyone who wants to try it themselves in the meantime.

Also two real bugs found while doing all the row-styling work: focus arrow color was reading from the theme instead of being fixed white, and a recycled list row could get its blue "focused" background incorrectly wiped back to normal regardless of whether it was actually focused.

Full changelog: https://github.com/FabianZettl/inniclassic/blob/master/CHANGELOG.md

u/hollywood__kills — 24 days ago

InniClassic 1.1.2 — bug fixes from your feedback

Another update based on bugs you all reported here on Reddit and in DMs — thanks for testing and reporting, this stuff is hard to catch without a big pool of real libraries and devices. Highlights:

Fixed:

  • 🔴 The big one: the launcher would crash/restart when browsing into Artists, Album Artists, Albums, Songs, or Genres — some libraries had a song with a missing artist or album tag that the app didn't handle safely. Should be completely gone now, regardless of what your tags look like.
  • FLAC files stuck at 0:00 and never played — fixed, should play normally now.
  • Screen turning off mid-session even while you're actively scrolling the wheel — the auto-lock timer wasn't resetting on wheel input, now it does.
  • Battery icon showing basically no difference while charging — it's supposed to show a little lightning bolt, turns out that code was never actually switched on. Fixed, you'll see a proper bolt now.
  • Long album/track names running into the battery/Bluetooth icons up top — now truncates with "…" instead of overlapping.

Added:

  • "Shuffle" option at the top of All Songs, like the stock Y1 firmware has.
  • FM Radio is back in the Main Menu (it quietly went missing in the last build, my bad).

How to update:

  • Easiest: grab rom.zip from the release page and flash it with the Innioasis Updater — no ADB needed, just point it at the zip and follow the prompts.
  • Already have InniClassic/JJ Launcher installed and just want the app update? InniClassic-1.1.2.apk is there too, adb install it over your existing install.

Full changelog: https://github.com/FabianZettl/inniclassic/blob/master/CHANGELOG.md

Keep the bug reports coming, they're genuinely how this gets better.

reddit.com
u/hollywood__kills — 24 days ago

InniClassic (formerly "JJ Launcher Classic Version") — now flashable via Innioasis Updater

The big one: no more ADB.

You can now flash InniClassic straight through the Innioasis Updater — select the rom.zip, follow the prompts, done. It's a full ROM (latest Y1 Firmware 3.1.2) with InniClassic pre-installed as the system launcher, so there's no more uninstalling the stock launcher first, no signature mismatch errors, no terminal at all. Flash-tested this on a second device myself before posting.

If you'd rather just update the APK over an existing JJ Launcher install, that path still works too (see README).

Also in this build:

  • New dark theme — same iPod Classic look, inverted for dark mode
  • Fixed Bluetooth not connecting to some speakers (missing system permission that a regular app install can't grant itself — now handled automatically)
  • New Album Cover Tilt setting if you want the Now Playing cover flat instead of angled
  • Music menu now has both Artists (matches the literal artist tag on each track) and Album Artists (the existing grouping) — real iPod Classic has both
  • Fixed track titles occasionally showing their file extension (.ogg.wav) when a file has no title tag
  • Music Quiz restructured into 5 rounds of 8 questions with a proper round-complete/victory flow (bonus rounds still to come)
  • Plus the two bug fixes from last update (invisible web server text, wheel staying active while the screen was locked)

Download: GitHub release

Full changelog: CHANGELOG.md

u/hollywood__kills — 26 days ago
▲ 100 r/innioasis

JJ Launcher Classic Version 1.1.0 — Now Playing gets real depth (Progress/Seek/Shuffle/Rating sub-menus, On-The-Go, star ratings)

Update to my iPod Classic-style fork of JJ Launcher for the Innioasis Y1. This one's mostly about making the Now Playing screen actually feel like a real iPod instead of just looking like one.

What's new:

  • Fast-scroll letter jump (spin the wheel fast through a list to jump by letter) tuned to feel right
  • Now Playing sub-menus — clicking the center button now cycles through Progress → Seek → Shuffle & Repeat → Rating, exactly like a real click wheel iPod. Turn the wheel in each state to scrub the track, toggle shuffle/repeat, or set a star rating. Outside of these, the wheel still controls volume like before.
  • Star ratings (1-5 stars, set from the new Rating state)
  • On-The-Go playlist — the classic instant playlist, one tap from the Now Playing hold-menu
  • Now Playing hold-menu rebuilt to match the real iPod: Add to On-The-Go / Browse Album / Browse Artist / Cancel
  • Composers grouping in the Music menu
  • Main Menu cleanup — Cover Flow, Audiobooks, Folders, Years, Recently Added, and Favorites moved out of the Main Menu and into the Music menu, where they belong on a real iPod. Main Menu is back to just Now Playing, Music, Podcasts, Settings, etc.
  • Fixed inconsistent menu font sizes across screens
  • Status bar now shows the current screen name instead of a clock

Download: GitHub release

If you're upgrading from an older version, you need to uninstall it first — different signing cert. Full steps are in the README, but the short version:

adb uninstall com.themoon.y1
adb install JJLauncherClassic-1.1.0.apk

Full changelog: CHANGELOG.md

u/hollywood__kills — 28 days ago

JJ Launcher Classic Version — bringing the real iPod Classic experience to the Innioasis Y1

Been running JJ Launcher on my Innioasis Y1 for a while and love the base — huge thanks to ismileblue for building it. Wanted the actual iPod Classic experience though, not just the hardware, so I built a fork on top of it: JJ Launcher Classic Version.

What's new on top of JJ Launcher:

  • 🎨 Bundled iPod Classic theme — plain white two-pane menus (list on the left, a slowly panning full-bleed album cover on the right that extends up behind the status bar, just like the original), an angled Now Playing cover with a reflection underneath, redesigned Artist/Album lists with big cover art and an "All Songs" shortcut per artist, and a real search screen.
  • 🎧 Last.fm scrobbling — a local Rockbox-style .scrobbler.log and live scrobbling against the real Last.fm API, with a browser-based login flow so you don't have to type your password with the click wheel.
  • ❓ Music Quiz — first version of the classic iPod Music Quiz mini-game, built from your own library, styled after the original's glossy 2000s look.
  • 🎵 OGG Vorbis support — playback + library scanning, including auto-detection of files that are secretly Opus but saved with an .ogg extension (happens more than you'd think).

Screenshots and full changelog are in the repo.

Install: you need JJ Launcher already installed via the Innioasis Updater first — this replaces the launcher app, not the firmware. Then:

adb install -r JJLauncherClassic-1.0.0.apk

APK + release notes: https://github.com/FabianZettl/jj-launcher-classic/releases/tag/v1.0.0
Repo: https://github.com/FabianZettl/jj-launcher-classic

Currently only tested on the Innioasis Y1 (firmware 2.1.9). Bug reports/issues welcome on GitHub. Still very much a hobby project, but it's been rock solid on my own device for daily use.

u/hollywood__kills — 30 days ago
▲ 108 r/innioasis

Forked JJ Launcher with iPod Classic Theme and LastFM Scrobbling

I forked https://github.com/ismileblue/y1_launcher

These were my changes:
- added LastFM Live scrobbling
- iPod Classic Style "now Playing" screen
- Artist - Album - Track tree in database
- Album cover art in Database View
- Main Menu with Album Art (Random Cover when no music playing)

u/hollywood__kills — 1 month ago
▲ 17 r/rockbox

I built a Navidrome/OpenSubsonic desktop client with native Rockbox sync — configurable folder templates, server-side transcoding, M3U playlists, folder.jpg cover art

Hey,

I've been building Neiro Desktop — a desktop music client for Navidrome / any OpenSubsonic server. I'm posting here specifically because of a feature I think this community will actually use: built-in Rockbox sync.

🎸 The Rockbox sync

Sidebar → Device Sync. You point it at your DAP's mount point (/media/user/ROCKBOX) and hit Sync. That's basically it.

What it does under the hood:

Folder structure — fully configurable template. Default is:

{artist}/{album}/{track:02d} - {title}

You can use {artist}, {album}, {title}, {track}, {track:02d}, {year}. Live preview shows you what the actual path looks like before you run it.

Transcoding — MP3, OGG Vorbis, Opus, or original. Bitrate 128/192/256/320. Crucially: transcoding happens server-side via Subsonic's stream?format=mp3&maxBitRate=192 endpoint — no local FFmpeg needed. Your server is already doing it for streaming anyway.

There's a "lossless only" toggle — if enabled, FLAC/WAV/ALAC get transcoded to your target format, but MP3/OGG already on the server get copied as-is without re-encoding. Saves quality, saves time.

Incremental sync — files already on the device are skipped by path. Re-run it after adding new albums and it only grabs what's missing.

M3U playlists — all your Subsonic playlists get written to {device}/Playlists/ as .m3u files with relative paths back to the music folder. They load in Rockbox directly.

Cover art — saves folder.jpg per album directory (600px). Rockbox picks this up automatically.

Live progress bar: scanning → 145/312 ✓89 ⤳54 ✗2

The rest of the app

For context — it's a full Navidrome client, not just a sync tool:

  • Dynamic color theming — every screen picks up colors from the current album art, sidebar included, with animated transitions
  • Last.fm — live scrobbling, "Now Playing" updates, top charts on the home screen, personal play counts on artist pages, love/unlove from the player
  • Now Playing — fullscreen immersive player with blurred album art, queue panel, seek, volume, shuffle, repeat
  • QR Sync — generate a QR code in desktop settings, scan with the Android app, transfers server credentials instantly

The Android companion app (same project, separate repo) has been out for a bit — same server, same playlists, same Last.fm account. The QR thing is the bridge between the two.

Links

It's early (v0.1.0-alpha) but the sync engine is solid. Happy to answer questions about the Rockbox side specifically — I tested against a Sansa Clip+ and an iBasso DX series device.

Suggestions welcome — especially from people with larger libraries who can stress-test the sync pagination, and from anyone using non-standard Rockbox folder structures.

u/hollywood__kills — 2 months ago