[EXPERIMENTAL] CoreELEC 22 · samurihl DV build (20260721094610)
Pre-release⚠️ EXPERIMENTAL · UNSUPPORTED · USE AT YOUR OWN RISK
This is an unofficial, experimental CoreELEC 22 build. It is NOT an official
CoreELEC release and it is NOT a supported CE22 port. I am not a CoreELEC 22
port maintainer, and I will not be providing support, bug fixes, updates, or
ongoing maintenance for this build.
The only purpose of this build is to give Amlogic AM9 Pro-class users a more
complete Dolby Vision experience than stock CoreELEC 22, by carrying a set of
custom Kodi features I built for my own device. That is the entire scope.
READ THIS BEFORE YOU FLASH ANYTHING
- USE ENTIRELY AT YOUR OWN RISK. There is no warranty of any kind, express
or implied. It may fail to boot, misbehave, break Dolby Vision, or do nothing
useful on your hardware. - BACK UP YOUR CURRENT INSTALLATION FIRST. Take a full CoreELEC backup
(Settings → CoreELEC → Backup) and/or image your existing boot media before
you install anything from here. Assume you may have to restore it. - Prefer a SEPARATE SD card or USB stick you can boot from, instead of
overwriting a working internal (eMMC) install. - Do NOT report problems with this build to the CoreELEC team or forums.
This is not their build; it is not their responsibility. Do not ask them to
support it. - I am also not offering support. If it breaks, you keep both pieces.
By downloading or using any file in this release you accept all of the above.
Install
- Clean install (recommended): flash the
*.img.gzto an SD card or USB with
balenaEtcher (or the Amlogic USB Burning Tool for eMMC), then boot from it. - In-place update: copy the
*.tarto the/storage/.updatefolder on an
existing CoreELEC install and reboot. (Back up first — see above.) - Verify your download against the SHA256 sums below before flashing.
What's changed in this update
This is an incremental update to
v22.0-samurihl-20260720175631
(see that release and its predecessors for the standing feature set: VS10 on
non-DV displays, VSVDB override, tone-mapping target controls, disc menu
playback, reference-player capability registers). The headline this time: a
full hostile code review of the entire disc-menu stack — every confirmed
finding fixed, then attacked again by adversarial review before shipping —
plus a genuine libbluray bug found and fixed in how Blu-ray menus test
player capabilities, and an answer for displays that lose HDMI sync on
every menu↔title jump.
⚠️ Still experimental and completely unsupported — see the disclaimer above.
Back up your current install before flashing.Dolby Vision still requires
dovi.ko(the CE22 5.15 build) installed on your
device — it is not bundled; install it yourself as on stock CoreELEC 22.
📺 Displays stop re-locking on menu↔title jumps (session mode-hold)
On discs whose menus and titles run at different frame rates, every jump
between them used to re-clock the HDMI link — some displays (Sony projectors
were the report that pinned this down) drop the picture for seconds each
time, making menu navigation miserable. The player now holds the incumbent
display mode while you're in the disc's menu domain and only switches when
a feature title actually starts. Menus render fine at either rate; your
display re-locks once per movie, not once per button press.
Default ON; opt out with <video><discsessionmodehold>false</discsessionmodehold></video>
in advancedsettings.xml if you prefer per-segment native switching.
🔍 A real libbluray bug: menus never actually checked your capabilities
Credit where due: Hendrik Leppkes reviewed our capability-register notes
and spotted that libbluray's HDMV menu VM implements the BC (bit compare)
instruction backwards — it never tests whether the capability bits a disc
asks about are set, only that no other bits are. Every HDMV disc that
branches on player/display capabilities (HDR format support, etc.) was
taking the wrong branch unless the player happened to mis-report a single
exclusive bit — which is exactly the workaround we (and likely others)
had been forced into.
This build patches the VM instruction to spec semantics and replaces the
workaround with truthful capability sets: the player now advertises
every format the chain genuinely supports (HDR10, Dolby Vision, HLG,
HDR10+ — player and display registers separately, plus a session preference
register). The Spears & Munsil UHD Benchmark now offers all the demo
menus your setup can actually play, not just one — and BD-J discs, which
read these registers directly with real bit tests, finally see the truth.
🧭 Menu stack: the review fixes
A multi-agent adversarial review of the whole ~90-commit menu stack
produced 13 confirmed defects; all are fixed here, and the fixes were
themselves adversarially re-reviewed before merging. Highlights, roughly
user-visible first:
- Menu click sounds play. Discs authoring button sounds (
sound.bdmv)
now have them rendered through the audio engine. - Choosing audio/subtitle tracks during disc playback goes through the
disc's own VM (the spec's stream-selection registers), so the disc stays
in agreement with the player and menus can't undo your choice; where a
disc prohibits changing tracks, you get an on-screen notice instead of a
silent no-op — same for prohibited seeks and chapter skips. - Menu graphics fidelity: palette-only animation updates (fades/pulses
authored as color cycling) render correctly, hide commands are honored,
and the whole overlay path is now thread-safe (a real crash window with
BD-J discs is closed). - Movie endings can't be eaten. A discard rule meant for menu jumps
could classify the natural end of a film as a stale queue and cut the
last seconds; the rule now only fires around an actual user menu call. - Decoder recovery that actually recovers: stall detection no longer
trips on slow-but-progressing streams, the reopen path replays enough
data to resume seamlessly, escalates instead of looping forever, and a
session-generation guard stops recycled frames from crossing decoder
restarts. - Corrupt-data cleanup got surgical: the backstop now drops exactly the
bad packet instead of flushing healthy demuxer state with it. - Video clock hardening: the vsync clock survives transient display
driver hiccups at startup instead of silently degrading A/V sync for the
session. - A/V sync hardening: the post-discontinuity settle window re-arms when
the audio sink is rebuilt, sustained PCM drift is corrected in one step
instead of a slow walk, and sync corrections no longer over-steer ahead
of the vsync quantum.
Regression-validated against the full disc matrix (Spears & Munsil UHD,
TNG, Halo, Superman) with a Panasonic UB820 as the reference player.
Known rough edges (yes, we know)
- A ~1/3-second stream-start trim remains at title start (matches stock
player behavior; on the list, not a regression). - VC-1 discs still don't play (endless busy spinner) — known, open.
- 3D Blu-rays (MVC) don't decode — known, open.
- The BC instruction fix affects every HDMV disc that branches on
registers — our matrix is clean, but a disc relying on the old broken
behavior would misbehave; debug logs welcome. - Discs beyond our test set are genuinely untested. Menus are the most
disc-author-creative corner of the Blu-ray spec; something out there will
break this.
How to help
Throw your disc library at it: HDMV and BD-J menus, menu navigation,
menu→title jumps, title starts, chapter skips, long titles played to the
end — and if your display used to blank on menu jumps, tell us if it still
does. When something misbehaves, grab a debug log of the failure
(settings → logging, or kodi-send --action=ToggleDebug), note the disc
title/edition, and report it. "Menu X worked perfectly" reports are almost
as valuable as bug reports.
🔬 Reminder: display testing still wanted
The experimental target-luminance controls from earlier releases still need
eyes on real panels: sweep "VS10 target minimum luminance (reference black)"
on a 4000/10000-nit black-clip pattern via VS10 HDR10 output, compare a
profile 7 FEL title against a DV display, and watch TrueHD/Atmos A/V sync
across a full movie. Please keep the reports coming.
Install
- Clean install: flash the Generic
*.img.gz(SD/USB via balenaEtcher, or the
Amlogic USB Burning Tool for eMMC). - Update in place: drop the
*.tarin/storage/.updateand reboot. - Verify your download against the SHA256 sums below before flashing.
- On other Amlogic-no boards (Odroid / Khadas / Radxa): use the
*.tarupdate, or
your board's own image.
Source
- CoreELEC (distro):
SamuriHL/CoreELECtagv22.0-samurihl-20260721094610 - Kodi:
SamuriHL/coreelec-xbmctagv22.0-samurihl-20260721094610
Checksums (SHA256)
3e42bee3933450b24b4ac2549f771839fe27a59562b9db44897631ae8cc13ea0 CoreELEC-Amlogic-no.aarch64-22.0-Piers-samurihl-EXPERIMENTAL_20260721094610.tar
5b3a799310eacd8b10aedcfb8bc886fdb37e63250fa5bc283e802112500ed414 CoreELEC-Amlogic-no.aarch64-22.0-Piers-samurihl-EXPERIMENTAL_20260721094610-Generic.img.gz