CHIP EFR32 OTA Requestor Example

An example showing the use of the Matter OTA Requestor functionality on the Silicon Labs EFR32 MG12.

Introduction

The EFR32 OTA Requestor example provides a baseline demonstration the Matter OTA Requestor functionality built with the Silicon Labs gecko SDK. It can be controlled by a Chip controller over OpenThread network.

Building

For initial setup steps please see the CHIP EFR32 Lighting Example README at examples/lighting-app/efr32/README.md

  • Supported hardware:

    MG12 boards:

    • BRD4161A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm
    • BRD4164A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm
    • BRD4166A / SLTB004A / Thunderboard Sense 2 / 2.4GHz@10dBm
    • BRD4170A / SLWSTK6000B / Multiband Wireless Starter Kit / 2.4GHz@19dBm, 915MHz@19dBm
    • BRD4304A / SLWSTK6000B / MGM12P Module / 2.4GHz@19dBm

    MG21 boards: Currently not supported due to RAM limitation.

    • BRD4180A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm

    MG24 boards :

    • BRD4186A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm
    • BRD4187A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm
  • Build the example application:

      cd ~/connectedhomeip
      ./scripts/examples/gn_efr32_example.sh  ./examples/ota-requestor-app/efr32/ ./out/ota-requestor-app BRD4161A
    
  • To delete generated executable, libraries and object files use:

      $ cd ~/connectedhomeip
      $ rm -rf ./out/
    

Flashing the Application

  • On the command line:

      $ cd ~/connectedhomeip/out/ota-requestor-app/BRD4161A
      $ python3 chip-efr32-ota-requestor-example.flash.py
    
  • Or with the Ozone debugger, just load the .out file.

Viewing Logging Output

See examples/lighting-app/efr32/README.md

Running the OTA Download scenario

  • Bring up the OpenThread Border Router as discussed in examples/lighting-app/efr32/README.md and get its operational dataset.

  • On a Linux or Darwin platform build the chip-tool and the ota-provider-app as follows:

       scripts/examples/gn_build_example.sh examples/chip-tool out/
       scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/debug chip_config_network_layer_ble=false
    
  • Build or download the Gecko Bootloader binary. Bootloader should be built with the Gecko SDK version 3.2.1 or earlier, type “external SPI” configured with a single slot of at least 1000 KB. Pre-built binaries should be available in

       third_party/efr32_sdk/repo/platform/bootloader/sample-apps/bootloader-storage-spiflash-single
    
  • Using the commander tool upload the bootloader to the device running the requestor application.

  • Create a bootable image file:

       commander gbl create chip-efr32-ota-requestor-example.gbl --app chip-efr32-ota-requestor-example.s37
    
  • In a terminal start the provider app passing to it the path to the bootable image file created in the previous step:

       ./out/debug/chip-ota-provider-app -f chip-efr32-ota-requestor-example.gbl
    
  • In a separate terminal run the chip-tool commands to provision the Provider:

         rm -r /tmp/chip_*
         ./out/chip-tool pairing onnetwork 1 20202021
    
  • If the Requestor had been previously commissioned hold Button 0 for six seconds to factory-reset the device.

  • In the chip-tool terminal enter:

        ./out/chip-tool pairing ble-thread 2 hex:<operationalDataset> 20202021 3840
    

where operationalDataset is obtained from the OpenThread Border Router.

  • Once the commissioning process completes enter:

        ./out/chip-tool otasoftwareupdaterequestor announce-ota-provider 1 0 0 0 2 0
    
  • The Requestor will connect to the Provider and start the image download. Once the image is downloaded the Requestor will reboot into the downloaded image.