I am having very similar issues to you - I can’t get Batocera to boot from eMMC. I have an XU4 with the OGST Gaming Case, and I am able to flash and run Batocera on micro SD. It runs well, but I am looking to use the eMMC as it is faster and less likely to suffer the consequences of many writes/rewrites over time. My particular interest is in N64 emulation, and running those ROMs on the micro SD (Sandisk Ultra and I’ve also tried Samsung EVO) are very jittery - so I’m hoping that the faster eMMC will allow better performance here.
I have gone round in circles now many times trying to get the eMMC to work, and have not managed it yet…
I have an Orange 16GB eMMC which came from Odroid with Linux installed. I didn’t need that, so simply tried flashing Batocera to the card and tried to run it. The blue light stays on forever, no output and no power to the usb’s - so it didn’t boot. Ok no problem I thought - so I completed the eMMC recovery procedure: https://wiki.odroid.com/accessory/emmc/recovery_xu4. The eMMC boots into Android so it must be working. Next I tried re-flashing Batocera 29 (and subsequently 30) to the eMMC. Same result, blue light stays on without booting. I went back over my steps, flashed the micro SD’s to check the images are working, all fine. I have tried flashing the eMMC from Windows 10 and from Linux - still the blue light of death. Have tried Etcher and Win32 Disk Imager. Have tried unpacking the images using WinRar and 7-Zip. I have found that, in Etcher, Windows fails the verification at 99% while flashing the Batocera image. Linux completes it successfully. Now to be honest I am out of ideas and a bit fatigued of this process….
So what I think I understand (please do help me here if I’m wrong); the eMMC needs to have a boot file written into it, which is on a hidden partition and is created whilst completing the eMMC recovery procedure. When you then flash the Batocera Image to the eMMC, that boot file should remain somewhere(?) and allow the eMMC to boot when it’s in the XU4. I don’t know if that’s exactly how it works as I’m new to this, but this is where I think the problem lies.
Hopefully we can work this one out! If anyone can assist then I’d be most grateful