I’d like to start by thanking everyone who contribute to projects like this, making the most of what we have. I have a home theater with an old BENQ TK800M projector. Its plenty bright and looks great. It’s connected to a Denon AVR-X580BT then the mi box on the mediaplayer input.
The dream is android TV for the family but I can boot into CE and watch bluray rips with player led DV tonemapping or the occasional MVC 3D rip. I have managed to get both working separately. I fix one, the other breaks. I’ve been using AI to help me troubleshoot. This is a summary of the thread, hope this helps with development, I’m going back to jellyfin on android for now, any help is appreciated:
Bug Report: S905X5M (s7d) HDMI Sink-Gating, EDID Injection Failure, and 1080p60 Fallback
System Environment
-
Hardware: Xiaomi Box 3rd Gen (Amlogic S905X5M / s7d platform)
-
OS: CoreELEC (official) 22.0-Piers_nightly_20260920 (Amlogic-no.aarch64)
-
Kernel: Linux 5.15.196 (docker@e2b80e45e037) #1 Sun Sep 20 01:32:31 IDT 2026
-
Device Tree ID: s7d_s905x5m_xiaomi_3rd_gen
-
Kodi Build: Compiled 2026-09-20 05:11:22 +0530
-
AV Topology: Xiaomi Box 3rd Gen → Denon AVR (DENON-AVAMP) → BenQ Projector (TK800 series)
Summary of Observed Issues
1. Hardware Bootloader Checksum Enforcement Bypasses All Standard EDID Overrides
The primary objective was spoofing an LLDV-capable EDID (46 d0 00 Dolby Block) to enable player-led Dolby Vision processing and VS10 tonemapping to HDR10 on a non-DV display.
On this S7D/S905X5M board, the bootloader reads the downstream I2C DDC bus from the repeater directly at power-on, computes a CRC, and injects it into the kernel command line:
cat /proc/cmdline
… hdmimode=1080p60hz hdmichecksum=0xdf440000 dolby_vision_on=3 hdr_priority=268435536 config_csc_en=1 dolby_status=1 frac_rate_policy=1 …
And the HDMI transmitter driver confirms matching hardware values:
cat /sys/class/amhdmitx/amhdmitx0/edid
Rx Product Name: DENON-AVAMP
checkvalue: 0xdf440000
Because the kernel drivers (dovi_s7d_5_15_stb26 and amhdmitx) validate against this bootloader hardware handshake:
Standard CoreELEC /flash/edid.bin and /storage/.config/edid.bin injection methods are ignored.
- Setting
custom_edid=1 or coreelec='quiet custom_edid=1' in /flash/config.ini fails to override the cached DDC sink capabilities.
- Packaging an early CPIO image using
/usr/bin/create-edid-cpio (/flash/edid.cpio) along with drm.edid_firmware=HDMI-A-1:edid/edid.bin resulted in read-only filesystem faults on /flash and did not alter the boot-stage handshake; the driver consistently reported:
cat /sys/class/amhdmitx/amhdmitx0/dv_cap
The Rx don’t support DolbyVision
CAMLCodec Gating Hard-Disables the DV/VS10 Pipeline
Even with Dolby Vision processing enabled in CoreELEC settings (coreelec.amlogic.dolbyvision=true), Kodi’s Amlogic video codec layer queries the kernel sink state prior to initializing the hardware decoder. When the downstream sink does not advertise native DV, CAMLCodec kills the entire Dolby Vision pipeline internally:
Plaintext
info <general>: DVDVideoCodecAmlogic: Opened Amlogic Codec
...
info <general>: CDVDVideoCodecAmlogic::AddData: Open decoder: fps:24000/1001
info <general>: CAMLCodec::OpenDecoder Amlogic device does support DV, DV is enabled by user, display does not support DV, DV system is disabled
Because CAMLCodec strips the RPU/IPT metadata before feeding frames into the hardware video decoder:
-
The kernel driver (dovi_s7d_5_15_stb26) never maps an active DV decoder instance:
Plaintext
# cat /sys/class/amdolby_vision/dv_mode
current dv_mode = off
-
Direct sysfs overrides (echo 3 > /sys/class/amdolby_vision/dv_mode to force HDR10 output) are rejected by the kernel module because no active Dolby Vision instance exists within the decoder pipeline.
3. Automatic Resolution / Refresh Rate Switching Failure (Locked to 1080p60 SDR)
When playing 4K 23.976/24fps content (both DV and 3D MVC frame-packed streams), Kodi fails to execute dynamic mode setting and falls back to the static desktop GUI raster (1080p 60Hz 8-bit SDR BT.709):
Plaintext
info <general>: [WHITELIST] Searching the whitelist for: width: 3840, height: 2160, fps: 23.976, 3D: false:(0x4), stereo mode: 0
info <general>: Display resolution ADJUST : 1920x1080 @ 60.00 - Full Screen (16) (weight: 0.000)
Plaintext
# cat /sys/class/amhdmitx/amhdmitx0/config
VIC: 16 1920x1080p60hz
Colour depth: 8-bit
Colourspace: YUV444
Colour range: default
EOTF: SDR
YCC colour range: default
Colourimetry: BT.709
Even though the hardware decoder (amvdec_h265) successfully processes the 4K stream:
Plaintext
# cat /sys/class/vdec/vdec_status
vdec channel 0 statistics:
device name : amvdec_h265
frame width : 3840
frame height : 2160
frame rate : 24 fps
bit rate : 17368 kbps
status : 5
Direct attempts to force the HDMI transmitter via sysfs fail due to permission lockouts on the new DRM driver implementation:
Bash
# echo 2160p24hz > /sys/class/display/mode
# echo 1 > /sys/class/amhdmitx/amhdmitx0/attr
-sh: /sys/class/amhdmitx/amhdmitx0/attr: Permission denied
# echo "hdr10" > /sys/class/amhdmitx/amhdmitx0/eotf
-sh: /sys/class/amhdmitx/amhdmitx0/eotf: Permission denied
4. 3D MVC Playback Timing Fallback
During 3D playback, the same display-mode arbitration bug occurs:
-
Rather than engaging HDMI 1.4b 3D Frame Packing (1080p24hz 3D), the display pipeline fails the repeater/sink capability validation and defaults to the 60Hz 2D desktop raster.
-
Outputting 24fps 3D frame-packed structures inside an unsynchronized 60Hz SDR container breaks DLP-link synchronization on the projector, producing severe judder and loss of stereoscopic separation.
Key Takeaways for Developers
-
Bootloader DDC Gating: The Amlogic S7D (s905x5m) bootloader enforces hdmichecksum derived from physical I2C DDC reads. An upstream hook is required in Amlogic-no to allow custom_edid or early CPIO firmware injection to override the hardware DDC checksum table before the DRM subsystem and dovi_s7d_5_15_stb26 modules bind.
-
Decouple CAMLCodec from Downstream Sink DV Support: Kodi’s CAMLCodec should not disable the Dolby Vision processing engine when “display does not support DV” if the user has configured VS10 conversion to HDR10 or SDR. The decoder pipeline should remain active so the hardware VS10 block can perform down-conversion.
-
DRM Mode-Setting Fallback: Investigate why Display resolution ADJUST fails to match valid CEA modes in disp_cap across HDMI repeaters on Linux 5.15, forcing 4K24 and 3D24 streams down to VIC 16 (1080p60).