Skip to content

danfragoso/miyoopod

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MiyooPod

MP3 player for the Miyoo Mini Plus, Mini v4, and Mini Flip running OnionOS. Inspired by the classic iPod interface.

MiyooPod

Features

  • iPod-inspired user interface with multiple themes
  • Browse by Artists, Albums, and Songs
  • Search/filter lists with on-screen A-Z keyboard
  • Album art display with automatic fetching from MusicBrainz
  • Shuffle and repeat modes
  • Seek/fast-forward/rewind with accelerating speed
  • Over-the-air updates
  • Session persistence (queue, position, shuffle/repeat restored on launch)
  • Native 640Γ—480 resolution optimized for Miyoo Mini
  • 17 customizable themes (Classic iPod, Dark Blue, Nord, Cyberpunk, and more)
  • MP3, FLAC, and OGG/Vorbis playback
  • Lyrics display with LRC timed sync and auto-scroll

Installation

  1. Download MiyooPod.zip
  2. Extract the MiyooPod.zip file
  3. Connect your Miyoo Mini Plus SD card to your computer
  4. Copy the MiyooPod folder to /App on your SD card
  5. Safely eject the SD card and insert it back into your Miyoo Mini Plus
  6. MiyooPod will appear in your Apps menu

Adding Songs

MiyooPod reads music files from your SD card's Music folder:

/mnt/SDCARD/Media/Music/
  1. Connect your Miyoo Mini SD card to your computer
  2. Navigate to /Media/Music/ folder
  3. Copy your MP3 files and folders into this directory
  4. Organize your music by artist/album folders for better library organization
  5. Launch MiyooPod - it will automatically scan and index your music library

Supported Formats

MiyooPod supports MP3, FLAC, and OGG/Vorbis audio files.

Recommended Format: MP3 @ 256kbps

  • Format: MP3 (MPEG-1 Audio Layer 3)
  • Bitrate: 256kbps CBR (Constant Bitrate) or VBR V0
  • Sample Rate: 44.1kHz
  • Channels: Stereo

Note: The Miyoo Mini Plus audio output is not high quality enough to justify higher bitrate files. Playback might be choppy with higher bitrate files. FLAC files are supported but MP3 is recommended for best performance on the Miyoo Mini's limited hardware.

Album Artwork

Embedded Artwork

MiyooPod automatically extracts album art embedded in your MP3 files' ID3 tags.

Automatic Download from MusicBrainz

For albums without embedded artwork, MiyooPod can automatically fetch album covers:

  1. Navigate to Settings from the main menu
  2. Select "Fetch Album Art"
  3. MiyooPod will scan your library and download missing album artwork

Note: Requires internet connection via WiFi. Artwork is stored in /mnt/SDCARD/Media/Music/.miyoopod_artwork/

Settings

  • Themes - Choose from 17 visual themes (Classic iPod, Dark, Dark Blue, Light, Nord, Solarized Dark, Matrix Green, Retro Amber, Purple Haze, Cyberpunk, Coffee, Ocean, Forest, Sunset, Neon, Midnight, Gruvbox, Candy)
  • Lock Key - Customize which button locks/unlocks the screen (Y, X, or SELECT). The Miyoo Mini Plus doesn't support suspend mode natively, so the lock key prevents accidental presses during playback
  • Fetch Album Art - Automatically download missing album artwork from MusicBrainz
  • Check for Updates - Manually check for and install OTA updates
  • Update Notifications - Toggle automatic update prompts on/off
  • Clear App Data - Reset library cache, settings, and artwork
  • Toggle Logs - Enable or disable debug logging
  • Rescan Library - Force a complete rescan of your music library
  • About - View app version and check for updates

Technical Details

Built using Go 1.22.2 with native C bindings (CGO) for graphics and audio.

Architecture

  • Platform: Miyoo Mini Plus, Mini v4, Mini Flip / OnionOS
  • CPU: ARM Cortex-A7 (dual-core)
  • Resolution: 640Γ—480 native
  • Cross-compilation: arm-linux-gnueabihf-gcc

Key Libraries

  • SDL2 - Graphics, input handling, window management
  • SDL2_mixer - Audio playback with MP3 decoding (libmpg123)
  • fogleman/gg - 2D graphics rendering
  • dhowden/tag - ID3 tag parsing
  • golang.org/x/image - Image processing and font rendering

Performance Optimizations

  • Dual-core utilization (UI and audio on separate cores)
  • Pre-rendered digit sprites for time display
  • Text measurement and album art caching
  • Library metadata cached as JSON for fast startup

Troubleshooting

App does not launch / crashes on startup

The library cache files may be corrupted. Connect your SD card to your computer and delete the hidden JSON files in the music folder:

/mnt/SDCARD/Media/Music/.miyoopod_library.json
/mnt/SDCARD/Media/Music/.miyoopod_state.json

MiyooPod will rescan your library on the next launch.

Album art not displaying correctly

Open Settings β†’ Clear App Data to wipe the artwork cache and library metadata. MiyooPod will rebuild everything on the next launch. You can then use Fetch Album Art again to re-download missing covers.

Checking logs

If the app is misbehaving, enable logging from Settings β†’ Toggle Logs, then reproduce the issue and check the log file on your SD card:

/mnt/SDCARD/App/MiyooPod/miyoopod.log

Attach this file when reporting a bug on GitHub Issues.

A broken OTA update made the app unusable

If an update left the app in a broken state, manually reinstall the latest version:

  1. Download MiyooPod.zip
  2. Extract and copy the MiyooPod folder to /App on your SD card, overwriting the existing files
  3. Your music library and settings are stored separately and will not be affected

Building from Source

# Cross-compile for ARM
make go

The build process uses CGO to compile Go source with C bindings and bundles all required shared libraries.

Changelog

Version 0.0.6

  • 🎡 FLAC and OGG/Vorbis playback support (decoded via statically linked drflac and stb_vorbis in SDL2_mixer)
  • πŸ“ Lyrics support: embedded lyrics (ID3 USLT, Vorbis comments) displayed with word-wrap and scroll
  • 🎀 LRC timed lyrics: synced highlighting of the current line with auto-scroll and manual scroll override
  • ⏩ Hold ↑/↓ to scroll lists continuously without repeated presses
  • ❌ SELECT + START to quit the app

Version 0.0.5

  • πŸ”„ Over-the-air updates with download progress, checksum verification, and automatic rollback on failure
  • πŸ” Search: filter Artists, Albums, and Songs with an on-screen A-Z keyboard (press SELECT on any list)
  • ⏩ Seek/fast-forward/rewind: hold L or R on the Now Playing screen with accelerating speed
  • πŸ’Ύ Session persistence: queue, playback position, shuffle/repeat state, and current track restored across launches
  • πŸ“œ Header marquee: now-playing track info scrolls in the header bar when browsing menus
  • πŸ›‘οΈ Crash reporting: fatal panics and C-level signals are logged and reported automatically
  • πŸ—‘οΈ Clear App Data option in Settings to reset library cache, settings, and artwork
  • ⚑ Faster startup: version check no longer blocks splash screen; album art uses fast RGBA pixel cache on disk
  • πŸ”„ Non-blocking library scan with dedicated progress screen showing track count, current folder, and phase
  • πŸ–ΌοΈ Non-blocking album art fetch with progress bar, percentage, and cancel/retry support
  • πŸ”Š Volume and brightness persisted across app launches
  • πŸ–ΌοΈ Background album art extraction from MP3 tags after startup
  • πŸ”” Toggle update notifications on/off from Settings
  • πŸ” Manual "Check for Updates" option in Settings
  • πŸ› Fixed race conditions where background goroutines corrupted the framebuffer causing panics
  • πŸ› Fixed volume/brightness overlay screen flash caused by partial framebuffer updates
  • πŸ› Fixed volume resetting on every launch

Version 0.0.4

  • πŸ”Š Fixed volume control using MI_AO ioctl (correct indirect buffer layout matching Onion/keymon)
  • πŸ”Š Fixed volume icon SVG being cut off in the overlay
  • πŸ”’ Added screen lock with power button
  • πŸ”’ Added auto screen lock setting (1/3/5/10 min or disabled)
  • πŸ”’ Added screen peek toggle setting (enable/disable screen wake on button press while locked)
  • πŸ› Fixed brightness and volume being adjustable while screen is locked
  • πŸ› Fixed now playing progress bar drawing over the lock overlay

Version 0.0.3

  • πŸ”§ Fixed PostHog logging initialization order
  • πŸ“Š C logs from SDL initialization now properly captured
  • πŸ“± Device model detection and reporting (Mini Plus, Mini v4, Mini Flip)
  • πŸ“ Display resolution metrics sent to analytics
  • πŸ”€ Independent local logs and developer logs settings

Version 0.0.2

  • ✨ Added support for Miyoo Mini v4 (750Γ—560 resolution)
  • ✨ Added support for Miyoo Mini Flip (750Γ—560 resolution)
  • πŸ”§ Automatic resolution detection via framebuffer device
  • 🎨 UI scaling adapts to different screen sizes while maintaining aspect ratio
  • πŸ› Disabled local logs by default (developer logs still enabled)

Version 0.0.1

  • πŸŽ‰ Initial release
  • 🎡 iPod-inspired user interface
  • 🎨 11 customizable themes
  • πŸ–ΌοΈ Album art display and automatic fetching from MusicBrainz
  • πŸ”€ Shuffle and repeat modes
  • πŸ“± Optimized for Miyoo Mini Plus (640Γ—480)

Contributing

MiyooPod is open-source! Contributions are welcome.

License

Open Source

Author

Created by Danilo Fragoso


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors