⚠️ 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 update follows
v22.0-samurihl-20260926193745.
It is mostly about audio sync and Dolby Vision FEL. Passthrough audio now lands
within about a millisecond of the picture when playback starts, after a seek, after a
pause and when you switch audio tracks. FEL discs no longer freeze with a 5-second
stall, and a stop followed quickly by a new play no longer leaves you with no sound.
Subtitles also get a round of fixes from upstream CoreELEC 22 RC1.
⚠️ 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. You do
not need to modify it. This build corrects it automatically at boot.
✨ Improved: passthrough audio lines up exactly with the picture
With audio passthrough to an AV receiver (TrueHD/Atmos, DTS-HD, E-AC3, AC3), the
audio used to settle anywhere within about a frame of the picture when playback
started, and could wander by tens of milliseconds after a resume or a track switch
before a correction pulled it back.
It now lands on the picture exactly, and stays there:
- Start, seek and resume: within about 1 ms in testing, with no later correction.
- Switching audio tracks (for example TrueHD to DTS-HD) lands just as exactly.
- Pause: the build remembers where the picture's refresh timing was, so sound comes
back sooner after you unpause (about 0.3 s instead of about 0.5 s) and still
lands exactly. - TrueHD is judged in real milliseconds by the player, so a TrueHD track is no
longer allowed to drift about twice as far as other formats before it is corrected.
In testing this covered starts, restarts, 10 pauses of different lengths, seeks,
track switches between all four formats, and a 5-minute continuous play. None of them
needed a correction once the sound was on.
PCM (uncompressed or decoded) audio still uses Kodi's usual looser tolerance. That is
unchanged in this release.
🛠️ Fixed: Dolby Vision FEL froze for 5 seconds, sometimes repeatedly
On full enhancement layer (FEL) content, the picture could stop with the buffer full,
then Kodi reset the decoder after 5 seconds, sometimes over and over. It showed up
most on the FEL test clip, and on some resumes into M3GAN 2.0.
The enhancement-layer half of the video decoder was never told that new data had
arrived, so once it caught up it waited forever. It is now told every time, as on
chips with a hardware parser. The test clip went from 9 stalls in 2 minutes to none,
and resumes that stalled now open cleanly.
A second fix keeps a small buffer margin for dual-layer Dolby Vision, so the
enhancement layer is ready when its picture is shown. On the stress-test clip, pictures
shown without their enhancement layer went from about 550 in 90 seconds to none.
🛠️ Fixed: no sound (and a stall) when you started playing soon after a stop
If you stopped a film and started it again (or resumed it) within a few seconds, the
audio could stay silent and the picture stall and reset in a loop. After a stop, the
TV mode change pauses the audio engine for the "delay refresh change" time you set in
Kodi's display settings. A play started during that time failed to open its audio and
never tried again.
The player now waits for the audio engine to come back and then opens the audio
normally. This bug was already in the previous release, and is in upstream Kodi too.
🛠️ Fixed: seamless joins on Blu-rays played back directly
Playing a disc's playlist directly (not from its menu), the joins between segments of
a film could leave the audio 50-75 ms off for 10-15 seconds until a correction pulled
it back. Those joins now glide through without the offset.
🛠️ Subtitles (from upstream CoreELEC 22 RC1)
- Image subtitles (PGS, VobSub, DVB) are now drawn under Kodi's on-screen
controls instead of on top of them. - Subtitles that change on the same frame are no longer missed. Kodi sometimes
drew the new subtitle but did not put it on screen until something else changed. - Subtitle timing: a subtitle that starts a millisecond after its frame (timestamps
get rounded in the file) now shows on that frame, instead of a frame late or not
at all. - Doubled PGS subtitles in some MKV files (a stray copy of each subtitle's end
marker redrew the previous line) no longer appear. - PGS drawing is faster. The colours are looked up once per subtitle instead of
per pixel, and only the visible part of the image is uploaded.
🛠️ Also fixed
- Dolby Vision: a possible crash in the Dolby Vision driver while the TV mode was
being changed (upstream CoreELEC 22 RC1 fix, adapted to this build). - Blu-ray Java menus: the menu-program handshake fix from the last release
(Turbo 3D) was redesigned. Menu programs now see exactly the same sequence of events
a standalone player shows them. It was reviewed against every combination of
start/stop/pause. - Blu-ray: many smaller disc and menu fixes from a full review of the disc
playback code (decoder start and flush, seek stalls at segment joins, graphics mode
switches mid-disc, HDR menu graphics). - DTS: a DTS track whose core changes size mid-stream now reopens the audio
output correctly. - Video library: automatic grouping of video versions is now on by default. Movies
with conflicting IDs are no longer merged. Cleaning a single source now cleans only
that source, and asks only once about a source that is unavailable. - Upstream Kodi fixes: forced subtitles, SMB over IPv6, network name
lookups, music discography, one action per key press, library import artwork, and more.
⚠️ Testing wanted
- Audio sync by ear, especially after pausing, seeking and switching audio tracks
with an AV receiver. Tell us the title and audio format if anything sounds early,
late or cuts out. - Image subtitles: colours, edges, and whether they sit correctly under the
on-screen controls. PGS on Dolby Vision and HDR titles especially. - Dolby Vision FEL discs, from the menu and played directly.
- SDR output: the tone-mapped route for subtitles and menus on SDR TVs still has
not been checked on screen. Reports welcome.
Credits
Thanks to matthane (PGS palette lookup and crop, subtitle mid-frame matching,
GUI render skip, subtitle depth, the ffmpeg PGS end-segment patch and the Dolby Vision
driver fix), 78andyp (video versions, library cleaning), and to everyone whose
upstream Kodi and CoreELEC work is included: Garrett Brown, CrystalP, ksooo, Clément
Péron, Christian Hewitt, Rudi Heitbaum, the-black-eagle, sopparus, scott967, Martin
Ellis, Malard, Kevin Goffe, Kel Modderman and Craig Carnell.
Under the hood
- Passthrough start-sync (ActiveAE). Landings use an exact 1 ms band against a
settled measurement: two agreeing windows, and the video clock's vsync phase must be
known and stable. The sink delay counts each queued passthrough packet's real
duration, including pause bursts, which removes the refill bias after a stream switch.
Muted DTS-HD pause bursts carry the fractional millisecond. The TrueHD 0.45 error
scale stays inside the engine;GetSyncInforeports real ms to the player. - Vsync phase lifecycle (DVDClock/RenderManager). The phase has a generation
counter, and a stale publish is refused. A seek or a lost display leaves it pending,
and it is seeded once two block means agree. There is no window while paused. A
plain resume carries the phase byfmod(pause, frameTime)(predicted within 0.5 ms). - media_modules bumped to upstream
c15aebb1, which is our former patch 0001, so
0001 is dropped. Patch 0002 makes the dual-layer slave programHEVC_STREAM_WR_PTR/
VLD_MEM_VIFIFO_WPon SoCs without a hardware parser (S6/S928X). - AMLCodec: a 10% dequeue floor for dual-stream DV, and a starve probe on its own
clock that engages only once input has stopped. - VideoPlayerAudio:
Createwaits for a suspended engine (bounded), a failed
Createdrops the frame, and there is no per-frame rebuild while suspended. - common_drivers 0013 realigns the EL queue at the moment of pairing. 0018 =
upstream4dbe1c27(vout_deviceNULL check before the sink min/max read),
re-anchored. This build keepsFLAG_USE_SINK_MIN_MAXon, and the pin stays at
f9af0b41. - libbluray patch 14 was redesigned as a shown-state mask decided on the command
thread. Patch 15 (PG in/out cut) was tried and dropped: it removed subtitles still on
screen. - ffmpeg 009: pgssubdec ignores an end segment with no presentation segment
before it. - Patch-stack pre-flight now asserts media_modules and every libbluray patch
against pristine source.
Source
- CoreELEC (distro):
SamuriHL/CoreELECtagv22.0-samurihl-20260928164552 - Kodi:
SamuriHL/coreelec-xbmctagv22.0-samurihl-20260928164552
Checksums (SHA256)
85593b38d5a076c9b3fc5962a02f91f25b9a737e82d9a3a18465284a6b813078 CoreELEC-Amlogic-no.aarch64-22.0-Piers-samurihl-EXPERIMENTAL_20260928164552.tar
65fcadbe4b4523744d90058c0ffa6b80d989bc0ca7b2438c99cbd09cf6d2b8df CoreELEC-Amlogic-no.aarch64-22.0-Piers-samurihl-EXPERIMENTAL_20260928164552-Generic.img.gz