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 with the image files generated by Digi Embedded for Android using U-Boot:

1. 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:

2. Establish a serial connection with your device

  1. Connect a USB serial cable to the CONSOLE connector on the board and to your host computer.

    See Step 2 - Set up the hardware for instructions.

  2. Open a serial connection with the device. You can use any serial terminal program such as Tera Term, Minicom, CoolTerm, or HyperTerminal.

    PuTTY terminal program is not recommended due to an incompatibility with the USB/serial driver.

    Open a serial connection with the following settings:

    Parameter Value

    Port

    Serial port where the device is connected

    Baud rate

    115200

    Data bits

    8

    Parity

    None

    Stop bits

    1

    Flow control

    None

3. Update firmware

You can program the firmware in the device’s eMMC from either TFTP or microSD.

Update firmware from TFTP

U-Boot bootloader allows you to update the firmware of your device over Ethernet. U-Boot uses the TFTP protocol to get the firmware images from a TFTP server running in your computer and program them into the eMMC of the device.

This update process requires a TFTP server running in your computer with a configured exposed folder. The devices look for the firmware files in this folder when performing the update. These instructions do not include setting up a TFTP server in your computer. We assume you have already installed and configured a TFTP server.

Once you have the TFTP server running in your computer, you can start the update process:

  1. Copy the Android images (previously downloaded or compiled) in your TFTP server’s exposed folder (typically /tftpboot).

  2. Reset the device (press the Reset button on the board) and immediately press a key in the serial terminal to stop the auto-boot process. You will be stopped at the U-Boot bootloader prompt:

    U-Boot SPL dub-2020.04-r2.2 (Jan 18 2021 - 15:54:04 +0000)
    Normal Boot
    Trying to boot from MMC1
    Primary set selected
    Load image from MMC/SD 0x5f400
    
    
    U-Boot dub-2020.04-r2.2 (Jan 18 2021 - 15:54:04 +0000)
    
    CPU:   NXP i.MX8QXP RevB A35 at 1200 MHz at 25C
    DRAM:  2 GiB
    MCA:   HW_VER=1  FW_VER=1.01
    MMC:   FSL_SDHC: 0, FSL_SDHC: 1
    In:    serial
    Out:   serial
    Err:   serial
    Model: Digi International ConnectCore 8X SBC Pro Board.
    ConnectCore 8X SOM variant 0x02: 2 GiB LPDDR4, Wi-Fi, Bluetooth, MCA, Crypto-auth
      Board version 3, ID 135
    Boot:  MMC0
    
     BuildInfo:
      - SCFW 56682d58, SECO-FW 0e4b9cee, IMX-MKIMAGE 8da5cd23, ATF c949a88
      - U-Boot dub-2020.04-r2.2
    
    flash target is MMC:0
    Net:   eth0: ethernet@5b040000 [PRIME], eth1: ethernet@5b050000
    Fastboot: Normal
    Normal Boot
    Hit any key to stop autoboot:  0
    => 
  3. Connect an Ethernet cable to the Ethernet port.

  4. On the target, configure the network settings of the device by doing one of the following:

    • Get a dynamic IP address from a DHCP server by running the following commands:

      => setenv autoload no
      => dhcp
    • Configure a static IP address, where a.b.c.d is the IP address of your device:

      => setenv ipaddr a.b.c.d
  5. Configure the IP address of the machine where the TFTP server is running and save the configuration as follows, where w.x.y.z is your machine IP address where the TFTP server is running:

    => setenv serverip w.x.y.z
    => env save
  6. Update the U-Boot image (optional):

    1. Execute the following command to update the U-Boot image into the eMMC:

      => update uboot tftp u-boot-ccimx8xsbcpro2GB-<variant>.imx
    2. Reset the board to boot into the recently updated U-Boot, and press any key to stop the autoboot process.

    3. Reset the U-Boot environment to default values (this will not reset protected variables like the MAC address). To do so, issue this command:

      => env default -a
    4. Configure the network and TFTP settings on your device again and save the configuration.

      => setenv ipaddr a.b.c.d
      => setenv serverip w.x.y.z
      => env save
  7. Configure the partition of the eMMC for holding Android images by running these commands:

    => setenv mmcdev 0
    => update gpt tftp partition-table.img
  8. Update partitions. Syntax for the update command is:

    => update <partition-name> tftp <filename>
    => update dtbo_a tftp dtbo-imx8qxp.img
    => update dtbo_b tftp dtbo-imx8qxp.img
    => update boot_a tftp boot.img
    => update boot_b tftp boot.img
    => update vendor_boot_a tftp vendor_boot.img
    => update vendor_boot_b tftp vendor_boot.img
    => update vbmeta_a tftp vbmeta-imx8qxp.img
    => update vbmeta_b tftp vbmeta-imx8qxp.img
    => update super tftp super.img

Update firmware from microSD

If you do not have a TFTP server, you can still program Android in your device using a microSD card. The microSD card must be FAT formatted.

Your microSD card must have at least 2 GB of capacity.

To program Android from the microSD card:

  1. Place the images in the root of the FAT formatted microSD card.

  2. Power off the device.

  3. Insert the microSD card in the microSD socket of the device.

  4. Reset the device (press the Reset button on the board) and immediately press a key in the serial terminal to stop the auto-boot process. You will be stopped at the U-Boot bootloader prompt:

    U-Boot SPL dub-2020.04-r2.2 (Jan 18 2021 - 15:54:04 +0000)
    Normal Boot
    Trying to boot from MMC1
    Primary set selected
    Load image from MMC/SD 0x5f400
    
    
    U-Boot dub-2020.04-r2.2 (Jan 18 2021 - 15:54:04 +0000)
    
    CPU:   NXP i.MX8QXP RevB A35 at 1200 MHz at 25C
    DRAM:  2 GiB
    MCA:   HW_VER=1  FW_VER=1.01
    MMC:   FSL_SDHC: 0, FSL_SDHC: 1
    In:    serial
    Out:   serial
    Err:   serial
    Model: Digi International ConnectCore 8X SBC Pro Board.
    ConnectCore 8X SOM variant 0x02: 2 GiB LPDDR4, Wi-Fi, Bluetooth, MCA, Crypto-auth
      Board version 3, ID 135
    Boot:  MMC0
    
     BuildInfo:
      - SCFW 56682d58, SECO-FW 0e4b9cee, IMX-MKIMAGE 8da5cd23, ATF c949a88
      - U-Boot dub-2020.04-r2.2
    
    flash target is MMC:0
    Net:   eth0: ethernet@5b040000 [PRIME], eth1: ethernet@5b050000
    Fastboot: Normal
    Normal Boot
    Hit any key to stop autoboot:  0
    => 
  5. Update the U-Boot image (optional):

    1. Run the following command to update U-Boot into the eMMC:

      => update uboot mmc 1 u-boot-ccimx8xsbcpro2GB-<variant>.imx
    2. Reset the board to boot into the recently updated U-Boot, and press any key to stop the autoboot process.

    3. Reset the U-Boot environment to default values (this will not reset protected variables like the MAC address). To do so, issue this command:

      => env default -a
    4. Save the U-Boot environment to apply the default configuration.

      => env save
  6. Configure the partition of the eMMC for holding Android images by running these commands:

    => setenv mmcdev 0
    => update gpt mmc 1 partition-table.img
  7. Update partitions. Syntax for the update command is:

    => update <partition-name> mmc 1 <filename>
    => update dtbo_a mmc 1 dtbo-imx8qxp.img
    => update dtbo_b mmc 1 dtbo-imx8qxp.img
    => update boot_a mmc 1 boot.img
    => update boot_b mmc 1 boot.img
    => update vendor_boot_a mmc 1 vendor_boot.img
    => update vendor_boot_b mmc 1 vendor_boot.img
    => update vbmeta_a mmc 1 vbmeta-imx8qxp.img
    => update vbmeta_b mmc 1 vbmeta-imx8qxp.img
    => update super mmc 1 super.img

4. Format data partition

You can format the data partition or directly boot the new firmware:

  • To clean the data partition, enter these commands in U-Boot:

    => bcb load 0 misc
    => bcb set command boot-recovery
    => bcb set recovery "recovery:--wipe_data"
    => bcb store
    => reset

    This process boots your device into recovery mode, formats the data partition, and reboots your device.

  • If data partition is already formatted or you want to preserve their contents, boot the device with the firmware you have just programmed:

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