Update firmware from TFTP

U-Boot bootloader allows you to update the firmware of your ConnectCore 6 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.

Note See supported software to verify that your hardware is compatible with Android Lollipop.

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 firmware files (previously downloaded or compiled) in your TFTP server's exposed folder (typically /tftpboot):
    • <u-boot-file>.imx
    • boot.img
    • system.img
    • recovery.img
    After building the Android firmware, you can find the image files inside the sources directory at:
    out/target/product/imx6_ccimx6_sbc
  2. Connect the serial adapter cable to the console port [CONS] and a serial cable from the adapter to the development computer.
  3. Open a serial connection to the serial port to which the ConnectCore 6 is connected. Use the following settings:
    • Port: Serial port to which ConnectCore 6 SBC is attached
    • Baud rate: 115200
    • Data Bits: 8
    • Parity: None
    • Stop Bits: 1
    • Flow control: None
  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 dub-2015.04-r8.3+g0de0373ade (Apr 23 2017 - 22:26:53)

CPU:   Freescale i.MX6Q rev1.5 1200 MHz (running at 792 MHz)
CPU:   Extended Commercial temperature grade (-20C to 105C) at 48C
Reset cause: POR
I2C:   ready
DRAM:  1 GiB
MMC:   FSL_SDHC: 0 (eMMC), FSL_SDHC: 1
In:    serial
Out:   serial
Err:   serial
ConnectCore 6 SOM variant 0x02: Consumer quad-core 1.2GHz, 4GB eMMC, 1GB DDR3, -20/+70C, Wireless, Bluetooth, Kinetis
Board: ConnectCore 6 SBC, version 3, ID 129
Boot device: MMC4
PMIC:  DA9063, Device: 0x61, Variant: 0x60, Customer: 0x00, Config: 0x56
Net:   FEC [PRIME]
Normal Boot
Hit any key to stop autoboot:  0
=>
=>
  1. Configure the network settings of the ConnectCore 6 device by doing one of the following:
    • Use a DHCP server executing the dhcp command:
      => dhcp
    • Configure a static IP address, where a.b.c.d is the IP address of your ConnectCore 6 device:
      => setenv ipaddr a.b.c.d
  2. Configure the IP address of the machine where the TFTP server is running and save the configuration. In this example, w.x.y.z is your machine IP address where the TFTP server is running:
    => setenv serverip w.x.y.z
    => saveenv
  3. Optional. Update the U-Boot image:
    1. Execute the following command to update the U-Boot image:
      => update uboot tftp <u-boot-file>.imx

      See hardware variants to verify which U-Boot binary you need.

    2. Reset the board to boot into the recently updated U-Boot, and press any key to stop the auto-boot 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 ConnectCore 6 device again and save the configuration. Follow the instructions to configure network settings and IP address.
  4. Configure the partition of the eMMC to hold Android images by running these commands:
    => setenv mmcdev 0
    => run partition_mmc_android
  5. Update the kernel image by executing this command:
    => update boot tftp boot.img
  1. Update the Android file system image by issuing this command:
    => update system tftp system.img
  2. Update the recovery image by executing this command:
  3. => update recovery tftp recovery.img
  4. Wait until this process finishes to force the format of cache and data partitions:
  5. => bootargs_once="androidboot.cache=format androidboot.data=format"

    Note If the cache and data partitions are already formatted or you want to preserve their contents, you can skip this command.

  6. Boot the device with the firmware you have just programmed:
    => boot

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