Xiaomi Box S 3rd Gen: Budget Player w/Dual-boot CE + DV FEL & Google TV

Hello

Has anyone tried to add IR receiver to this box?
I tried blog.kitor .eu/xiaomi-tv-box-s-2gen-add-restore-a-working-ir-receiver guide, but at least from what I tested under stock ROM and some Mi Box IR codes it doesn’t work for me.

Now I don’t know, had I done poor soldering job, used wrong IR codes or it simply doesn’t work with our model of box.

IR Receiver passive components were marked differently, but had exact same placement and order as these on older box. So I applied them in same order as on provided example with 2nd gen.

I used aliexpress .com/item/1005008512385520.html diode.
(Please remove space from links)

If anyone have gotten any success let me know - that is a huge deal for my Philips Pronto :slight_smile:

A clean re-install and setup again has resolved my issue above. Weird it was only DV

Hello,

I managed to get CE working on a regular USB stick but it turned out to be too slow for remuxes.

With the prices of SSD sticks skyrocketing I decided to buy a USB HUB with an M2 NVME adapter for a spare 512 GB PCIe Gen 3 SSD I had lying around. On stock OS the box normally reads the SSD. However when I try to run CE on it, I can’t get it to work because it boots into Android Recovery Mode instead. The hub is still working because when I plug in a USB dongle from my keyboard I can control the Recovery Mode window.

Is there something I can do to try to get it running?

I’m using a BENFEI 6 in 1 USB-C HUB with a USB-C → USB-A 10 Gbps converter.

Hmmmmmm, maybe is to much to ask of this USB HUB .

Is the SSD in an enclosure/crypt and powered with its own supply ?

Does the HUB have a port to help with power?

Test the HUB with the old slow USB Drive you had.

I just tested it and:

  1. The hub does have an USB-C power input and the SSD doesn’t work even when powered from the wall.
  2. The old USB drive doesn’t work either when plugged into the USB hub (even when powered from the wall), it works straight away when I connect it to the old USB-A - Ethernet hub so the firmware is fine

What baffles me is that the SSD works fine if I try to use it on stock Google TV OS.

Your USB Drive is the culprit. I have been using a Generic Lexar 16 G USB Zip Drive since I purchased my Mi 3 Box,and yes is sluggish.

So I decided to try a micro sd card USB Adapter. Difference is Night n Day!! No more sluggish.

The Adapter is micro card only .

Maybe test n try

I’ve decided to use another SSD I have (Crucial MX500 with a Krux enclosure) and it works flawlessly. Shame I couldn’t get the M2 to work, maybe there’s an m2 adapter out there that works but for now I’m happy with the end result so I can’t be bothered with further testing.

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.

  1. Setting custom_edid=1 or coreelec='quiet custom_edid=1' in /flash/config.ini fails to override the cached DDC sink capabilities.
  2. 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

  1. 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

  1. 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.

  2. 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.

  3. 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).

With such a nice AI identification please ask AI to also make a fix? Why bother doing it manually.

Hi everyone,

I’ve tested several heavy files, including highly demanding content like the 4K Remux of Gemini Man at 60 fps, without experiencing any issues.

However, I noticed that with much lighter 1080p HEVC files—like a TV show episode—whenever SRT subtitles appear on screen, the skipped frames count increases and micro-stuttering begins. If I pause and resume the video, the issue goes away.

Subtitle settings are completely at their default values. I’ve already verified that the TV is matching the correct refresh rate. The media player settings are set to “Match Refresh Rate” (or “Sync Refresh Rate”), and I’ve tried both with and without Match Refresh Rate delay about 3 sec.

I’m losing my mind here, does anyone have any suggestions?

Enable debugging log, reboot, test file & paste log here.

Hi everyone,

Thanks! I followed your suggestion and enabled debug mode. Fortunately, after 2 hours of playback, the issue occurred, so it should have been captured in the log.

I am attaching the 2 log files in the hope that someone can figure out the cause.

Thanks to everyone for your help!