Digi Embedded Yocto generates installer scripts to facilitate the deployment of firmware images onto the device.

The Digi Embedded Yocto installers:

  • reset the U-Boot environment and the partition table

  • erase your NAND, including the data partition

The installers are designed for a clean installation. See Update firmware for other methods to updating the system without changing the partition table or removing user data.

If the data partition is erased and the device was provisioned in Remote Manager, the target won’t be able to connect to Remote Manager until you reset the certificate. See Reset the device’s client-side certificate to know how to reset the client-side certificate from Remote Manager interface.

There are multiple methods of programming the firmware to the target:

Program the firmware using UUU

Fastboot is a protocol for communication between your device and a computer. It allows you to modify file system images over a USB connection, which is a quick way to update firmware during development. Fastboot requires the USB interface to work as 'device'.

Although it was originally developed for Android images, its implementation on the NXP UUU (Universal Update Utility) tool extends the functionality to any file type.

If you are running Windows Subsystem for Linux (WSL), you may need to perform additional configurations to program the firmware using UUU. Refer to https://learn.microsoft.com/en-us/windows/wsl/connect-usb for more information.
  1. Decompress the zip file in a directory of your choice.

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

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

  4. 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
  5. In addition to the console cable, connect a micro USB cable to your development PC and the other end to the device’s {fastboot-usb-connector} connector.

  6. On the target, in U-Boot, execute the following command:

    => fastboot 0
  7. On your host computer, change to the directory where you extracted the ZIP file:

    $ cd <zip-folder>
  8. Run the install_linux_fw_uuu.sh script with -h parameter to check the syntax:

    $ ./install_linux_fw_uuu.sh -h
    ############################################################
    #           Linux firmware install through USB OTG         #
    ############################################################
    Usage: ./install_linux_fw_uuu.sh [options]
    
      Options:
       -a <atf-filename>      Arm-trusted-firmware filename.
                              Auto-determined by variant if not provided.
       -b                     Activate bootcount mechanism (3 boot attempts).
       -d                     Install firmware on dualboot partitions (system A and system B).
                              (Implies -b).
       -f <fip-filename>      FIP filename.
                              Auto-determined by variant if not provided.
       -h                     Show this help.
       -i <dey-image-name>    Image name that prefixes the image filenames, such as 'dey-image-qt',
                              'dey-image-webkit', 'core-image-base'...
                              Defaults to 'core-image-base' if not provided.
       -n                     No wait. Skips 10 seconds delay to stop script.
  9. To program the default image files (core-image-base):

    $ ./install_linux_fw_uuu.sh

    If your SOM has a U-Boot v2021.10-r3 or older, the install process programs the new U-Boot but fails immediately after booting it. This is due to the reworked NAND partition layout on U-Boots newer than v2021.10-r3. Press Ctrl+C on your host to cancel the script, run fastboot 0 again on the target, and retry.

    For more information, check Storage layout

  10. Once the firmware is installed, the device boots automatically. The default username is root with no password.

Program the firmware using uSD card

  1. Decompress the ZIP file.

  2. Place the decompressed files in the root of a FAT-formatted microSD card and insert it in the microSD socket of the board.

  3. Check the U-Boot version on the console boot banner. If the version is dub-2021.10-r2.1 or older, manually update the fsbl1 and fip-a partitions first. You can skip this step if you have a newer U-Boot version:

    => update fsbl1 mmc 0 tf-a-ccmp13-dvk-<ram_size>-optee-nand.stm32
    => update fip-a mmc 0 fip-ccmp13-dvk-<ram_size>-optee-nand.bin
    => reset

    After the device reboots, press any key in the serial terminal to stop the auto-boot process.

  4. To install the default firmware images (core-image-base) into the internal NAND, run the following command:

    => run install_linux_fw_sd

    To program other images, set the variable image-name to the DEY image name (such as dey-image-webkit or core-image-base) before running the script.

    => setenv image-name core-image-base
    => run install_linux_fw_sd

    If your SOM has a U-Boot v2021.10-r3 or older, the install process programs the new U-Boot but fails immediately after booting it. This is due to the reworked NAND partition layout on U-Boots newer than v2021.10-r3. Execute run install_linux_fw_sd again on the target to retry the command with the new U-Boot.

    For more information, check Storage layout

  5. Once the firmware is installed, the device boots automatically. The default username is root with no password.

    During installation, error messages appear when the installation process attempts to override MAC addresses. These messages are expected.

    ## Resetting to default environment
    oldval: 00:40:9D:7D:17:9A  defval: 00:04:f3:ff:ff:fa
    ## Error: Can't overwrite "ethaddr"
    himport_r: can't insert "ethaddr=00:04:f3:ff:ff:fa" into hash table
    oldval: 00:40:9D:7D:17:9B  defval: 00:04:f3:ff:ff:fb
    ## Error: Can't overwrite "eth1addr"
    himport_r: can't insert "eth1addr=00:04:f3:ff:ff:fb" into hash table
    oldval: 00:40:9D:7D:17:9C  defval: 00:04:f3:ff:ff:fc
    ## Error: Can't overwrite "wlanaddr"
    himport_r: can't insert "wlanaddr=00:04:f3:ff:ff:fc" into hash table
    oldval: 00:40:9D:7D:17:9D  defval: 00:04:f3:ff:ff:fd
    ## Error: Can't overwrite "btaddr"
    himport_r: can't insert "btaddr=00:04:f3:ff:ff:fd" into hash table

Program the firmware using USB mass storage

Follow these steps to install Yocto in the device:

  1. Decompress the ZIP file.

  2. Place the decompressed files in the root of a FAT-formatted USB mass storage and insert it in the USB host connector of the board.

  3. To install the default firmware images (core-image-base) into the internal NAND, run the following command:

    => run install_linux_fw_usb

    To program other images, set the variable image-name to the DEY image name (such as dey-image-webkit or core-image-base) before running the script.

    => setenv image-name core-image-base
    => run install_linux_fw_usb

    If your SOM has a U-Boot v2021.10-r3 or older, the install process programs the new U-Boot but fails immediately after booting it. This is due to the reworked NAND partition layout on U-Boots newer than v2021.10-r3. Execute run install_linux_fw_usb again on the target to retry the command with the new U-Boot.

    For more information, check Storage layout

  4. Once the firmware is installed, the device boots automatically. The default username is root with no password.

    During installation, error messages appear when the installation process attempts to override MAC addresses. These messages are expected.

    ## Resetting to default environment
    oldval: 00:40:9D:7D:17:9A  defval: 00:04:f3:ff:ff:fa
    ## Error: Can't overwrite "ethaddr"
    himport_r: can't insert "ethaddr=00:04:f3:ff:ff:fa" into hash table
    oldval: 00:40:9D:7D:17:9B  defval: 00:04:f3:ff:ff:fb
    ## Error: Can't overwrite "eth1addr"
    himport_r: can't insert "eth1addr=00:04:f3:ff:ff:fb" into hash table
    oldval: 00:40:9D:7D:17:9C  defval: 00:04:f3:ff:ff:fc
    ## Error: Can't overwrite "wlanaddr"
    himport_r: can't insert "wlanaddr=00:04:f3:ff:ff:fc" into hash table
    oldval: 00:40:9D:7D:17:9D  defval: 00:04:f3:ff:ff:fd
    ## Error: Can't overwrite "btaddr"
    himport_r: can't insert "btaddr=00:04:f3:ff:ff:fd" into hash table