Reviving this because I had exactly this situation — S905W box, eMMC completely
dead — and it **is** possible to boot from SD with no working eMMC.
Firstly i had to get the UART all setup to communicate with the board just to find out it was stuck on a boot loop because the emmc was dead.. i was going to replace this later
Ideally you need serial communication to get this board working. this will allow you to talk to the hardware otherwise you are just guessing!
I have one running Armbian 26.08 (kernel 6.12.103-ophub) right now, booting entirely from the card with nothing attached to the PC.
SteeMan is right that the stock aml-s9xx-tvbox builds chainload from the
factory u-boot in eMMC.
The fix is to put a real Amlogic bootloader in the card's raw sectors so the mask ROM boots the card directly.
**The part that isn't obvious** is why the sensible-looking attempts fail.
It isn't the boot method — it's the DDR parameters. Every board's memory training blob (`acs.bin`) lives in its own bootloader, and on a TV box that means inside
the eMMC. When the eMMC dies, the correct parameters die with it. Borrow a bootloader from another board and BL2 says:
DDR3 chl: Rank0+1 @ 912MHz - FAIL
DDR3 chl: Rank0 @ 912MHz - FAIL
DDR3 chl: Rank0 16bit @ 912MHz - PASS.
It falls back to half width, passes a quick self-test, then corrupts memory
under real load. You get a boot that reaches systemd and then panics with
oopses at random addresses. I chased that for hours; it is not a clock speed
issue (768 MHz/CL11 corrupts exactly like 912 MHz/CL13).
**What worked:** a u-boot built for the Tanix TX3 Mini, which is also a p281
S905W board, in the matching RAM size:
https://github.com/arnarg/tx3-mini-uboot-build release v2019.01
u-boot-v2019.01-tx3-mini-1g.bin (1 GB boards)
u-boot-v2019.01-tx3-mini-2g.bin (2 GB boards)
Already in raw-sector format, so:
dd if=u-boot-v2019.01-tx3-mini-1g.bin of=/dev/sdX conv=fsync bs=1 count=444
dd if=u-boot-v2019.01-tx3-mini-1g.bin of=/dev/sdX conv=fsync bs=512 skip=1 seek=1
One more thing to watch: ophub's `boot.scr` only scans `mmc 1`, and with a dead
eMMC your SD may come up as `mmc 0`, so it looks straight past the card. Write
your own `/extlinux/extlinux.conf` on the boot partition (the image ships only
an `extlinux.conf.bak`), pointing at `/zImage`, `/uInitrd` and
`meson-gxl-s905w-p281.dtb`, with the APPEND line copied from `uEnv.txt`.
Also keep `video=HDMI-A-1:1920x1080@60e` on the kernel command line — without a
forced mode u-boot can hang at console init when no display is detected.
Full write-up with the failure modes of every bootloader I tried, and the
serial logs:
Credit to @arnarg for building and publishing those bootloaders — that repo is
the thing that made it work.
u-boot-tx3-mini-1g.bin
README.md
scripts.zip