Once you have generated the images, you can use them to update your Android system from U-Boot. This process is recommended to:

If your device is not booting U-Boot see Recover your device.

Follow these steps to update eMMC partitions:

1. Set up your computer

  1. Download the latest Universal Update Utility (UUU), a software tool from NXP.

    UUU version should be 1.5.11 or higher.
  2. Place the uuu executable in a directory in your PATH, such as /usr/bin.

  3. Install udev rules to allow any user to run uuu to access the USB port:

    $ sudo sh -c "uuu -udev >> /etc/udev/rules.d/70-uuu.rules"
    $ sudo udevadm control --reload

2. Obtain the firmware image files

The list of files built by Digi Embedded for Android is:

  • u-boot-ccimx8xsbcpro2GB-<variant>.imx. See U-Boot files by variant to select the appropriate file for your hardware variant.

  • partition-table.img

  • dtbo-imx8qxp.img

  • boot.img

  • vendor_boot.img

  • vbmeta-imx8qxp.img

  • super.img

These image files can be:

3. Set up your device

  1. Connect a USB type-C cable to your development PC and the other end to the target USB type-C connector. See Step 2 - Set up the hardware for instructions.

  2. Change the boot mode configuration to boot from USB. To do so, set the boot mode micro-switches as follows:

    • BOOT.1 ON

    • BOOT.2 ON

  3. Reset the device by pressing the Reset button on the board.

4. Update firmware with UUU

  1. On your development PC, change to your Digi Embedded for Android output directory, out/target/product/ccimx8xsbcpro:

    $ cd out/target/product/ccimx8xsbcpro
  2. Run the install_android_fw_uuu.sh script with help parameter to check the syntax:

    $ ./install_android_fw_uuu.sh help
    
    Usage: install_android_fw_uuu.sh MODE <options>
    
    MODE
      help                      Displays this help message.
      first-deploy              Completely erases and programs images including
                                the bootloader from the USB.
      development               Programs Android images.
      tf-deploy                 Similar to 'first-deploy' but for TrustFence images
                                in closed devices.
    
    'first-deploy' options:
      -u <uboot_filename>       U-Boot file name located at images directory.
      -p <part_table_filename>  Partition table file name located at images
                                directory.
                                'partition-table.img' if not specified.
      -d <images_dir>           Directory where images are located.
                                Current directory if not specify.
      -n                        No wait. Skips 10 seconds delay to stop script.
    
    'development' options:
      -d <images_dir>           Directory where images are located.
                                Current directory if not specify.
      -wipe                     Wipe data partitions.
    
    'tf-deploy' options:
      -lu <uboot_filename>      U-Boot file to load from USB.
                                It must be a signed bootloader image without Trusty.
      -u <uboot_filename>       U-Boot file name located at images directory.
                                It must be a signed bootloader image with Trusty.
      -p <part_table_filename>  Partition table file name located at images
                                directory.
                                'partition-table.img' if not specified.
      -d <images_dir>           Directory where images are located.
                                Current directory if not specify.
      -n                        No wait. Skips 10 seconds delay to stop script.
    
    $ 
  3. Program images in the device executing the script:

    • Program Android images. Use -wipe option to wipe data partitions:

      $ ./install_android_fw_uuu.sh development -wipe
    • Program Android images and the bootloader. This option always wipe data partitions:

      $ ./install_android_fw_uuu.sh first-deploy -u u-boot-ccimx8xsbcpro2GB-<variant>.imx

      See U-Boot files by variant to verify which U-Boot binary you need.

      1. Specify the directory where you downloaded the pre-built images with -d:

        • To flash Android images:

      $ ./install_android_fw_uuu.sh development -d <pre-built-images-folder> -wipe
      • To flash Android images and the bootloader:

      $ ./install_android_fw_uuu.sh first-deploy \
        -d <pre-built-images-folder> \
        -u u-boot-ccimx8xsbcpro2GB-<variant>.imx
      1. Uncompress the signed images zip (see Generate release custom images).

      2. Specify the directory where you extracted the ZIP file with -d to flash only Android images:

      $ ./install_android_fw_uuu.sh development -d <zip-folder>
      For a closed device, see Program a closed device.
  4. Boot from the internal eMMC.

    1. Change the boot mode configuration to boot from the internal eMMC. To do so, set the boot mode micro-switches as follows:

      • BOOT.1 OFF

      • BOOT.2 OFF

    2. Reset the device by pressing the Reset button on the board.

The first Android boot takes several minutes due to system deployment.