Releases: yetisoldier/Hiby-R1-Audiobook-Mod
Release list
HiBy R1 Audiobook Mod v2.0.28
HiBy R1 Audiobook Mod v2.0.28
This release is for the normal HiBy R1 only. It is based on stock HiBy R1
firmware 1.6 and is not for the R1 MIDI.
The About screen should show HiBy R1 2.0.28 after installation.
What changed since v2.0.27
Audiobooks stay out of Music
This release fixes fresh installations where files under /Audiobooks also
appeared in HiBy's Music section after Update Database.
The Audiobooks app and HiBy Music use separate databases. Previous v2.x builds
correctly scanned the audiobook library, but HiBy's own scanner could still add
the same files to Music. Opening Audiobooks now starts a short background
cleanup that removes only root /Audiobooks entries from the known Music
database copies and repairs the affected catalog counts and indexes.
The cleanup does not depend on refresh order. After running Music -> Update
Database, open Audiobooks once and the catalogs will be separated. The worker
then exits; it is not an always-running service and adds no idle battery or RAM
usage.
Playback, resume, chapters, bookmarks, display wake, USB handling, and the
Audiobooks user interface are unchanged from v2.0.27.
Installation
- Download
r1-audiobooks-2.0.28.upt. - Rename it to exactly
r1.upt. - Copy it to the root of the R1 SD card.
- On the R1, choose System -> Firmware update -> Via SD-card.
- Confirm the update and wait for the reboot.
- Delete or rename
r1.uptafter the update. - Run Music -> Update Database when using a new or changed SD card.
- Open Audiobooks and tap Refresh Library when the audiobook contents
changed. Opening Audiobooks also performs the Music-catalog separation.
Recommended layout:
/Music
/Audiobooks/Author/Book Title/01 - Chapter.mp3
/Audiobooks/Author/Book Title/Book Title.m4b
The location under /Audiobooks is authoritative; the Genre tag does not need
to be Audiobook.
Verification
- A synthetic regression database with shared music/audiobook metadata passed.
- Two captured R1 databases removed 135 and 298 audiobook rows while preserving
all 114 and 7,396 legitimate Music rows respectively. - Catalog counts, format/time indexes, SQLite integrity, and idempotence passed.
- The full local sanity suite and strict production firmware verifier passed.
- Persistent boot ADB remains disabled, preserving normal SD-card USB storage.
Known limitations
- Audiobook playback stops when leaving the Audiobooks app.
- There is no audiobook text search; use Titles, Authors, Series, or Folders.
- ADB, USB mass storage, and USB DAC share one controller and cannot be active
simultaneously. - Public firmware does not keep ADB enabled after reboot.
Keep a copy of official HiBy R1 1.6 firmware for recovery. This is unofficial
firmware tested on one normal R1; install it at your own risk.
HiBy R1 Audiobook Mod v2.0.27
HiBy R1 Audiobook Mod v2.0.27
This release is for the normal HiBy R1 only. It is based on stock HiBy R1
firmware 1.6 and is not for the R1 MIDI.
The About screen should show HiBy R1 2.0.27 after installation.
What changed since v2.0.26
Restored normal SD-card USB storage
The public firmware no longer starts ADB automatically at boot. Connecting the
R1 to a computer in Device mode once again presents the SD card as normal USB
storage.
The old boot-ADB retry could take control of the USB gadget after HiBy had
already configured mass storage. A dormant mass-storage connection could then
keep the SD block device busy without mounting it on the computer or the R1.
This could also make a valid audiobook appear not to play because its file was
temporarily unavailable.
Hardened development USB tools
- Manual ADB and mass-storage changes now run through one serialized helper.
- Entering ADB mode releases stale mass-storage state before mounting the SD
locally. - Returning to mass storage syncs and cleanly unmounts the SD first.
- A busy filesystem is refused rather than exposed live to the computer.
- ADB shutdown uses a detached worker so stopping ADB cannot interrupt the
transition halfway through. - If the stock ADB helper refuses an already-mounted empty configfs during
rollback, the hardened helper reconstructs the same FunctionFS gadget
directly instead of leaving USB unavailable. - Failures are rolled back where possible and logged to
/tmp/r1-usb-mode.log. - Optional development boot ADB is now explicitly marker-gated and performs a
single delayed transition without a retry loop.
These changes do not alter audiobook playback, resume, library scanning,
chapters, bookmarks, or the user interface from v2.0.26.
Included features
- Dedicated Audiobooks app with Continue, Titles, Authors, Series, Folders,
Finished, and Refresh Library. - Per-book and multipart resume with a 5-second smart rewind.
- Authoritative SD-card position checkpoints every 15 seconds, plus immediate
saves on pause, stop, completion, and app exit. - MP3 and M4B/AAC playback.
- Cover art, publisher descriptions, embedded M4B and MP3 chapters, bookmarks,
sleep timer, and 1.0x through 2.0x pitch-preserving speed control. - Physical play/pause, previous/next, and hold-to-ramp volume controls.
- Wired and Bluetooth playback with Bluetooth SBC XQ.
- App-scoped SD runtime-power protection.
- USB DAC mode and Native DSD unlocks.
Installation
- Download
r1-audiobooks-2.0.27.upt. - Rename it to exactly
r1.upt. - Copy it to the root of the R1 SD card.
- On the R1, choose System -> Firmware update -> Via SD-card.
- Confirm the update and wait for the reboot.
- Delete or rename
r1.uptafter the update. - Open Audiobooks and tap Refresh Library if this is a new card or its
audiobook contents changed.
Recommended layout:
/Music
/Audiobooks/Author/Book Title/01 - Chapter.mp3
/Audiobooks/Author/Book Title/Book Title.m4b
Album = book title and Artist/Album Artist = author are recommended, but folder
and file names are used as fallbacks. The Genre tag does not need to be
Audiobook; location under /Audiobooks is authoritative.
Verification
The production package passed the complete local sanity suite and strict rootfs
verification. All 5,488 stock paths and modes, 482 symlinks, root ownership,
launcher integration, USB helper modes and content, feature markers, audio
unlocks, OTA metadata, and known-bad package checks passed.
On the test R1, an audiobook correctly prevented unsafe mass-storage export
while its file was open. After leaving Audiobooks, the hardened transition
stopped ADB and Windows mounted the HibyR1 exFAT volume through the Linux
File-Stor Gadget. A reported non-playing 1.25 GiB M4B also played normally once
the SD mount was restored.
Known limitations
- Audiobook playback stops when leaving the Audiobooks app.
- There is no audiobook text search; use Titles, Authors, Series, or Folders.
- ADB, USB mass storage, and USB DAC cannot be active simultaneously because
they share one USB gadget controller. - Public firmware does not keep ADB enabled after reboot. Developers must
enable it manually when needed. - The experimental UTF-8/Cyrillic changes from v2.0.20 are not included.
Keep a copy of official stock HiBy R1 1.6 firmware for recovery. This is an
unofficial community modification tested on one normal R1, so install at your
own risk.
HiBy R1 Audiobook Mod v2.0.26
HiBy R1 Audiobook Mod v2.0.26
This release is for the normal HiBy R1 only. It is based on stock HiBy R1
firmware 1.6 and is not for the R1 MIDI.
The About screen should show HiBy R1 2.0.26 after installation.
What changed since v2.0.25
Fixed: audiobook plays behind a black screen that will not wake
Some users found that an audiobook could keep playing after the display timed
out, while the screen would no longer wake from touch or the power button. The
screen sometimes returned only after connecting a charger.
The problem was a mismatch between two screen states. HiBy's player could fully
power down the framebuffer while the audiobook app tracked only the backlight
brightness. Audio and hardware controls stayed alive, but the app did not know
that the display itself needed to be restored.
v2.0.26 now:
- Converts HiBy's full screen blank into the audiobook app's lightweight
screen-off mode, so audio can continue while the display is dark. - Detects and recovers if the framebuffer was already fully blanked.
- Explicitly wakes the framebuffer before handling media or volume buttons.
- Preserves one-press power wake and touchscreen double-tap wake.
The recovery runs inside the existing UI loop. It does not add a background
service, another thread, or recurring memory allocation.
Safer firmware builds
The firmware builder now recompiles the audiobook hook from the current source
every time it creates a NativeApp package. This prevents a valid-looking update
from accidentally including an older hook library.
The installed-release checker now understands the NativeApp architecture and
validates the wrapper, preload hook, host process, and SD library database. A
repeatable developer tool for forcing and diagnosing framebuffer blanks is also
included in the source repository.
Included features
- Dedicated Audiobooks app with Continue, Titles, Authors, Series, Folders,
Finished, and Refresh Library. - Per-book and multipart resume with a 5-second smart rewind.
- Authoritative SD-card position checkpoints every 15 seconds, plus immediate
saves on pause, stop, completion, and app exit. - MP3 and M4B/AAC playback.
- Cover art, publisher descriptions, embedded M4B and MP3 chapters, bookmarks,
sleep timer, and 1.0x through 2.0x pitch-preserving speed control. - Physical play/pause, previous/next, and hold-to-ramp volume controls.
- Wired and Bluetooth playback with Bluetooth SBC XQ.
- App-scoped SD runtime-power protection.
- USB DAC mode and Native DSD unlocks.
- Boot ADB while USB working mode is Device.
Installation
- Download
r1-audiobooks-2.0.26.upt. - Rename it to exactly
r1.upt. - Copy it to the root of the R1 SD card.
- On the R1, choose System -> Firmware update -> Via SD-card.
- Confirm the update and wait for the reboot.
- Delete or rename
r1.uptafter the update. - Open Audiobooks and tap Refresh Library if this is a new card or its
audiobook contents changed.
Recommended layout:
/Music
/Audiobooks/Author/Book Title/01 - Chapter.mp3
/Audiobooks/Author/Book Title/Book Title.m4b
Album = book title and Artist/Album Artist = author are recommended, but folder
and file names are used as fallbacks. The Genre tag does not need to be
Audiobook; location under /Audiobooks is authoritative.
Verification
The production package passed the complete local sanity suite and strict rootfs
verification. All 5,488 stock paths and modes, 482 symlinks, root ownership,
launcher integration, feature markers, audio unlocks, OTA metadata, and
known-bad package checks passed.
The exact production package was flashed to the test R1. Ten forced hard-screen
blanks each recovered and woke with one power press. Double-tap, volume,
play/pause, app exit, and stock Music navigation also passed. The player kept
the same process, thread count, and open-file count during the test.
This failure was originally reported after the player sat idle, so longer-term
and overnight testing across more devices remains valuable.
Known limitations
- Audiobook playback stops when leaving the Audiobooks app.
- There is no audiobook text search; use Titles, Authors, Series, or Folders.
- ADB and USB DAC cannot be active simultaneously because they share the USB
gadget controller. Select Device mode for ADB or DAC mode for USB audio. - The experimental UTF-8/Cyrillic changes from v2.0.20 are not included.
Keep a copy of official stock HiBy R1 1.6 firmware for recovery. This is an
unofficial community modification tested on one normal R1, so install at your
own risk.
HiBy R1 Audiobook Mod v2.0.25
HiBy R1 Audiobook Mod v2.0.25
This release is for the normal HiBy R1 only. It is based on stock HiBy R1
firmware 1.6 and is not for the R1 MIDI.
The About screen should show HiBy R1 2.0.25 after installation.
What changed since v2.0.24
Faster folder browsing
Opening and moving through Audiobooks -> Folders no longer performs several
full library scans on the UI thread. The app now uses the selected cached row
and one indexed folder query. Nested folders opened in 1-2 ms on the test R1,
and the normal folder back stack remained responsive.
Embedded MP3 chapters
Single-file MP3 audiobooks can now expose embedded ID3v2.3/v2.4 CHAP/CTOC
chapters. Chapter titles and ordering are read during Refresh Library, then
chapter taps seek directly to the selected timestamp.
The parser streams metadata and skips large artwork instead of loading the
whole ID3 tag into RAM. It also has strict limits on tag size, frame count,
frame payload, and chapter count. Multipart MP3 books without embedded chapter
metadata continue to show one chapter per file.
Larger Now Playing cover
Now Playing uses a larger 270-pixel cover. The title, author, duration, and
progress section has moved down into the newly available lower space while the
playback controls remain in their familiar positions. Long titles wrap without
overlapping progress or controls.
Development tooling
ADB screenshots now capture the framebuffer page that is actually visible,
which avoids saving a stale boot screen when the display uses its second
buffer. Generated MP3 chapter fixtures are included in the complete local
sanity suite.
Included features
- Dedicated Audiobooks app with Continue, Titles, Authors, Series, Folders,
Finished, and Refresh Library. - Per-book and multipart resume with a 5-second smart rewind.
- Authoritative SD-card position checkpoints every 15 seconds, plus immediate
saves on pause, stop, completion, and app exit. - MP3 and M4B/AAC playback.
- Cover art, descriptions, embedded chapters, bookmarks, sleep timer, and
1.0x through 2.0x pitch-preserving speed control. - Physical play/pause, previous/next, and hold-to-ramp volume controls.
- Wired and Bluetooth playback with Bluetooth SBC XQ.
- App-scoped SD runtime-power protection.
- USB DAC mode and Native DSD unlocks.
- Boot ADB while USB working mode is Device.
Installation
- Download
r1-audiobooks-2.0.25.upt. - Rename it to exactly
r1.upt. - Copy it to the root of the R1 SD card.
- On the R1, choose System -> Firmware update -> Via SD-card.
- Confirm the update and wait for the reboot.
- Delete or rename
r1.uptafter the update. - Open Audiobooks and tap Refresh Library.
Recommended layout:
/Music
/Audiobooks/Author/Book Title/01 - Chapter.mp3
/Audiobooks/Author/Book Title/Book Title.m4b
Album = book title and Artist/Album Artist = author are recommended, but folder
and file names are used as fallbacks. The Genre tag does not need to be
Audiobook; location under /Audiobooks is authoritative.
Verification
The production package passed the complete local sanity suite and strict rootfs
verification. All 5,488 stock paths and modes, 482 symlinks, root ownership,
launcher integration, feature markers, audio unlocks, OTA metadata, and
known-bad package checks passed.
On-device testing covered nested folder navigation, embedded MP3 chapter
discovery and direct seeking, long-title wrapping, progress scrubbing, physical
controls, repeated app entry/exit, memory plateau, reboot, boot ADB, and direct
resume.
Known limitations
- Audiobook playback stops when leaving the Audiobooks app.
- There is no audiobook text search; use Titles, Authors, Series, or Folders.
- Run Refresh Library after upgrading to cache embedded MP3 chapters.
- ADB and USB DAC cannot be active simultaneously because they share the USB
gadget controller. Select Device mode for ADB or DAC mode for USB audio. - The experimental UTF-8/Cyrillic changes from v2.0.20 are not included.
Keep a copy of official stock HiBy R1 1.6 firmware for recovery. This is an
unofficial community modification tested on one normal R1, so install at your
own risk.
HiBy R1 Audiobook Mod v2.0.24
HiBy R1 Audiobook Mod v2.0.24
This release is for the normal HiBy R1 only. It is based on stock HiBy R1
firmware 1.6 and is not for the R1 MIDI.
The About screen should show HiBy R1 2.0.24 after installation.
What changed since v2.0.23
Publisher descriptions
Book detail pages can now show the publisher summary stored in:
- MP3 Comment (
COMM) - M4B Description (
descorldes)
The summary uses the full screen width between the cover and progress area.
Progress now sits immediately above the bottom-anchored Play, Chapters,
Bookmarks, and Menu buttons. Common HTML tags, line breaks, extra whitespace,
and Audible-style punctuation are cleaned up during the library scan.
Run Audiobooks -> Refresh Library once after upgrading so descriptions are
added to books already in the catalog. Books without description metadata
continue to work normally.
Light and dark theme icon
The launcher now uses HiBy's stock theme-specific Books icon while retaining
the Audiobooks label and behavior. This avoids the black square/background that
the previous custom icon could show in light mode.
Faster, reliable return to the launcher
Leaving Audiobooks no longer relies on HiBy eventually repainting two
framebuffer pages that the app had cleared. The app preserves the launcher
frame, restores it immediately on exit, and briefly watches HiBy's first
double-buffer redraws so a hidden navigation frame is panned onscreen.
On the test R1:
- Idle exit returned in about 590 ms.
- Exit while a book was playing returned in about 760 ms.
- The first launcher tap displayed immediately.
- No second tap or power-button screen cycle was needed.
- The temporary 750 KiB frame snapshot and handoff thread cleaned up normally.
Included features
- Dedicated Audiobooks app with Continue, Titles, Authors, Series, Folders,
Finished, and Refresh Library. - Per-book and multipart resume with a 5-second smart rewind.
- Authoritative SD-card position checkpoints every 15 seconds, plus immediate
saves on pause, stop, completion, and app exit. - MP3 and M4B/AAC playback.
- Cover art, descriptions, chapters, bookmarks, sleep timer, and 1.0x through
2.0x pitch-preserving speed control. - Physical play/pause, previous/next, and hold-to-ramp volume controls.
- Wired and Bluetooth playback with Bluetooth SBC XQ.
- App-scoped SD runtime-power protection from v2.0.23.
- USB DAC mode and Native DSD unlocks.
- Boot ADB while USB working mode is Device.
Installation
- Download
r1-audiobooks-2.0.24.upt. - Rename it to exactly
r1.upt. - Copy it to the root of the R1 SD card.
- On the R1, choose System -> Firmware update -> Via SD-card.
- Confirm the update and wait for the reboot.
- Delete or rename
r1.uptafter the update. - Open Audiobooks and tap Refresh Library.
Recommended layout:
/Music
/Audiobooks/Author/Book Title/01 - Chapter.mp3
/Audiobooks/Author/Book Title/Book Title.m4b
Album = book title and Artist/Album Artist = author are recommended, but folder
and file names are used as fallbacks. The Genre tag does not need to be
Audiobook; location under /Audiobooks is authoritative.
Verification
The production package passed the complete local sanity suite and strict rootfs
verification. All 5,488 stock paths, modes, symlinks, root ownership, launcher
integration, feature markers, audio unlocks, OTA metadata, and known-bad
package checks passed.
Known limitations
- Audiobook playback stops when leaving the Audiobooks app.
- There is no audiobook text search; use Titles, Authors, Series, or Folders.
- Descriptions require supported metadata and a Refresh Library scan.
- ADB and USB DAC cannot be active simultaneously because they share the USB
gadget controller. Select Device mode for ADB or DAC mode for USB audio. - The experimental UTF-8/Cyrillic changes from v2.0.20 are not included.
Keep a copy of official stock HiBy R1 1.6 firmware for recovery. This is an
unofficial community modification tested on one normal R1, so install at your
own risk.
HiBy R1 Audiobook Mod v2.0.23
HiBy R1 Audiobook Mod v2.0.23
This release is for the normal HiBy R1 only. It is based on stock HiBy R1
firmware 1.6 and is not for the R1 MIDI.
The About screen should show HiBy R1 2.0.23 after installation.
What changed since v2.0.22
Overnight SD-card freeze mitigation
An overnight freeze on the test R1 was traced to the stock Ingenic MMC driver,
not to the audiobook app running out of RAM. The SD worker faulted while the
card was resuming from runtime suspend, leaving the player blocked in SD
writeback.
While Audiobooks is open, v2.0.23 keeps the SD platform, host, and card
runtime-power controls active. Leaving the app restores the original values, so
the card still uses normal stock power saving in Music and on the launcher.
There is no global power-management change or always-running daemon.
Less resume-write traffic
- Resume position sidecars now checkpoint every 15 seconds instead of every 5.
- The SQLite list-progress mirror is limited to once per minute.
- Pause, stop, completion, and app exit still save immediately.
- Identical back-to-back saves are skipped.
The SD sidecar remains the authoritative resume position. A book must play for
at least 15 seconds before its first periodic checkpoint.
Included features
- Dedicated Audiobooks app with Continue, Titles, Authors, Series, Folders,
Finished, and Refresh Library. - Per-book and multipart resume with a 5-second smart rewind.
- MP3 and M4B/AAC playback.
- Cover art, chapters, bookmarks, sleep timer, and 1.0x through 2.0x
pitch-preserving speed control. - Physical play/pause, previous/next, and hold-to-ramp volume controls.
- Wired and Bluetooth playback with Bluetooth SBC XQ.
- USB DAC mode and Native DSD unlocks.
- Boot ADB while USB working mode is Device.
Installation
- Download
r1-audiobooks-2.0.23.upt. - Rename it to exactly
r1.upt. - Copy it to the root of the R1 SD card.
- On the R1, choose System -> Firmware update -> Via SD-card.
- Confirm the update and wait for the reboot.
- Delete or rename
r1.uptafter the update. - Open Audiobooks and tap Refresh Library.
Recommended layout:
/Music
/Audiobooks/Author/Book Title/01 - Chapter.mp3
/Audiobooks/Author/Book Title/Book Title.m4b
Album = book title and Artist/Album Artist = author are recommended, but folder
and file names are used as fallbacks. The Genre tag does not need to be
Audiobook; location under /Audiobooks is authoritative.
Verification
The package passed strict rootfs and feature verification, was flashed through
the stock updater, and was tested on the project R1. ADB returned automatically;
installed hashes matched; the SD guard acquired and released correctly; resume
checkpoint and immediate-save behavior passed; Refresh Library retained all 52
test books; memory remained near 18 MB available; and the post-flash kernel log
was clean.
The original SD failure was intermittent and appeared after a long idle period.
This update directly addresses the observed kernel path, but reports from other
devices and SD cards are especially useful.
Known limitations
- Audiobook playback stops when leaving the Audiobooks app.
- There is no audiobook text search; use Titles, Authors, Series, or Folders.
- ADB and USB DAC cannot be active simultaneously because they share the USB
gadget controller. Select Device mode for ADB or DAC mode for USB audio. - The experimental UTF-8/Cyrillic changes from v2.0.20 are not included.
Keep a copy of official stock HiBy R1 1.6 firmware for recovery. This is an
unofficial community modification tested on one normal R1, so install at your
own risk.
HiBy R1 Audiobook Mod v2.0.22
HiBy R1 Audiobook Mod v2.0.22
A stability-focused update for the normal HiBy R1 on stock firmware 1.6.
Do not install it on the R1 MIDI or another HiBy model.
Install over any earlier v2.0.x release. Your library, resume positions,
bookmarks, and Bluetooth pairings are preserved. The About screen shows
"HiBy R1 2.0.22" after installation.
What is new
More reliable controls and volume
- Physical play/pause and volume controls now use an ordered player command
queue, so quick presses are not lost or applied against stale player state. - Holding Volume Up or Volume Down ramps continuously.
- A temporary percentage overlay confirms volume changes on screen.
- Wired and Bluetooth volume are tracked separately. Bluetooth mixer reads are
retried to prevent startup and pause/resume volume jumps. - Bluetooth pause/resume remains clear without the previously reported garbled
restart.
Smoother playback and resume
- Added 2.0x playback speed alongside 1.0, 1.1, 1.25, and 1.5x.
- Player state, track, and position are published as one locked snapshot so
progress, bookmarks, and UI state cannot disagree during rapid input. - SD-card read failures no longer look like a completed book and cannot replace
the last good resume position. - Multipart chapter labels begin with "Part N" and can wrap, making repeated or
long chapter titles easier to tell apart.
Responsive Refresh Library
- Refresh Library runs on a worker connection while playback and controls stay
responsive. - The screen shows that a refresh is running and confirms success or failure.
- Scans commit as one transaction. A failed scan rolls back instead of leaving
a partial catalog or stale database journal. - Resume writes remain authoritative on the SD card and do not block playback
while the scanner briefly owns the database writer lock. - Repeated refresh testing showed stable task and available-memory counts.
Better browsing and resilience
- Folders now follows the actual directory hierarchy below /Audiobooks.
- Catalog integrity is checked at open. A malformed database is quarantined so
the app can rebuild cleanly instead of freezing the player. - Input remains responsive after turning the screen off with the power button.
- Leaving the app during a refresh is guarded until the scan closes cleanly.
Compatibility note for v2.0.20
The public v2.0.20 tag was built from an experimental UTF-8/Cyrillic side
branch. That text-rendering experiment is not included in v2.0.22 because this
release follows the separately tested stability line. If you rely on Cyrillic
audiobook filenames or metadata, remain on v2.0.20 for now.
Install
- Download r1-audiobooks-2.0.22.upt.
- Rename it to exactly r1.upt.
- Copy r1.upt to the root of the R1 SD card.
- On the R1, open System -> Firmware Update -> Local and install it.
- Wait for the successful update and reboot.
- Delete or rename r1.upt on the SD card after installation.
- Open Audiobooks and tap Refresh Library if this is a new SD card or its
/Audiobooks contents changed.
Recommended folders
/Music
/Audiobooks/Author/Book Title/01 - Chapter.mp3
/Audiobooks/Author/Book Title/Book Title.m4b
Album = book title and Artist/Album Artist = author give the best results, but
folder and file names are used as fallbacks. Genre does not need to be tagged
as Audiobook; placement under /Audiobooks is what matters.
Verification
- Package size: 42,213,376 bytes
- MD5: d5dfdf3e0977d9339ab0ae862f4b3bf5
- SHA256: 28dd05c76b203ea29298a7a59eafc036431e1c5b18760455913e751048f7f141
- Tested on the project R1 with wired and Bluetooth playback, pause/resume,
rapid physical-button presses, held volume ramp, all playback speeds,
multipart resume, Refresh Library during playback, repeated refreshes,
exit/reopen, clean reboot, and persistent ADB.
Known limitations
- Audiobook playback stops when leaving the audiobook app for the launcher.
- There is no audiobook search screen; use Titles, Authors, Series, or Folders.
- ADB and USB DAC share the USB controller. Select Device mode for ADB or DAC
mode for USB audio. - This unofficial firmware is tested on one normal R1. Keep the official stock
1.6 firmware available for recovery.
Feedback and bug reports:
https://github.com/yetisoldier/Hiby-R1-Audiobook-Mod/issues
v2.0.20
HiBy R1 Audiobook Mod v2.0.20
A feature release for the HiBy R1 on stock firmware 1.6. It adds UTF-8 /
Cyrillic support for audiobook filenames and metadata tags, and changes the
Now Playing Prev / Next buttons from track-skip to a relative seek (rewind
30 s / forward 60 s). It installs the in-process audiobook app (the
"Audiobooks" tile) alongside the stock player. Do not install this on the R1
MIDI.
Install over v2.0.4 (or any v2.0.x). Your library, resume positions,
bookmarks, and Bluetooth pairings are preserved. Existing books keep their
resume positions; no re-scan is required for the new features (filenames and
tags are read live).
About-screen label after install: "HiBy R1 2.0.20".
What's new in 2.0.20
UTF-8 / Cyrillic support for filenames and tags
- The audiobook app now renders Cyrillic (and other non-Latin) text correctly
instead of???????. The device font (msyh.ttf, Microsoft YaHei) already
contained the Cyrillic glyphs (U+0400-U+04FF); the limitation was entirely
in the app's own C code, not the font. - A new pure-C helper (utf8.c) provides UTF-8 decode, UTF-8 boundary-safe
truncate/append, UTF-16 -> UTF-8 (BOM-aware, handles surrogate pairs), and
Windows-1251 -> UTF-8 (embedded WHATWG table). - The font glyph cache is now a bounded LRU keyed by codepoint (cap 512)
instead of a fixed 95-slot ASCII array, so any codepoint the font holds can
render. The old "non-ASCII -> '?'" clamp is gone. - Text drawing and measuring walk UTF-8 codepoints; render_text_wrap is now
pixel/codepoint-aware (wraps at spaces, never splits a multi-byte sequence
mid-codepoint). - ID3 tag decoding handles encodings 0/1/2/3: UTF-16 -> UTF-8 (1/2), UTF-8 copy
(3), and encoding-0 frames with high bytes are treated as Windows-1251 ->
UTF-8 (the common Russian-MP3 convention; a documented heuristic). - All fixed char[] buffer copies in scan/library/ui are now UTF-8-boundary
safe, and UI list truncation appends a U+2026 ellipsis (...) cleanly without
splitting a glyph. - Verified on-device with a Windows-1251 ID3v2.3 tag: author Ivan Petrov,
track Pervaya glava, album Sbornik render correctly from both the tag and a
Cyrillic folder/filename. FTS5 search finds Cyrillic text; no "?" anywhere;
no data loss. - Scope is the audiobook app only. The stock HiBy music app (hiby_player) is a
closed binary and is unchanged; its non-Latin handling is a known limitation
outside this mod's scope.
Now Playing skip buttons: relative seek
- Prev / Next on the Now Playing screen now seek relative to the current
position instead of skipping tracks: Prev rewinds 30 s, Next advances 60 s
(clamped to [0, total]). Useful for re-hearing a sentence or jumping past
an intro within a long chapter. Track navigation is still available via the
chapter list.
Diagnostics
- setup_alsa now logs a single diagnostic line naming which
snd_pcm_hw_params_set_* call failed (or that all succeeded and only the
constraint commit rejected the buffer/period combo) when
snd_pcm_hw_params errors. It fires only on failure - zero overhead on the
success path - so any future ALSA hw_params error is self-describing in the
hook log instead of a bare "failed: -22". Audio playback is healthy on a
clean install; a hw_params -22 seen during testing was stale DAC state from
rapid re-flashing, cleared by a normal reboot - not a code bug.
Everything else is unchanged from 2.0.19: the multi-file chapter-list fix, the
long-audiobook duration fix, the three stock-feature unlocks (USB DAC,
Native DSD, Bluetooth SBC XQ), SD-primary bookmarks, PNG and progressive-JPEG
covers, Bluetooth A2DP output with AVRCP remote and wired fallback,
SD-primary resume positions, boot ADB, and the storage-full scan guard.
Install
- Copy r1-audiobooks-2.0.20.upt to the root of your SD card.
- On the device, run the firmware update from the SD card and confirm.
- The device reboots into recovery, applies the package, and reboots into
2.0.20. The Audiobooks tile launches the audiobook app. - No re-scan is required. (If you want the v2.0.18 duration fix or the v2.0.19
chapter-list fix applied to books added before those releases, tap Refresh
Library once.)
Verify the checksums with MD5SUMS.txt / SHA256SUMS.txt after copying.
Feedback and issues: please report on the GitHub repository.
HiBy R1 Audiobook Mod v2.0.19
HiBy R1 Audiobook Mod v2.0.19
A focused fix for the HiBy R1 on stock firmware 1.6. It corrects the chapter
list for audiobooks that are split into one file per chapter (a common way to
buy audiobooks), where every chapter was listed as "Chapter 1" with a duration
of 0:00 and tapping a chapter did not jump to the right place. It installs the
in-process audiobook app (the "Audiobooks" tile) alongside the stock player.
Do not install this on the R1 MIDI.
Install over v2.0.4 (or any v2.0.x). Your library, resume positions,
bookmarks, and Bluetooth pairings are preserved. Existing books keep their
resume positions; the chapter list is rebuilt on the next library refresh.
About-screen label after install: "HiBy R1 2.0.19".
What's new in 2.0.19
Fixed: multi-file audiobooks showed "Chapter 1" / 0:00 for every chapter
- For an audiobook split into one audio file per chapter (for example a book
bought as a folder of per-chapter files), the Chapters list showed every
entry as "Chapter 1" with a duration of 0:00, and tapping a chapter did not
seek to the right spot in the book. - Two related scanner bugs caused this, both in the chapter-indexing code
(scan.c):- For multi-file M4A / M4B books with no embedded chapter metadata, the
scanner took a code path that wrote a single "Chapter 1" placeholder for
each file instead of one chapter per file named after the file, so every
row literally read "Chapter 1". - For multi-file MP3 books, each file's chapter row was stored with a
start position of 0:00 instead of its real position within the whole
book, so every chapter showed 0:00 and chapter-tap seek always jumped
back to the first file.
- For multi-file M4A / M4B books with no embedded chapter metadata, the
- The scanner now gives every multi-file book one chapter per file, named
after the file (its title tag, or the file name if untitled), spanning that
file's real position within the whole book. Chapter positions are now
cumulative across the files, so the list shows real timestamps and tapping
a chapter seeks to the correct file and position. Embedded chapters in a
single-file M4B are also offset to whole-book positions when the book is part
of a multi-file set. - Single-file audiobooks with no embedded chapters now get a single
"Chapter 1" entry covering the whole file, so every book has a populated
Chapters list. (Before, some single-file books had no chapters listed at
all.)
Hardening
- Added a cap on the number of placeholder chapters a single file can
synthesize (1024), and a cap on the number of chapter rows the chapter list
will render or accept taps for (2048). These guard against a malformed file
reporting a huge chapter count, which could exhaust the device's memory and
freeze it. This is defensive hardening only; it does not change normal
behavior.
How the fixed chapter list shows up
- The fix lives in the scanner. After install, open the Audiobooks app and
tap "Refresh Library" on the Home screen once. The re-scan rebuilds the
chapter index for every book. Resume positions, bookmarks, and the library
itself are not touched. - Books you have already started keep their saved position. They do not
restart from the beginning.
Note on a reported freeze
- A user also reported that, after browsing chapters for one such multi-file
book for about a minute, the screen went black and the device became
unresponsive. That symptom could not be reproduced on the test device (its
multi-file books are MP3, while the report was on an M4A book), so the
exact cause is not yet confirmed. The memory-exhaustion hardening above
addresses the most plausible cause. If you still hit a freeze, please note
the book format (MP3 / M4A / M4B) and report it on the GitHub repository so
it can be tracked down.
Everything else is unchanged from 2.0.18: the long-audiobook duration fix, the
three stock-feature unlocks (USB DAC, Native DSD, Bluetooth SBC XQ),
SD-primary bookmarks, PNG and progressive-JPEG covers, Bluetooth A2DP output
with AVRCP remote and wired fallback, SD-primary resume positions, boot ADB,
and the storage-full scan guard.
Install
- Copy r1-audiobooks-2.0.19.upt to the root of your SD card.
- On the device, run the firmware update from the SD card and confirm.
- The device reboots into recovery, applies the package, and reboots into
2.0.19. The Audiobooks tile launches the audiobook app. - Open the Audiobooks app and tap Refresh Library once to rebuild the
chapter lists.
Verify the checksums with MD5SUMS.txt / SHA256SUMS.txt after copying.
Feedback and issues: please report on the GitHub repository.
HiBy R1 Audiobook Mod v2.0.18
HiBy R1 Audiobook Mod v2.0.18
A focused fix for the HiBy R1 on stock firmware 1.6. It corrects the scanner
so long audiobooks report their real duration instead of being shown as only
a couple of hours. It installs the in-process audiobook app (the "Audiobooks"
tile) alongside the stock player. Do not install this on the R1 MIDI.
Install over v2.0.4 (or any v2.0.x). Your library, resume positions,
bookmarks, and Bluetooth pairings are preserved. Existing books keep their
resume positions; only the stored duration is corrected on the next library
refresh.
About-screen label after install: "HiBy R1 2.0.18".
What's new in 2.0.18
Fixed: long audiobooks showed a far-too-short duration
- Some long audiobooks were listed as only a couple of hours even though they
were far longer, so the seek bar, time remaining, and finish detection were
all wrong. This was a scanner bug, not a playback bug - the audio itself
played correctly end to end. - Two independent causes, both in the scanner's tag reader (tags.c):
- MP3 variable-bitrate (VBR) files: the scanner estimated duration from
the bitrate of the first audio frame only, and never read the Xing / Info
/ Fraunhofer VBRI header that stores the true frame count. For VBR books
whose first frame is a low-bitrate silence frame, the estimate was a
fraction of the real length. The scanner now parses the Xing / Info and
VBRI headers (located past ID3v2 and the first frame's side info) and
falls back to a full bitrate sweep only for true CBR files. - M4B / AAC audiobooks with a large movie (moov) atom: the old parser walked
the QuickTime atom tree using each atom's declared end, which on large
moov atoms ran past the 256 KB read buffer and read garbage, corrupting
the movie-header (mvhd) duration. The scanner now memory-maps the whole
moov atom (the same helper that fixed the scan-hang on big-moov books in
v2.0.4) and reads the mvhd duration directly, so moov-at-end and very
large moov atoms are handled correctly.
- MP3 variable-bitrate (VBR) files: the scanner estimated duration from
- Also fixed: the MP3 tag reader used a 64 KB read for ID3v2 text tags, which
was too small for a few books with very large cover-art-bearing ID3v2 tags
(the first MPEG frame sat past 64 KB), so those books also got a wrong
first-frame bitrate estimate. The VBR header parse now seeks to the first
real MPEG frame regardless of ID3v2 size. - Verified on-device against all 298 files on the test library. 44 books were
corrected; no book regressed. Examples of the correction:
Trilobyte: 5.1 h -> 25.5 h
Dad Is Fat: 2.7 h -> 5.4 h
Johnny: 8.9 h -> 11.0 h
Saint Odd: 1.9 h -> 9.3 h
(Books whose duration was already correct are unchanged.)
How the corrected durations show up
- The fix lives in the scanner. After install, open the Audiobooks app and
tap "Refresh Library" on the Home screen once. The re-scan re-reads every
book's duration and stores the corrected value. Resume positions, bookmarks,
and the library itself are not touched; only the duration field is refreshed. - Books you have already started keep their saved position - they do not
restart from the beginning - and the seek bar / time-remaining now reflect
the true length.
Everything else is unchanged from 2.0.17: the three stock-feature unlocks
(USB DAC, Native DSD, Bluetooth SBC XQ), SD-primary bookmarks, PNG and
progressive-JPEG covers, Bluetooth A2DP output with AVRCP remote and wired
fallback, SD-primary resume positions, boot ADB, and the storage-full scan
guard.
Install
- Copy r1-audiobooks-2.0.18.upt to the root of your SD card.
- On the device, run the firmware update from the SD card and confirm.
- The device reboots into recovery, applies the package, and reboots into
2.0.18. The Audiobooks tile launches the audiobook app. - Open the Audiobooks app and tap Refresh Library once to correct the
stored durations.
Verify the checksums with MD5SUMS.txt / SHA256SUMS.txt after copying.
Feedback and issues: please report on the GitHub repository.