Libre Computer AML-S905X-CC eMMC Flashing Steps from Linux with pyamlboot

so still no luck getting with the EMMC on ROC-RK3328-CC, I was hoping for some help. Can’t seem to find any thing that tells you how to actually mount the emmc or how to tell it is actually connected properly. I have seen the generic MicroSD car emmc flashing instuctions

Method 2: Flashing via Linux

  • Network Connection or USB flash drive with image
  1. Flash a MicroSD card with Raspbian or Ubuntu.
  2. Download or copy the image to your OS.
  3. Extract the image.
  4. Use dd or Gnome Disk Utility to flash the eMMC. The eMMC should show up as /dev/mmcblk0. For dd, sudo dd if=IMAGE of=/dev/mmcblk0 bs=1M. Replace IMAGE with the name of the extracted file. You can also dd the compressed image directly via xz -cd IMAGE.xz | sudo dd of=/dev/mmcblk0 bs=1M. Replace IMAGE.xz with the path to the compressed image.

I try this but when i list disk i do not see the mmcblk0 listed. If I try step 4 it says the disk is full.
I was very excited to get my eccm modules but that excitement is starting to go away.
some help would be appreciated.


You either have the wrong eMMC or damaged eMMC.

I’ve been using Lubuntu installed over the Ubuntu Server image with pretty good results. It does most of what I want, even if it’s not as slick as Mate, which can be installed thew same way. I found both Mate and my beloved Xubuntu to be a little too heavy for Le Potato. I might try Mate out as my daily driver now that I’ve tried it on this board. I miss the old gnome.

Here’s what I done:
I flashed ubuntu server to eMMC with Etcher, booted up and did the new password mumbo-jumbo.
I then connected via Ethernet, and ran:

$ sudo apt update && sudo apt -y upgrade
$ sudo apt install lubuntu-desktop
$ shutdown -h now

The command for Mate is:
$ sudo apt install ubuntu-mate-desktop

The Command for Xubuntu is:
$ sudo apt install xubuntu-desktop

Has anyone successfully flashed a USB-Attached SATA drive using MacOS Ventura (UNIX) for Le Potato?

Decompress and use dd on the terminal, just be careful to specify the correct file/drive, there are no training-wheels with dd.

sudo dd if="/PATH/TO/IMAGE.img" of="/PATH/TO/DRIVE" bs=1M

I haven’t used anything past snow leopard, but back then there was a disk utility you could flash drives with too, may still be there if you want a GUI.

Etcher also works on Mac.

I tried this method because my system was finding the mmcblk0 device. It copied an image of the 2023-05-03-raspbian-bullseye-arm64-lite+aml-s805x-ac.img.xz to my AML-S805X-AC, but after booting I get a “No Partition table - mmc 0” then “device 0: unknown device”

Any ideas about how to fix the partitioning on the eMMC?


Follow official instructions. Not instructions posted by users. There is no need to mess with partition tables since they are part of the image.

I just got my eMMC working with my AML-S905X-CC and have some comments.

  1. I tried to use
    sudo pyamlboot/ aml-s905x-cc ums-emmc
    but was getting the timeout even though I was on a Intel(R) Core™ i5-2400 CPU @ 3.10GHz runninb Debian 11. It turned out this was because I had plugged into my USB3 card. When I plugged directly into the Intel motherboards USB, it worked great! It got me wondering that perhaps if you have an AMD computer you could reverse the situation with a non-AMD USB board, you might be able to work around the AMD timeout problem.

  2. I was able to install debian-12 along with gnome and get the gui to work by running sudo tasksel. It turns out that since the board is based on Wayland because of framebuffer efficiency, xfce is not supported (yet?) and startx won’t come up. gnome came up fine.

  3. With my install on an SD card, i was able to install a system on the eMMC by running the SD os. I downloaded on of the images to the Downloads and then ran:

xzcat ~/Downloads/debian-12-base-arm64+aml-s905x-cc.img.xz | sudo dd of=/dev/mmcblk0 bs=1M conv=fdatasync status=progress

Then power off and remove the SD and the board should come up using the newly flashed image.

  1. If you want to go back to SD booting and don’t care about whats on the eMMC, you can just wipe out the eMMC by running

sudo dd if=/dev/zero of=/dev/mmcblk0 bs=1M conv=fdatasync status=progress

This gets rid of your boot/EFI partition and some of the root partition. It should be enough to make the board ignore the eMMC when you poweroff and reboot with an SD card in place. You will get errors after it gets into zeroing the root partition so when you get that, just unplug the board. This part is a bit crude and I suppose we could add a count= parameter to dd. I have not tested the minimum about you need to zero to get the AML-S905X-CC to boot from the SD card.

I hope this info is helpful.

1 Like
  1. We just release Debian 12 Gnome around an hour ago:

  2. count=1 is sufficient. It will wipe out the MBR at sector 0 and the bootloader at sector 1 (512B).

Silly me!. I should have realized count=1 was sufficient. I got focused on zeroing out the whole eMMC. If I really wanted to that, it would be better to wipe our sector 0, boot from my SD card and then zero out the eMMC booted from the SD. That would make the whole process a lot cleaner.

BTW, I prefer xfce over gnome. Does anyone have an idea when xfce might work with debian 12 on Libre AML-S905X-CC?

XFCE will work fine but as XFCE is based on X11, there will be more tearing on a SBC.

I suppose this is a little off topic but I finally got xfce to work. The trick is that I must use gdm as my display manager and not lightdm. My steps were:

sudo apt clean; sudo apt update; sudo apt upgrade -y; sudo apt autoremove -y
sudo apt install gdm3 xfce4 xfce4-goodies
sudo systemctl set-default
<< reboot >>
I got a prompt as to whether to use lightdm or gdm and I chose gdm.
I think the problem I had before was having chose lightdm.

Try plugging in to the USB ports on the back of the machine. Works on my AMD…

I’ve encounter an error while trying to flash the eMMC, I can’t mount as virtual flash drive nor delete user partition due to the next error:

Sweet Potato
Libre 16GB eMMC

~$ sudo pyamlboot/ aml-s905x-cc erase-emmc
Using GX Family boot parameters
ROM: 2.4 Stage: 0.0
Writing /home/robert/pyamlboot/files/libretech-cc/u-boot.bin.usb.bl2 at 0xd9000000…
Writing /home/robert/pyamlboot/files/usbbl2runpara_ddrinit.bin at 0xd900c000…
Running at 0xd9000000…
ROM: 2.2 Stage: 0.8
Running at 0xd900c000…
Writing /home/robert/pyamlboot/files/libretech-cc/u-boot.bin.usb.bl2 at 0xd9000000…
Traceback (most recent call last):
File “/home/robert/pyamlboot/./”, line 132, in
File “/home/robert/pyamlboot/./”, line 87, in load_uboot
self.write_file(os.path.join(self.bpath, self.BL2_FILE), self.DDR_LOAD, large = 64)
File “/home/robert/pyamlboot/./”, line 63, in write_file, b, large, fill)
File “/home/robert/pyamlboot/pyamlboot/”, line 241, in writeLargeMemory
self._writeLargeMemory(address+offset, data[offset:offset+writeLength],
File “/home/robert/pyamlboot/pyamlboot/”, line 215, in _writeLargeMemory = 0x40,
File “/usr/lib/python3/dist-packages/usb/”, line 1082, in ctrl_transfer
ret = self._ctx.backend.ctrl_transfer(
File “/usr/lib/python3/dist-packages/usb/backend/”, line 893, in ctrl_transfer
ret = _check(self.lib.libusb_control_transfer(
File “/usr/lib/python3/dist-packages/usb/backend/”, line 604, in _check
raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 19] No such device (it may have been disconnected)

I made sure to hold the boot button.
I added a 5W power supply to the USB C port
No dice

Use the ums 0 mmc 0 u-boot method or flash from a booted OS on SD card.

The pyamlboot mentions the A311D.

Will this method work with the Alta AML-A311D-CC?
If yes, is the USB port the same as step 3 (top left) or a different port?

Thank you

We recommend programming eMMC from Linux as it’s the fastest method. u-boot is a limited OS so it’s relatively slow. The USB device mode port is also the power port on Alta.

Reiterating so I understand.

  1. The alternate method described above (using pyamlboot) can be used for the Alta AML-A311D-CC, use a Linux machine as it’s faster and more reliable.

  2. Or you’re saying stay with the recommended way described here.

The second one. pyamlboot method was one of the older methods. The Linux method is the current one. We will eventually have an even faster way of flashing but it’s not ready yet.

1 Like