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!

Hi.

Could it be possible to add f2fs filesystem module to the kernel ? It would be really useful since most drive on whic coreelec is used are flash, ssd, emmc… I thinks it’s pretty mature, even to try use as default filesystem for storage.

But at least I think it could be added as an option. Thanks!

Hi everyone,

I fixed the subtitle issue by changing the default font to Roboto.

However, with the latest nightlies (since about 3 days ago), I’m experiencing micro-stuttering on 4K content whenever I bring up the OSD.

I was wondering if anyone else who updated to the recent nightlies is noticing the same issue.

Also, I wanted to ask if it’s possible to downgrade using the file CoreELEC-Amlogic-no.aarch64-22.0-Piers_nightly_20260921.tar.

Has anyone tried CoreELEC 22.0-Piers_beta2 on this device? If so, does it run smoothly?

Have a great Sunday, everyone!

Hi,

I’m having a boot issue with a Xiaomi TV Box S 3rd Gen and I’m wondering if anyone has tested CoreELEC with this firmware version.

Device

  • Xiaomi TV Box S 3rd Gen

  • SoC: S7D / S905X5M

  • Model: MiTV-AFMU0

  • Android 14

  • Current slot: B

Firmware

  • UKG3.250826.001.V816.0.11.0.UZFAABX

  • Security patch: 2026-06-01

  • Bootloader: 01.01.260805.214201

  • ro.boot.verifiedbootstate: green

  • Bootloader is still locked

I updated the box to this firmware shortly before starting my CoreELEC tests.

CoreELEC
I have tried:

  • CoreELEC 22.0 Piers nightly 20260926

  • CoreELEC 22.0 Piers Beta 2

  • Generic Amlogic-no image

  • Correct DTB: s7d_s905x5m_xiaomi_3rd_gen.dtb renamed to dtb.img

The USB media was correctly flashed and I verified the MD5 checksums of kernel.img and SYSTEM.

I have tested 3 different USB drives, including a Kingston 64 GB USB 3.0 drive.

Boot behavior

When using the CoreELEC USB and Reboot to CoreELEC 5.0 / First Boot or adb reboot update, the box does not boot into CoreELEC.

Depending on the attempt:

  • Xiaomi logo appears

  • screen goes black

  • then the box eventually reboots into Google TV

  • or Android Recovery is reached

Google TV itself remains fully functional.

I have also tried the Piers Beta 2 image with the Xiaomi DTB, with the same result.

I have not unlocked the bootloader or modified any Android partitions.

Has anyone successfully booted CoreELEC on V816.0.11.0.UZFAABX?

If not, is there any known change in this firmware/bootloader that could affect the CoreELEC boot method?

I would also be interested to know whether anyone has tested the previous .7.0 firmware and then updated to .11.0, and whether CoreELEC continued to boot afterwards.

I can provide logs, getprop, boot information or any other diagnostics if needed.

Thanks!

Hi, I am having the same issue as above XrMT. I have the same firmware.
Two days ago I sucessfully booted first time into coreelec. Today I tried to boot again with the apk, first reboot or normal reboot, it doesnt work. Tried with hub and no hub, tried to install again on usb. Tried to reboot without the apk. It just goes into android tv or Android recovery like XrMT.
If anybody can help or I can help somehow. Thanks!

Maybe @Wag knows the answer, he has already updated his box, like you guys a month ago.
Need some dtb file changes maybe?
Fw 0.7.0 working properly

Hi! I had almost exactly the same issue with my Xiaomi TV Box S 3rd Gen.

I’m also on the newer firmware. I successfully booted into CoreELEC for the first time, but after rebooting later, the box kept going back to Android TV instead of CoreELEC.

What eventually worked for me was using the Amlogic-no/S905X5M nightly with the correct DTB:

s7d_s905x5m_xiaomi_3rd_gen.dtb

renamed to dtb.img.

I did not downgrade my Android firmware. I’m currently running CoreELEC successfully on Xiaomi firmware V816.0.11.0.UZFAABX.

So if we really have the same firmware, I’d be interested in comparing:

  • your exact Android build number
  • the exact CoreELEC nightly/version you used
  • whether you are using s7d_s905x5m_xiaomi_3rd_gen.dtb
  • whether First Boot and Normal Boot behave differently
  • what happens immediately after selecting the option (Xiaomi logo → Android, recovery, etc.)

I also had some weird behaviour with the USB boot sequence, so I wouldn’t assume the USB installation itself is broken just because it worked once and then stopped.

If you post those details, I can compare them with my currently working setup.

Thanks for the help. It turns out it was a simple user error lets say :smiley:
I somehow disconected power from my ugreen usb hub, when I plugged it back in it worked.
The strange thing was, because it was also not loading when I directly connected the USB stick to the box. And also I could access the USB when the hub was not powered, so I didn’t think of that at first.
Seems all good now. Thanks again.

Hi everyone,
Could you tell me if you’re experiencing micro-stuttering on 4K content with fractional framerates when bringing up the OSD on the latest nightly builds?

I didn’t have this issue before.
Thanks a lot!

[The issue seems to have been resolved with the latest build]