Libre Computer AML-S905X-CC eMMC Flashing via MicroSD Card and u-boot

  1. Download, extract, and write an OS to the MicroSD card.
  2. Boot the board with the eMMC attached.
  3. Download the image or copy it to the board using SSH or an USB key.
  4. Extract the image if you are copying it compressed with xz -dk FILENAME.xz.
  5. dd it to the eMMC sudo dd if=FILENAME of=/dev/mmcblk0 bs=1M.
  6. Reboot

If the eMMC already has a corrupted system written on it and you want to overwrite it:

  1. Boot the board via SD card without eMMC.
  2. Attach the eMMC. Be very careful not to short anything. Also be careful not to destroy the connectors by fat fingering it while attaching. Line everything up.
  3. In a terminal type:
git clone lft
cd lft
sudo ./ b-emmc rebind
  1. Continue from step 3 of the regular process above.

Wow, thank you for this thread!

While I certainly skipped around in it, there are some things I noticed and worked to avoid and to encounter.

I have managed to install RaspbianPi to the eMMC and have it boot. It did require microsd card. I did use an AMD machine. Did the thing to stop uboot and then the dd to the emmc.

I’m fairly sure that I have a set of steps that would work for anyone, while explaining a little bit of troubleshooting that could help along the way. For example my first time through I just followed the steps without thinking about what I was doing. After failing, I went back and tried with what I know and found success.

Is there a place that I can upload a document when I redo this for verification? Or can I just KCS the original post? As screen shots help in these cases, I will be using them. If there is a SME that would like to review I’ll happily work with them as well.

Regards from a warm potato and happy tater’n to y’all!

1 Like

For guides, please post on an external site and then post a link here. We will provide some feedback to your guide.

Thank you for your quick reply! Unfortunately I still can’t get it to work.
Your instructions worked fine. the dd command finished with the following output:

4668+0 records in
4668+0 records out
4894752768 bytes (4.9 GB, 4.6 GiB) copied, 74.6514 s, 65.6MB/s

I then:

  • powered down the board
  • removed the SD card (I am assuming this is the right thing to do at this point?)
  • powered the board back up

What I am getting is the regular start sequence. uboot interruption option first [which I do not interrupt] and then booting withe the following ouput:
** Booting bootflow ‘mmc@ff520000.bootdev.part_1’ with efi
Card did not respond to voltage select! : -110
Booting /efi\boot\bootaa64.efi

After that the boot seems to crash at different times. Sometimes the HDMI output stops alltogether, sometimes I get the Ubuntu load screen with the spinning wheel and the wheel stops spinning and then it just sits there forever, sometimes it seems to keep going for a while and then I get a bunch of text output that I don’t know what it means (see upload attached).
Since the behavior is not consistent it seems like something is unstable and leads to crashes at different times but I am not sure what to make of that or how to proceed.

I would like to get the emmc to work as performance should be much faster than with an SD card.

When I run from SD card the system seems a bit slow but generally stable, consistent and workable (it boots into the desktop environment and everything seems to generally work).

Do you have any tips what I can do to get this to work reliably with the emmc?

Oh I forgot to mention, I do have a CanaKit 5V 2.5A power supply. I read that too weak of a power supply could cause those issues but I don’t think this is the issue in this case as it works fine with the same power supply when booting from the SD card.

What is the output of journalctl -xb --no-pager?

It took me a long time to be able to get back to that prompt where I can type anything as it kept crashing before getting to that but when I got there and typed the command there are many pages of outputs. I have attached 2 pictures, the first is the final output of journalctl -xb --no-pager the other one shows a bunch more text that just popped up while just sitting there for a few more minutes (maybe after 4-5 minutes).
Does this help you to determine what the issue is at all? Is there anything else I can provide that would help?

Can you take a picture of the module you are using? We tested the entire process end to end and there were no issues.

Absolutely, see attached.

Should I return the emmc to Amazon and try again with a replacement? Or maybe return the renegade board or possibly both?

Where and when did you get the image? If the image was able to be written to the eMMC, it means that there’s no problem with either. What command are you using to dd?

The image is from here:

It is the same image I put on the SD card which I am booting from to flash the emmc. That image seems to be working fine when using it from the SD card.

The dd command used is the one you provided in your earlier reply in this thread from August 10th as point 5: “sudo dd if=FILENAME of=/dev/mmcblk0 bs=1M” where I replace FILENAME with the extracted .img file name

Try downloading the image again and make sure you wipe the eMMC of any residual GPT tables before you dd.

This worked. The output of the dd command also changed to this:

3900+0 records in
3900+0 records out
4089446400 bytes (4.1 GB, 3.8 GiB) copied, 104.707 s, 39.1MB/s

I can now boot reliably from the eMMC.
Thank you for your help!

1 Like

I didn’t understand the procedure for method 1 very well…

Do I need to flash the emmc module from another computer? Like a laptop?

And what you mean with:

  • Use a bit-accurate flash tool to write an image to the eMMC.

Which tool do you recommend? Thanks!

ums 0
Unknown command 'ums' — try 'help'

mmc 0 does not work either.

Method 1 doesn’t apply to U-boot 2023.07* (Sep 17 2023 [...] Libre Computer ROC-RK3328. :confounded:

And now how should I proceed? :man_shrugging:

Thanks… :pray:

Per the OP, this is for AML-S905X-CC only. It’s not for ROC-RK3328-CC. Use method 2.

1 Like

Thank you, eventually the second method worked.