Ugoos AM9 Pro [GUIDE] [TUTORIAL] SD + USB "Hybrid-Boot" Setup

[GUIDE] [TUTORIAL] Performance-Boost: “Hybrid-Boot” Setup for Ugoos AM9 Pro

Since CoreELEC searches for the system drive by the partition label “STORAGE” during boot, we can exploit this to use a fast USB SSD as our primary storage while using a microSD card only as a “boot key” (bootloader).

Requirements:

  • A microSD card (used strictly as a bootloader).

  • A fast USB 3.0 stick or NVMe SSD enclosure.

  • An SSH client (e.g., PuTTY).

Step 1: Base Installation

Flash the CoreELEC image onto both the microSD card and the USB SSD using Rufus or the CoreELEC USB-SD Creator. Note: Rufus automatically sets the partition label of the second partition to “STORAGE”.

Step 2: Preparing the SD Card as a “Boot Key” (SD_STORAGE)

Since the SSD already has the label “STORAGE”, we need to prevent the SD card from mounting itself as /storage during the boot process by renaming its label:

  1. Boot CoreELEC from the SD card.

  2. Connect to your box via SSH.

  3. Identify your SD card partition using lsblk (usually mmcblk1p2).

  4. Unmount the storage: umount /storage. If the system reports the device is busy, use umount -l /storage (lazy unmount) to force it.

  5. Rename the SD partition label: e2label /dev/mmcblk1p2 SD_STORAGE

  6. Verify the change: e2label /dev/mmcblk1p2 — it should now display SD_STORAGE.

Step 3: Finalizing and Future-Proofing:

Reboot the box. The system will boot from the SD card, but since it can no longer find the “STORAGE” label there, the kernel will continue searching and automatically mount your USB SSD (which carries the “STORAGE” label) as /storage.

Note: Once firmware version 2.1.1 is available, you will be able to simply eject the SD card after the boot process is complete.

Thanks to Jamal for the confirmation that this process works flawlessly.

Verification: Check the result with: df -h /storage. It should now point to /dev/sda2 (your SSD).

Benchmarks & Comparison

I’ve tested this on both the AM6B Plus and my new AM9 Pro. The performance jump compared to a high-end SD card is significant.

Performance Test (dd command): dd if=/dev/zero of=/storage/testfile bs=1M count=500

  • Ugoos AM9 Pro (SSD - Phixero P201): 514.3 MB/s (0.97s)

  • Ugoos AM6B Plus (SSD - Phixero P201): 421.4 MB/s (1.18s)

  • Reference: SanDisk Extreme Pro 128GB SD Card: 84.4 MB/s (5.92s)

*Don’t forget to clean up the test file afterwards: rm /storage/testfile
*
—————————————————————————————————————————–

Pro-Tip: The “UUID-Method” (Advanced Configuration)

A big shout-out to cuker for suggesting an even more robust way to handle the boot process. While the “Label-Method” above is excellent for its flexibility, you can also hard-code your SSD as the storage drive using its unique ID (UUID). This ensures the box always boots from the correct partition, even if you have multiple drives connected.

How to set it up without booting the box:

  1. Get the Tools: Download DiskGenius (Free Version) to your Windows PC.

  2. Extract the UUID:

    • Connect your USB SSD to your PC.

    • Open DiskGenius and select your USB SSD in the left panel.

    • Click on the second partition (formatted as EXT4, labeled STORAGE).

    • Right-click it and select “Partition Properties” to find the “Volume UUID”. Copy this code.

  3. Configure the Boot Key (SD):

    • Insert your microSD card (the “boot key”) into your PC.

    • Open the config.ini file on the root of the SD card.

    • Add the following line to the very bottom of the file (replace the example ID with your actual UUID):
      coreelec=‘quiet disk=UUID=4f633de2-4da9-4001-99fe-280a595d3392’

    • Save the file.

  4. Boot & Verify:

    • Insert both the SD card and the USB SSD into your AM9 Pro and power it on.

    • The box will use the SD card as a boot loader and immediately switch to the SSD for storage.

    • Verify the success via SSH (PuTTY) with these commands:

      • df -h /storage (Should point to /dev/sda2)

      • ls -l /dev/disk/by-uuid/ (Confirm your UUID points to ../../sda2)

Thanks again to cuker for this refined approach!

—————————————————————————————————————————–
**
[AM9 Pro] “Ignition Key” Boot Image (Ready-to-go)** For those who don’t feel like dealing with SSH, PuTTY, or manually editing config.ini files:

  • Content: An extremely compact boot image (approx. 342 MB) containing only the necessary boot partition.

  • Advantage: No more manual adjustment of UUIDs required.

  • Procedure:

    1. Flash AM9_Pro_Boot.img.gz onto a microSD card using Rufus (the AM9 Pro dtb.img, the UR01 remote.conf, and the UR02 remote2.conf are already included in the image). Only the patched 5.15-kernel dovi.ko needs to be copied into the root of the SD card afterwards.

    2. Insert the USB stick or SSD containing the original CoreELEC22-NO build image and the SD card into the box, then power it on – that’s it. The system will boot from the SD card, automatically detect the STORAGE label on the USB drive, and load CoreELEC.

New Download: 342.55 MB file on MEGA

Update Note: I accidentally included the dtb.img for the AM6B Plus in the previous image. If you are already using that file, you just need to swap it:

  1. Rename s6_s905x5_ugoos_am9_pro.dtb (from the device_trees folder) to dtb.img.

  2. Overwrite the existing dtb.img in the root of your SD card with it.

Sorry for the confusion!

5 Likes

When USB booting will be fixed in next Android release this will be obsolete?

Also why making harder than needed?
https://www.avsforum.com/threads/ugoos-am9-pro-coreelec-dv-fel.3344813/page-2?post_id=64635402&nested_view=1#post-64635402

Mhm…

Note: Once firmware version 2.1.1 is available, you will be able to simply eject the SD card after the boot process is complete.

I wonder how this will go. Badly I would say :frowning:
The system expects /flash to be there. From where do you think SYSTEM is mounted. To get this partially worked boot parameter toram MUST be used but still you can get unexpected results. Don’t suggest such things.

DiskGenius → diskpart ?

Yes, it will likely become unnecessary with the next update.
Three options are offered, including the one you linked.
All three options have been personally and successfully tested.

Thanks for the input. However, I think there is a misunderstanding in your proposed procedure:

  • If I follow your steps and format the USB drive to EXT4 without flashing the CoreELEC image onto it first, the drive will simply be empty and the system won’t find any bootable files.

  • Even if I flash the image and then rename the partition label from STORAGE to STORAGE2, it adds an unnecessary, manual step. My current approach uses the standard STORAGE label, which works out-of-the-box without requiring any modifications to the partition labels or the config.ini.

  • Additionally, my solution is designed with future-proofing in mind: Once the USB boot issue is resolved in a future firmware update, I simply need to remove the SD card, and the system will boot natively from the USB drive without further configuration changes.

Your method adds complexity where the current standard process is already efficient.

actually. i don’t know why i bother.
nevermind

1 Like

Even easier and cleaner procedure.

  • write CE on both uSD and USB
  • boot from uSD
  • enable SSH
  • attach USB
  • get UUID of storage partition of usb using blk command blkid /dev/sda2
  • change UUID on usb storage partition tune2fs -U random /dev/sda2
  • use nano editor to change config.ini with line: coreelec='quiet toram disk=UUID=03591952-3256-4bef-9a39-a174b5996015' (use UUID value from previous step)
  • reboot

I also think this topic/method can be closed when new firmware becomes available.
USB boot was already tested internal and boot from USB works reliable now.

But we got no info when this fix in what firmware will be included.

Sorry vpeter, maybe I’m just missing something here, but I believe I provided exactly this procedure as the second option in the middle of my guide, including the credits to cuker for that approach.

Portisch is obviously right – once the USB boot bug is fixed in the firmware, this guide will become obsolete. Once the fix is available, users will just be able to eject the SD card and boot natively from the USB drive.

I don’t mean to be impolite, and I am very grateful that I am allowed to post my guides here. However, I get the impression that some of you didn’t read the whole guide but only skimmed through it?

My last “guide” doesn’t need any extra program on Windows. Windows or any other OS is used only to write images.

And this step Unmount the storage is totally wrong. What do you think will happen when you took needed drive from CE…

Anyway, all good. Always give my best to users.

So is it recommended to use a USB for booting instead of a microSD card? Is it even possible to use a microSD card without a USB? I don’t want it to stick out too much.

Of course, you can also just use an SD card, and as a normal user, you won’t even notice a difference.

Only in benchmarks can you see that USB is significantly faster, and those who prefer AM9 Pro to the good old AM6B Plus usually like something newer, faster, and therefore don’t use a slow SD card.

if you mean AM9 is newer and faster, newer yes, faster no
AM6B+ still tests higher

Yes, as far as I understand, this is just a current issue with USB UAS support.
The AM9 Pro’s eMMC is faster.
And we don’t need to discuss the speed of an SD card.

Sorry if I’m misunderstood. I just wanted to express the principle: anyone who buys an AM9 Pro certainly doesn’t do so to have to work with a slow SD card. Even if the average user doesn’t notice it.