nugget_for_y1🗕🗖🗙
The Innioasis Y1 running Rockbox

The most stable CFW for your Innioasis Y1: Nugget for Y1

Nugget for Y1 makes your Innioasis Y1 last longer, be faster and easier to use with Rockbox. Based on Linux, running Rockbox, it's stable and open.

Install today GitHub

Scroll down
battery_life🗕🗖🗙

2.5x the battery life

It's really the same device??

Rockbox on Android

20h

Stock firmware (Android)

30h

With Nugget Y1!

50h

Battery life is tested with AAC audio playing through wired earphones, volume at 50dB, WiFi and Bluetooth disabled. Visuals are an approximation. Battery hours are rounded up to the nearby value. Values may not be accurate and can fluctuate with variables.

why_pick_me🗕🗖🗙

Why not just use the Android version?

Normally, Rockbox for the Y1 run as an app on top of Android 4.2.2. Why pick us?

No battery drain

Android keeps a whole, dated phone operating system awake behind your music. We took it out and you get 2.5x the battery life.

Straight into Rockbox

Power on and in under 10 seconds you're in. Power off or reboot right from the Rockbox menu.

Properly loud

The headphone amp runs at full strength, matching the stock maximum volume.

Adjust the power

Save battery in power-saver mode or overclock for heavy stuff.

Support iPod Rockbox themes

Natively supports iPod themes. Just adjust the screen size to Classic mode.

It's still all Rockbox

Every audio format, themes and fonts are supported.

wizard🗕🗖🗙

Installing takes a few minutes

Nugget for Y1 Tool (Recommended)

  1. Download our tool

    We built a tool for Mac and Windows that automatically sets up everything. It's safe, check our source code.

  2. Follow the instructions on screen

    The app will guide you through the process of flashing and set up everything automatically.

  3. Turn it on and configure

    When you're done, you can adjust settings and download themes.

Download tool

WARNING: Flashing replaces the stock firmware. While extremely rare, it can cause the malfunction of the device. We are not responsible of the damage to your device. Only the Y1 TypeA device is supported.

Or

Innioasis Updater CE
  1. Download Innioasis Updater CE

    Nugget for Y1 is now available in the Innioasis Updater CE.

  2. Change the software to Nugget

    Once the app is open and drivers are installed, select 'Nugget for Y1' in the software dropdown. The app will guide you through the process of flashing.

  3. Turn it on and plug it in

    When flashing is complete, turn on Y1. You will see a screen telling you to plug in the device to the PC, do this.

  4. Download .rockbox and put it on the device

    Download the ZIP from our GitHub. Extract it to the Y1, making sure .rockbox is there.

  5. Unplug it, turn it on and configure

    When you're done, you can adjust settings and download themes.

Download Innioasis Updater

info🗕🗖🗙

Work in progress

Because this is our own stack of software, 100% feature parity is not certain.

Not working

Wifi, Vibration, Internal Speaker, FM Radio

Partially working

N/A

About

Nugget Audio Brand

Not affiliated with Innioasis. Built on the open source Rockbox project.

technical

Technical documentation

Nugget for Y1 is Hosted Rockbox running on a minimal Linux system, without an Android userspace, on the Innioasis Y1 (MediaTek MT6572, dual-core Cortex-A7).

System overview

  1. Boot: The MTK preloader and lk load the Linux kernel (zImage) directly into an initramfs root filesystem.
  2. Init: A minimal C /init process mounts /proc, /sys and /dev, powers on the MT6323 headphone amplifier through /dev/eac, enables the audio clocks and activates click wheel scanning. It then detects and mounts the physical microSD card, links user directories into /, initializes USB Mass Storage and executes /rockbox.
  3. Display: Direct Linux framebuffer output at 480x360, 32-bit ARGB8888, with dynamic bit shifts and an unblank refresh.
  4. Input: Linux evdev (/dev/input/event0 to event15) mapped to the click wheel, touch buttons, volume keys and center switch. Dedicated keymap contexts exist for the pitch screen, the quick screen and menus.
  5. Audio: Direct PCM playback through /dev/eac with dynamic 44.1 kHz and 48 kHz switching, +12 dB analog gain and a logarithmic volume scale from -74 dB to +6 dB.
  6. Storage: Only the physical microSD card is used. The internal eMMC is excluded. Supported file systems are vfat, exfat (SDXC, 256 GB and larger), ntfs and ext4, including multi-partition cards. PIVOT_ROOT presents the card as / to plugins.
  7. Missing .rockbox directory: A warning is shown on screen and USB Mass Storage remains active. Startup resumes once the directory is present on the card.
  8. Power management: CPU frequency scaling from 598 MHz to 1.3 GHz, an optional single-core mode, display timeout with backlight fading, and Power Off and Reboot entries in the System menu.

Hardware specification

SoCMediaTek MT6572, 2x Cortex-A7, 598 MHz to 1300 MHz, NEON, VFPv4
Memory512 MB LPDDR2
Display480x360 landscape, 32-bit ARGB8888 framebuffer (/dev/graphics/fb0, /dev/fb0), stride 1920 bytes
AudioMT6323 PMIC codec and amplifier (/dev/eac), 44.1 kHz and 48 kHz dynamic sink clock
Primary storagemicroSD partition 1 (/dev/block/mmcblk1p1 or raw mmcblk1), mounted at /mnt/sdcard and mapped to /
Additional partitionsPartition 2 at /mnt/extsd (Rockbox drive 1, <microSD1>), partition 3 at /mnt/extsd2, and so on
USB storageAndroid USB Mass Storage gadget, LUN0 bound to the microSD card before enable
Boot imageAndroid ANDROID! header, 2048-byte pages. Kernel load address 0x10008000, ramdisk load address 0x11000000, MTK header magic 0x58881688
Partition limitBOOTIMG = 0x600000 (6,291,456 bytes)

Implementation notes

Volume scaling

Cause: sound_set_volume passes the volume to the codec in centibels (-10 dB is -100). pcm-eac.c multiplied this value by 10 again, so reducing the volume by 1 or 2 dB produced silence. dummy_codec.c also compared centibels against -74, which muted output at -7.4 dB.

Resolution: The additional multiplication was removed, and audiohw_set_volume passes centibels directly to pcm_set_master_volume(). The mute threshold is -740, and dummy_codec.c compares against DUMMY_VOLUME_MIN * 10. The volume range is -74 dB to +6 dB in 1 dB steps. Analog headphone gain remains at +12 dB (0x0014).

Dynamic sample rate switching

Cause: sink_set_freq() receives an index into sink->caps.samprs (0 for 44.1 kHz, 1 for 48 kHz). The function switched on case 48000, which never matched, so the default of 44.1 kHz was always used. 48 kHz tracks played approximately 8.8% slower than normal.

Resolution: The index is translated with unsigned long sampr = (freq < HW_NUM_FREQ) ? hw_freq_sampr[freq] : freq; and the function switches on sampr. This configures the AFE DL1, IRQ MCU, I2S output and PMIC downlink registers for 48 kHz.

Advanced Key Lock (selective softlock)

Location: Settings > General Settings > System > Advanced Key Lock.

Keymap: button_context_wps[] did not chain to CONTEXT_STD and therefore lacked standard actions such as ACTION_STD_KEYLOCK. It now ends with LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD). button_context_tree is chained to CONTEXT_LIST, and ACTION_LIST_VOLUP and ACTION_LIST_VOLDOWN are defined in button_context_standard.

Filtering: While locked, the following may be left enabled: volume (keys, and the wheel in the WPS), play and pause, and skip and seek. Changes apply immediately because selectivesoftlock_set_mask calls set_selective_softlock_actions on every toggle.

Center button HOLD mode

The Y1 has no hardware hold switch, so HOLD is implemented as a state machine on the center button. The button release that ends a lock or unlock operation is consumed and does not trigger a user interface action. Operation is described under Key lock operation below.

Speed and pitch screen

Button mapping for CONTEXT_PITCHSCREEN: the click wheel adjusts pitch in fine steps, the volume buttons in coarse steps, Left and Right nudge the value, Center toggles the mode and Menu exits.

Settings persistence

ROCKBOX_NO_TEMP_SETTINGS_FILE causes settings to be written directly to config.cfg. An explicit sync() and the flush mount option commit settings and database updates to the card immediately.

Plugin execution

Plugins are .rock shared libraries loaded through dlopen() and PROT_EXEC mmap. The card is mounted with fmask=0000,dmask=0000 so that the files have execute permission.

Key lock operation

LockHold the Center button for 5 seconds. The display shows Key lock on. The release is consumed.
UnlockHold the Center button for 5 seconds until Click Center to unlock is displayed. Release it, then click Center once within 5 seconds. The display shows Key lock off. The click is consumed.
While lockedSingle clicks and holds shorter than 5 seconds display Key lock on and leave the device locked.

Manual installation

The installer tool performs these steps automatically. The manual procedure is provided for reference.

1. Prepare the microSD card. Format the card as FAT32 or exFAT and extract rockbox_sdcard.zip to the root of the card so that .rockbox is at the top level:

(microSD root)/
      ├── .rockbox/
      │   ├── codecs/
      │   ├── rocks/
      │   ├── fonts/
      │   ├── langs/
      │   └── ...
      └── Music/

2. Flash boot_rockbox.img.

  1. Open SP Flash Tool, select Scatter-loading and choose !stock_rom/MT6572_Android_scatter.txt.
  2. Deselect all partitions except BOOTIMG.
  3. Set the BOOTIMG location to boot_rockbox.img.
  4. Click Download.
  5. Power off the Y1 completely and connect it to the computer over USB.
  6. When "Download OK" is displayed, disconnect the device and power it on.

Release contents

boot_rockbox.imgFlashable boot image containing the kernel and initramfs. Size: 5,976,064 bytes, leaving 315,392 bytes of headroom in the 6 MB BOOTIMG partition.
rockbox_sdcard.zipThe .rockbox directory: codecs (MP3, FLAC, ALAC, AAC, Opus, DSD, WavPack), fonts, themes, and .rock plugins including Doom, Wolf3D, Duke3D, Quake, Rockboy, Chessbox and Sudoku.
rockboxStandalone ARMv7 hard-float Rockbox executable launched by /init.