Releases: djnice/CoreELEC-samurihl
Release list
Dolby Vision P7 FEL and 3D MVC on S928X (S5) - SamuriHL CE22 based experimental build 2026-10-01
Experimental build of SamuriHL's CoreELEC 22
for Amlogic S928X (S5) with Dolby Vision Profile 7 FEL composed on the GPU - now also with
3D Blu-ray (MVC) decoded in software and output as full resolution frame packing.
This is an unofficial test build: SamuriHL's
samurihl-ce22branch (f91de32, Kodi
SamuriHL/coreelec-xbmc aa9f70523e) with the FEL composition from
djnice/CoreELECdv-fel-s5on top. It is not
made or supported by SamuriHL. Use it at your own risk and keep a backup of your system.A build of the same work on plain CoreELEC 22 is available at
djnice/CoreELEC releases. This SamuriHL based one adds
SamuriHL's highly configurable player-led (LLDV) Dolby Vision options, the L1 readout of the demo mode
and the full black level range - recommended for projectors and Samsung TVs.
New: 3D Blu-ray (MVC) in software, full resolution frame packing
The S5's hardware MVC decoder corrupts the second (dependent) view of some 3D titles (blocky right eye
for a fraction of a second, the left eye clean). 3D MVC is now decoded on the CPU with
edge264-mvc (multithreaded, about 1.5-3 cores for a 3D
Blu-ray) and both views go to the video layer through a new kernel module (mvcout):
- Frame packing at full resolution (1920x2205: left view, 45 lines of active space, right view; HDMI
1080p24 3D), for 3D projectors and 3D TVs: both eyes keep their full 1920x1080. - 2D (mono) from the left or right view, following Kodi's stereoscopic 3D settings as usual. Half
resolution side-by-side / top-bottom output is there too but not tested on a display yet. - Works with 3D MKV/MK3D files and 3D Blu-ray folders/ISOs (main title).
- On S5 3D MVC always uses the software decoder. On the other Amlogic SoCs it is a setting:
Settings → CoreELEC → Decode 3D MVC in software (expert level, off by default).
Frame packing needs a display that offers it (its EDID): the 3D modes show up in the resolution
whitelist as e.g. 1920x1080 @ 23.98 - Full Screen 3D FP/TB. If you use a custom whitelist, add
that mode, otherwise Kodi cannot switch to frame packing. Kodi's stereoscopic playback mode (Settings
→ Player → Videos → Stereoscopic 3D) decides between 3D and 2D, as with any 3D source.
Fixes
- Hardware EL after a seek on FEL titles whose EL has another picture order than the BL (e.g. the
common P7_FEL_STDL1 test clip, its dual-track variant DTDL2): after a seek the EL never came back
and the rest of the title played without it. The layers are now paired by each picture's place in the
display order, taken from the stream (POC and random access points) instead of counting decoded
pictures, which differs between the layers after a seek. A few frames right after a seek are still
shown without the EL on these files, until the EL's next keyframe: that follows from how they are coded. - GUI stretched after 3D frame packed playback (only its top part visible): leaving frame packing
kept the 3D timing because the display mode name does not change. A mode switch now also happens when
frame packing is entered or left, and frame packing is only used on a mode that offers it (no more
"unsupported signal" when Kodi falls back to a 2D mode). - Kodi no longer re-evaluates the display mode on every frame for the first seconds of a 3D title played
in 2D on a 3D capable display. - Hardware MVC decoder (other SoCs): picture buffers are released in order, so the decoder no longer
decodes into the picture on screen (tearing, older pictures mixing in).
Also included
- Dune front display: the clock on the TM1628 front panel works (openvfd, display type
0x0B), tested on
the Dune HD Pro 8K Plus and the Dune HD Pro One 8K Plus. - R_volution PlayerPro 8K device tree (
device_trees/s5_s928x_rvolution_playerpro_8k.dtb) with its
front display config. Not tested on the hardware yet - feedback welcome. - Dune HD Pro One 8K Plus: booting from the USB 3.0 ports. The VIA hub behind them never woke up once
suspended, so a stick or SSD there was not found. USB autosuspend is now off on the Dune and R_volution
device trees. - Booting from a USB 3.0 port on vendor bootloaders that only start the first USB controller, and the Dune
HD Pro 8K Plus device tree (from the previous build; see there).
Features (unchanged)
- P7 FEL composition on the GPU for S5 with the enhancement layer decoded in hardware (see What
the FEL composition does below). - Split screen demo mode with an L1 readout. With Dolby Vision FEL demo mode on, the left half
shows the full FEL composition and the right half the base layer as regular CoreELEC shows P7
converted to P8.1. The top of each half shows the brightness measured over the whole picture as a level 1
(maximum and average of max(R', G', B') in PQ, in nits) for both versions: leftFEL,RPU L1and
AREA, rightBLandFEL-BL. Letterbox bars are left out (RPU level 5, or bars found in the base
layer). - Whole black level range for the VSVDB injection (PQ 0 to PQ 620). Player-led Dolby Vision only.
What the FEL composition does
The Dolby Vision hardware in the S5 has no enhancement-layer input, so CoreELEC converts P7 to P8.1 and
drops the EL: FEL titles lose their full-enhancement detail. This build adds the FEL reconstruction back,
while the output still goes through the hardware Dolby Vision pipeline:
- The hardware HEVC decoder decodes the base layer and the enhancement layer (10-bit AFBC).
- A vfm node (
dvfelkernel module, between the decoder and the display) decompresses each base layer
frame and its EL picture with the VICP block into linear 10-bit buffers shared with the GPU (dma-buf). - Kodi parses the original P7 RPU (libdovi).
- The Mali-G57 composes every frame in GLES 3.2 in fp32: Lanczos-3 EL upsampling, NLQ (linear with dead
zone) and base layer prediction (polynomial / MMR) from the RPU. - The result is quantized to 10 bits with a static blue noise dither to keep gradients free of banding.
- VICP recompresses the composed frame to AFBC for the display; the hardware DV core gets it with a
no-op P8.1 RPU, so the dynamic metadata and SamuriHL's RPU processing (L5, CMv4.0, ...) apply as usual.
The composition matches a CPU reference implementation within ±1 LSB.
Requirements
- S928X (S5) device using the Amlogic-no image. FEL: TV or projector with Dolby Vision, DV enabled.
3D: a 3D TV or projector (frame packing), or any display for 2D playback of 3D titles. - The original
dovi.kois required (the Dolby Vision kernel module from your box's firmware, set up as
for any Dolby Vision playback in CoreELEC). It does not need to be patched: the Dolby Vision core gets a
regular profile 8.1 stream. - Only P7 FEL streams use the FEL path. MEL, P5, P8, HDR10 and SDR, and all other SoCs, play as in
SamuriHL's build.
Install
- Update: copy the
.tarto the/storage/.updatefolder (theUpdateSamba share) and reboot. - New install: write the
-Generic.img.gzto an SD card / USB stick (e.g. with balenaEtcher or Rufus)
and set up the device tree as usual for your box.
Note: SamuriHL's update checker add-on is part of the image. Updating to an official SamuriHL build
from it removes this work again.
Settings
In Settings → CoreELEC (expert level):
- Dolby Vision FEL composition (S5, on by default): off gives the regular behaviour (P7 converted to
P8.1 without the enhancement layer). Takes effect when playback starts. - Dither Dolby Vision FEL output (S5, on by default): blue noise dither of the composed picture to 10
bits. Takes effect immediately. - Dolby Vision FEL demo mode (S5, off by default): split screen with the L1 readout, see above.
- Decode 3D MVC in software (not on S5, where it is always on; off by default).
Limitations / known issues
- FEL: 4K 24p only for now (about 35 ms of GPU time per 4K frame, budget 41.7 ms).
- The S5 display path takes at most 10 bits, so the FEL output is 10 bits plus dither, not a true 12-bit
signal. - 3D MVC: 1080p titles only (3D Blu-ray). Tested on 3D MKV/MK3D samples, a 3D Blu-ray ISO and one 3D
projector; chapter skipping on full 3D Blu-ray discs is not tested yet. - On one test clip (P7_FEL_STDL2) a single frame flashes blue or red now and then; it happens with the
software EL decoder too and is being investigated.
Debug switches (on the box)
/storage/dvfel_sw_el: if the file exists, the FEL EL is decoded in software (comparison)./storage/dvfel_dither: overrides the setting,0off,1on,2left half only (comparison)./storage/dvfel_pattern:1shows a 12-bit grey ramp test pattern instead of the video.- Statistics:
cat /sys/kernel/debug/dvfel/stats(needs debugfs mounted).
Source: https://github.com/djnice/CoreELEC-samurihl/tree/dv-fel-s5
Dolby Vision P7 FEL on S928X (S5) - SamuriHL CE22 based experimental build 2026-09-30 (hardware EL)
Experimental build of SamuriHL's CoreELEC 22
for Amlogic S928X (S5) with Dolby Vision Profile 7 FEL composed on the GPU instead of dropping the
enhancement layer - now with the enhancement layer decoded in hardware.
This is an unofficial test build: SamuriHL's
samurihl-ce22branch (f91de32, Kodi
SamuriHL/coreelec-xbmc aa9f70523e) with the FEL composition from
djnice/CoreELECdv-fel-s5on top. It is not
made or supported by SamuriHL. Use it at your own risk and keep a backup of your system.A build of the same FEL work on plain CoreELEC 22 is available at
djnice/CoreELEC releases. This SamuriHL based one adds
SamuriHL's highly configurable player-led (LLDV) Dolby Vision options, the L1 readout of the demo mode
and the full black level range - recommended for projectors and Samsung TVs.
New: hardware decoded enhancement layer
Until now Kodi decoded the EL in software, and on heavy UHD remuxes (70-90 Mbit/s, e.g. Airplane!,
Jurassic Park) the CPU could not keep up in busy scenes: those frames were shown without the EL, visible
as flicker between the FEL and the base layer picture. Now the S5's HEVC decoder decodes both layers
(Dolby Vision dual layer decoding, the EL in a second decoder instance) and the dvfel kernel module hands
the decoded EL picture of every frame to the GPU together with the base layer.
- No more frames without the EL on heavy remuxes (Airplane!: 0 in minutes of playback, was dozens per
minute), and no CPU for the EL: Kodi uses about 5-10 % of one core during FEL playback. - BL, EL and RPU stay frame-exactly paired, also when the EL is coded in another picture order than the
BL (paired by display order; the RPU comes with the EL picture, as with the software decoder). - Used automatically for P7 FEL. MEL, P5, P8, HDR10 and SDR play as before. The software EL decoder is
still there (see Debug switches); it now uses every CPU core instead of three.
Making the S5 dual layer decoder work for this needed fixes in the HEVC decoder driver (media_modules):
the layer switch followed a stale flag after a repeated decoder run (error pictures and 200 ms decoder
timeouts on the EL, the EL trailing the BL by up to a second), the EL pictures came out a whole decode cycle
late, streams without reordering showed their first picture twice, and the pairing label of the pictures
was overwritten.
Fixes
- Kernel panic when a Dolby Vision title starts (rare, timing dependent): switching the display mode
for playback (e.g. 1080p60 -> 2160p24) resets the HDMI transmitter, and the Dolby Vision vsync handler
could write an HDMI packet into it right then (SError). HDMI packets are no longer written from the vsync
handler while the output is being reconfigured. Tested with repeated playback starts. - Dual-track MP4 whose EL has a decode delay the BL has not (e.g. BL without B-frames, EL with them):
the first EL packet collided with the second one on the timeline and was dropped, so the EL could not be
decoded until its next keyframe (about the first second without EL, after every seek too). The EL is now
put onto the BL's decode timeline. - FEL titles whose EL is coded 1920x1088 (cropped to 1080, common): with the hardware EL these were
shown without the EL; the EL picture is now read cropped.
Features (unchanged)
- P7 FEL composition on the GPU for S5 (see What the FEL composition does below).
- Split screen demo mode with an L1 readout. With Dolby Vision FEL demo mode on, the left half
shows the full FEL composition and the right half the base layer as regular CoreELEC shows P7
converted to P8.1. The top of each half shows the brightness measured on the picture as a level 1
(maximum and average of max(R', G', B') in PQ, in nits): leftFEL,RPU L1andAREA, rightBLand
FEL-BL. Letterbox bars are left out (RPU level 5, or bars found in the base layer). - Whole black level range for the VSVDB injection. Black level (VSVDB) (under Display peak
luminance → Force peak onto display (VSVDB)) lists every step the VSVDB v2 can carry, PQ 0 to PQ 620
(0 to about 1.05 cd/m²). Player-led Dolby Vision only.
What the FEL composition does
The Dolby Vision hardware in the S5 has no enhancement-layer input, so CoreELEC converts P7 to P8.1 and
drops the EL: FEL titles lose their full-enhancement detail. This build adds the FEL reconstruction back,
while the output still goes through the hardware Dolby Vision pipeline:
- The hardware HEVC decoder decodes the base layer and the enhancement layer (10-bit AFBC).
- A vfm node (
dvfelkernel module, between the decoder and the display) decompresses each base layer
frame and its EL picture with the VICP block into linear 10-bit buffers shared with the GPU (dma-buf). - Kodi parses the original P7 RPU (libdovi).
- The Mali-G57 composes every frame in GLES 3.2 in fp32: Lanczos-3 EL upsampling, NLQ (linear with dead
zone) and base layer prediction (polynomial / MMR) from the RPU. - The result is quantized to 10 bits with a static blue noise dither to keep gradients free of banding.
- VICP recompresses the composed frame to AFBC for the display; the hardware DV core gets it with a
no-op P8.1 RPU, so the dynamic metadata and SamuriHL's RPU processing (L5, CMv4.0, ...) apply as usual.
The composition matches a CPU reference implementation within ±1 LSB.
Requirements
- S928X (S5) device using the Amlogic-no image, TV or projector with Dolby Vision, DV enabled.
- No patched
dovi.kois needed: the Dolby Vision core gets a regular profile 8.1 stream. - Only P7 FEL streams use the new path. MEL, P5, P8, HDR10 and SDR, and all other SoCs, play as in
SamuriHL's build.
Install
- Update: copy the
.tarto the/storage/.updatefolder (theUpdateSamba share) and reboot. - New install: write the
-Generic.img.gzto an SD card / USB stick (e.g. with balenaEtcher or Rufus)
and set up the device tree as usual for your box.
Note: SamuriHL's update checker add-on is part of the image. Updating to an official SamuriHL build
from it removes the FEL composition again.
Settings
Shown on S5 (S928X) only, in Settings → CoreELEC (expert level):
- Dolby Vision FEL composition (on by default): off gives the regular behaviour (P7 converted to P8.1
without the enhancement layer). Takes effect when playback starts. - Dither Dolby Vision FEL output (on by default): blue noise dither of the composed picture to 10
bits. Takes effect immediately. - Dolby Vision FEL demo mode (off by default): split screen with the L1 readout, see above.
Limitations / known issues
- 4K 24p only for now: about 35 ms of GPU time per 4K frame (budget 41.7 ms). 4K 30/50/60 FEL does
not fit. - The S5 display path takes at most 10 bits, so the output is 10 bits plus dither, not a true 12-bit
signal. - On one test clip (P7_FEL_STDL2, a few minutes long) a single frame flashes blue or red now and then;
it happens with the software EL decoder too and is being investigated. - Blu-ray FEL playback from a disc folder was tested on one UHD title (menus, chapter skips); other discs
are not tested yet.
Debug switches (on the box)
/storage/dvfel_sw_el: if the file exists, the EL is decoded in software as before (comparison)./storage/dvfel_dither: overrides the setting,0off,1on,2left half only (comparison)./storage/dvfel_pattern:1shows a 12-bit grey ramp test pattern instead of the video.- Statistics:
cat /sys/kernel/debug/dvfel/stats(needs debugfs mounted).
Also included
-
Booting from a USB 3.0 port: some vendor bootloaders (e.g. Dune HD Pro 8K Plus) only start the first
USB controller, so CoreELEC on the USB 3.0 port was not found and Android started. The install script
(aml_autoscript) now makes the bootloader try the other controllers too. It is written to the
bootloader environment on the first install (toothpick / recovery button boot). On a box that already
runs CoreELEC, either do that boot once more, or run over SSH:fw_setenv bootfromusb 'usb start; if usb storage; then run cfgloadusb; fi; for i in 1 2; do usb stop; usb start ${i}; if usb storage; then run cfgloadusb; fi; done' -
Dune HD Pro 8K Plus device tree (
device_trees/s5_s928x_dune_hd_pro_8k_plus.dtb): the Ugoos SK1
tree plus the power of the internal HDD bay. Copy it asdtb.imgto the root of the CoreELEC FAT
partition.
Source: https://github.com/djnice/CoreELEC-samurihl/tree/dv-fel-s5
Dolby Vision P7 FEL on S928X (S5) - SamuriHL CE22 based experimental build 2026-09-29 #2
Experimental build of SamuriHL's CoreELEC 22
for Amlogic S928X (S5) with Dolby Vision Profile 7 FEL composed on the GPU instead of dropping the
enhancement layer.
This is an unofficial test build: SamuriHL's
samurihl-ce22branch (f91de32, Kodi
SamuriHL/coreelec-xbmc aa9f70523e) with the FEL composition from
djnice/CoreELECdv-fel-s5on top. It is not
made or supported by SamuriHL. Use it at your own risk and keep a backup of your system.A build of the same FEL work on plain CoreELEC 22 (nightly) is available at
djnice/CoreELEC releases. This SamuriHL based one adds
SamuriHL's highly configurable player-led (LLDV) Dolby Vision options, the L1 readout of the demo mode
and the full black level range below - recommended for projectors and Samsung TVs.
Features
-
P7 FEL composition on the GPU for S5 (see What the FEL composition does below).
-
Split screen demo mode with an L1 readout. With Dolby Vision FEL demo mode on, the left half
shows the full FEL composition and the right half the base layer as regular CoreELEC shows P7
converted to P8.1. The top of each half shows the brightness measured on the picture, as a level 1:
maximum and average of max(R', G', B') in PQ, in nits, from every 8th pixel, updated four times a second.- left:
FEL- the composed picture (RPU mapping + enhancement layer),RPU L1- the level 1 the RPU
carries, andAREA- the measured area, - right:
BL- the base layer, andFEL-BL- how much the enhancement layer adds.
Both pictures are measured on the whole active area (not on the visible half), so they are comparable.
Letterbox bars are left out: the active area comes from the RPU's level 5 when it has one, otherwise from
the black bars found at the top and bottom of the base layer (taken after two seconds, so dark scenes do
not crop the picture); theAREAline showsL5,AUTOorFULL. These are the signal levels
(mastering nits), before the display mapping. Costs about 1.6 ms of GPU time per 4K frame, only in demo
mode. - left:
-
Whole black level range for the VSVDB injection. Black level (VSVDB) (under Display peak
luminance → Force peak onto display (VSVDB)) lists every step the VSVDB v2 can carry, PQ 0 to PQ 620
(0 to about 1.05 cd/m²), instead of five steps up to 0.0083 nit - for projectors and other displays
without a true black. Stored values keep their meaning. Player-led Dolby Vision only.
Fixes
-
Playback no longer stalls for good after skipping chapters on Blu-ray discs (seen on a UHD disc
played with menus, skipping chapters quickly). A chapter skip into another clip can hand the decoder a
first frame without a timestamp; Kodi took it as time 0, the clock jumped, and with the FEL composition
the pipeline deadlocked (without it playback recovered after a few seconds). Two fixes:dvfelkernel module: frames the display returns after a reset are released at once, and when every
buffer is still held it passes one frame through instead of waiting forever.- Kodi (
AMLCodec): a decoder timestamp of 0 is treated as "no timestamp", and such a frame is dropped
when it is the first one after a reset, so the clock follows the new position.
Tested with 20+ fast chapter-skip runs on the same disc: no stall.
-
libbluray: drawing a null image from a BD-J menu no longer throws an exception into the menu
application (the JDK draws nothing there).
What the FEL composition does
The Dolby Vision hardware in the S5 has no enhancement-layer input, so CoreELEC converts P7 to P8.1 and
drops the EL: FEL titles lose their full-enhancement detail. This build adds the FEL reconstruction back,
while the output still goes through the hardware Dolby Vision pipeline:
- The hardware HEVC decoder decodes the base layer as usual (10-bit AFBC).
- A new vfm node (
dvfelkernel module, between the decoder and the display) decompresses each base
layer frame with the VICP block into a linear 10-bit 4:4:4 buffer shared with the GPU (dma-buf). - Kodi splits the EL NAL units from the stream (single-track MKV, dual-track MP4 or Blu-ray), decodes
them in software (FFmpeg) and parses the original P7 RPU (libdovi). - The Mali-G57 composes every frame in GLES 3.2 in fp32: Lanczos-3 EL upsampling, NLQ (linear with dead
zone) and base layer prediction (polynomial / MMR) from the RPU. - The result is quantized to 10 bits with a static blue noise dither to keep gradients free of banding.
- VICP recompresses the composed frame to AFBC for the display; the hardware DV core gets it with a
no-op P8.1 RPU, so the dynamic metadata and SamuriHL's RPU processing (L5, CMv4.0, ...) apply as usual.
BL, EL and RPU are paired frame-exactly. The composition matches a CPU reference implementation within
±1 LSB.
Requirements
- S928X (S5) device using the Amlogic-no image, TV or projector with Dolby Vision, DV enabled.
- No patched
dovi.kois needed: the FEL is composed on the GPU and the Dolby Vision core gets a
regular profile 8.1 stream, so the stockdovi.kodoes the rest. - Only P7 FEL streams use the new path. MEL, P5, P8, HDR10 and SDR, and all other SoCs, play as in
SamuriHL's build.
Install
Copy the .tar to the /storage/.update folder (the Update Samba share) and reboot.
Note: SamuriHL's update checker add-on is part of the image. Updating to an official SamuriHL build
from it removes the FEL composition again.
Settings
Shown on S5 (S928X) only, in Settings → CoreELEC (expert level):
- Dolby Vision FEL composition (on by default): off gives the regular behaviour (P7 converted to P8.1
without the enhancement layer). Takes effect when playback starts. - Dither Dolby Vision FEL output (on by default): blue noise dither of the composed picture to 10
bits. Takes effect immediately. - Dolby Vision FEL demo mode (off by default): split screen with the L1 readout, see above.
Limitations / known issues
- 4K 24p only for now: about 35 ms of GPU time per 4K frame (budget 41.7 ms). 4K 30/50/60 FEL does
not fit. - The S5 display path takes at most 10 bits, so the output is 10 bits plus dither, not a true 12-bit
signal. - After a seek, a few frames (longer on encodes whose EL keyframes are not aligned with the BL) are shown
without the EL until the next EL keyframe. - Kodi CPU load is higher during FEL playback (software EL decoding).
- Blu-ray FEL playback from a disc folder was tested on one UHD title (menus, chapter skips); other discs
are not tested yet.
Debug switches (on the box)
/storage/dvfel_dither: overrides the setting,0off,1on,2left half only (comparison)./storage/dvfel_pattern:1shows a 12-bit grey ramp test pattern instead of the video.- Statistics:
cat /sys/kernel/debug/dvfel/stats(needs debugfs mounted).
Also included
-
Booting from a USB 3.0 port: some vendor bootloaders (e.g. Dune HD Pro 8K Plus) only start the first
USB controller, so CoreELEC on the USB 3.0 port was not found and Android started. The install script
(aml_autoscript) now makes the bootloader try the other controllers too. It is written to the
bootloader environment on the first install (toothpick / recovery button boot). On a box that already
runs CoreELEC, either do that boot once more, or run over SSH:fw_setenv bootfromusb 'usb start; if usb storage; then run cfgloadusb; fi; for i in 1 2; do usb stop; usb start ${i}; if usb storage; then run cfgloadusb; fi; done' -
Dune HD Pro 8K Plus device tree (
device_trees/s5_s928x_dune_hd_pro_8k_plus.dtb): the Ugoos SK1
tree plus the power of the internal HDD bay. Copy it asdtb.imgto the root of the CoreELEC FAT
partition.
Source: https://github.com/djnice/CoreELEC-samurihl/tree/dv-fel-s5