Skip to content

UUU — Universal Update Utility

NXP's Universal Update Utility (UUU) programs eMMC over USB without requiring a bootable SD card. It is the recommended method for production flashing and recovery of boards with a blank or corrupted eMMC.


Install UUU

Download the latest release from the official repository:

github.com/nxp-imx/mfgtools/releases

On Linux, make the binary executable:

chmod +x uuu
sudo mv uuu /usr/local/bin/

Enter USB Recovery Mode

Each Engicam carrier board has specific jumper settings to enter USB recovery (download) mode. Consult the Hardware Reference Manual of your board for:

  • Boot mode jumpers or DIP switches to set
  • The USB OTG / programming connector to use

After setting the jumpers, power on the board and verify the USB connection:

sudo uuu -lsusb

Expected output:

Connected Known USB Devices
    Path     Chip    Pro     Vid     Pid     BcdVersion
    ====================================================
    3:32     MX865   SDPS:   0x1FC9 0x0146  0x0002

Quick Commands

Flash Bootloader Only

sudo uuu -b imx-boot-<machine>.bin

Flash Full Image to eMMC

sudo uuu -b emmc_all imx-boot-<machine>.bin <image>.wic.zst

Example

sudo uuu -b emmc_all imx-boot-imx95-smarcore.bin engicam-evaluation-image-mx95-imx95-smarcore.wic.zst

Custom Boot Script

For advanced or automated use, UUU accepts a script file:

sudo uuu -v bootscript.txt

Example bootscript.txt:

uuu_version 1.2.39

# Boot SPL (i.MX8MM / i.MX8MP)
SDP: boot -f imx-boot-<machine>-sd.bin-flash_evk

# SPL mode (delay + write + jump)
SDPU: delay 1000
SDPU: write -f imx-boot-<machine>-sd.bin-flash_evk -offset 0x57c00
SDPU: jump

# Flash full image via Fastboot
FB: ucmd setenv fastboot_dev mmc
FB: ucmd setenv emmcboot 1
FB: ucmd mmc dev ${emmc_dev}
FB: flash -raw2sparse all <image>.wic.zst
FB: done

After Flashing

  1. Power off the board.
  2. Remove recovery jumpers / restore boot mode to eMMC.
  3. Power on — the board should boot from the freshly flashed eMMC.

Switch boot partition (optional)

If needed, change the eMMC boot partition from Linux:

mmc bootpart enable 1 0 /dev/mmcblk0   # boot from boot0
mmc bootpart enable 2 0 /dev/mmcblk0   # boot from boot1
mmc bootpart enable 7 0 /dev/mmcblk0   # boot from user area