Skip to content

[EXPERIMENTAL] CoreELEC 22 · samurihl DV build (20260721094610)

Pre-release
Pre-release

Choose a tag to compare

@SamuriHL SamuriHL released this 21 Jul 13:49
· 497 commits to samurihl-ce22 since this 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.gz to an SD card or USB with
    balenaEtcher (or the Amlogic USB Burning Tool for eMMC), then boot from it.
  • In-place update: copy the *.tar to the /storage/.update folder 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 *.tar in /storage/.update and reboot.
  • Verify your download against the SHA256 sums below before flashing.
  • On other Amlogic-no boards (Odroid / Khadas / Radxa): use the *.tar update, or
    your board's own image.

Source

  • CoreELEC (distro): SamuriHL/CoreELEC tag v22.0-samurihl-20260721094610
  • Kodi: SamuriHL/coreelec-xbmc tag v22.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