Getting Started

Cargt Provided Software Resources

Public Yocto Source Code Repositories

Public Package Repositories

  • Cargt Package Repository – Public repositories for pre-built packages and binaries for development with Cargt hardware designs.

Public Pre-compiled Images

  • Pre-built complete system images for supported Cargt hardware suitable for initial flashing or full system recovery.

  • Update images for SWUpdate (i.MX) and RAUC (STM32MP2), which replace the whole root file system in the field without reflashing the board.

Running Linux on a Cargt design

Flashing a Pre-compiled image to eMMC / SD card using UUU on an i.MX design

Note

CARGT recommends eMMC for performance and reliability. eMMC is the default. Using SD card requires changing U-Boot variables and expert knowledge.

  1. Put the board into the UUU mode as per the hardware design’s user guide.

  2. Connect the board to the host computer via USB and check the connection by running:

    uuu -lsusb
    

    The output should list the connected device.

  3. Download these files for your machine from the Cargt Package Repository Images, for example from wrynose/imx93-cargt-00363-00365/:

    • imx-boot.tagged - the bootloader

    • cargt-image-<type>-<machine>.rootfs.wic.zst - the full disk image (partition table and filesystems), compressed with zstd

    • cargt-image-<type>-<machine>.rootfs.wic.bmap - optional, the block map that makes flashing much faster; see Faster Flashing with bmap

    Note

    Older releases named the bootloader file imx-boot-tagged. Use whichever name is in the directory you downloaded from.

  4. Flash the bootloader and image. This erases everything on the target storage.

    To eMMC:

    uuu -b emmc_all imx-boot.tagged cargt-image-dev-imx93-cargt-00363-00365.rootfs.wic.zst
    

    To an SD card:

    uuu -b sd_all imx-boot.tagged cargt-image-dev-imx93-cargt-00363-00365.rootfs.wic.zst
    
  5. Power cycle the board without holding the BOOT button. If you entered UUU mode by changing bootcmd, restore it first (see below).

If uuu waits at Wait for Known USB Device Appear... or fails, see Flashing Troubleshooting and Recovery.

Example session on Windows, flashing a board that is already in fastboot mode (FB:):

C:\NXP\images>uuu -lsusb
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.5.201-0-g727fc2b

Connected Known USB Devices
        Path     Chip    Pro     Vid     Pid     BcdVersion      Serial_no
        ====================================================================
        4:2              FB:     0x1FC9 0x0152   0x0221   15FD978D21EA40AF

C:\NXP\images>uuu -b emmc_all imx-boot-tagged cargt-image-core.rootfs.wic.zst
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.5.201-0-g727fc2b

Success 1    Failure 0

4:2-15FD978D 8/ 8 [Done                                  ] FB: done

Other UUU options:

  • -v prints verbose output.

  • -l <log_file> writes a log of the session.

  • uuu accepts the image uncompressed (.wic) or compressed (.wic.zst, .wic.gz, .wic.bz2).

  • Program only the bootloader:

    uuu -b emmc imx-boot.tagged
    uuu -b sd imx-boot.tagged
    
  • Run the bootloader (SPL and U-Boot) from RAM without writing anything:

    uuu imx-boot
    

Note

i.MX 95: uuu imx-boot and the built-in -b scripts stop after the ROM stage on i.MX 95 and never load the SPL. Use an explicit uuu script instead. Save this as imx95-boot.uuu:

uuu_version 1.5.0
SDPS: boot -f imx-boot
SDPV: write -f imx-boot -skipspl
SDPV: jump

and run uuu imx95-boot.uuu. The console shows DDR training output followed by the SPL and U-Boot banners. Verified on the 00414 SOM in serial download mode (October 2026).

Faster Flashing with bmap

The disk image is about 15 GB uncompressed, but most of it is empty space: the second root partition, free space in the root file system, and /data. Without help, uuu decompresses and scans all of it, and the eMMC writes zeros to the empty areas. The .wic.bmap file published next to each image lists the blocks that hold data (about 2.2 GB for cargt-image-dev), and -bmap tells uuu to write only those:

uuu -bmap -b emmc_all imx-boot.tagged cargt-image-dev-imx93-cargt-00363-00428.rootfs.wic.zst

Keep the .wic.bmap file in the same folder as the image. For <name>.wic.zst, uuu looks for <name>.wic.bmap. The built-in emmc_all and sd_all scripts only use it when you pass -bmap.

Flashing cargt-image-dev to the eMMC of an i.MX 93 00363 on the 00428 carrier took 2 minutes 32 seconds with -bmap, and 15 to 20 minutes without it.

To flash several boards at once, run uuu in daemon mode with -d; it flashes every board that connects until you stop it. Each board needs memory on the host computer: on a host with 2 GB of RAM, flashing three boards at once ran out of memory, so flash one board at a time there with -m <usb path> (the paths are listed by uuu -lsusb):

uuu -d -bmap -b emmc_all imx-boot.tagged <image>.wic.zst          # all boards
uuu -m 1:12 -bmap -b emmc_all imx-boot.tagged <image>.wic.zst     # one board

Flashing a Pre-compiled image on an STM32MP2

Each STM32MP2 image directory on the Cargt Package Repository Images (for example scarthgap/stm32mp25-cargt-00395-02-00365/) contains everything needed for both boot media:

  • eMMC: flash with STM32CubeProgrammer over USB, using this flash layout from the flashlayout_cargt-image-dev/ directory (here for the 00395-02):

    optee/FlashLayout_emmc_stm32mp257f-cargt-00395-02-00365-optee.tsv
    

    It is the only eMMC layout with the A and B partitions that RAUC updates need (see RAUC A/B OTA Updates — STM32MP2 (00395-01-00365 / 00395-02-00365)). The layouts in opteemin/, and the -glt* display variants in both directories, have a single set of partitions, so RAUC updates cannot work on a board flashed with them.

  • SD card: write the .wic image from a Linux host. bmaptool uses the .wic.bmap file next to the image and only writes the blocks that contain data:

    bmaptool copy cargt-image-dev-cargt-openstlinux-weston-stm32mp25-cargt-00395-02-00365.rootfs.wic.bz2 /dev/sdX
    

    Replace /dev/sdX with the SD card device (check with lsblk). Everything on the card is erased.

A step-by-step STM32CubeProgrammer guide is planned. For the 00395 A/B partition layout, see RAUC A/B OTA Updates — STM32MP2 (00395-01-00365 / 00395-02-00365).

NXP - Enter UUU mode using U-Boot Environment Variable Method

  • To enter UUU mode without using the BOOT button, you can set the U-Boot environment variable bootcmd to boot into UUU mode on the next reboot.

    Use either fw_setenv from Linux or setenv at the U-Boot prompt; see U-Boot Environment for how to reach the prompt and which variables Cargt images use.

# Using fw_setenv (from Linux shell)
fw_setenv bootcmd 'fastboot auto'
fw_printenv bootcmd  # Verify the change
reboot

# Using setenv (from U-Boot console)
setenv bootcmd 'fastboot auto'
saveenv
printenv bootcmd  # Verify the change
reset

Warning

The board now enters fastboot on every boot until bootcmd is restored. Flashing with uuu does not necessarily reset the U-Boot environment. Before changing it, note the current value with fw_printenv bootcmd. To restore the default afterwards, stop at the U-Boot prompt and run:

env default bootcmd
saveenv
reset