19
IOT: EFR32MG21 Support for OSPv2
Matthias Hofmann edited this page 2024-12-04 18:23:52 +00:00

Both currently available prpl Reference boards 'Freedom' as well as 'OSPv2' are using the same IOT solution from SiLabs, an EFR32MG.

This page describes the steps necessary to enable Thread on OSPv2. Please find the instructions for Freedom here .

Board Information

The EFR32MG21 is located together with the Wifi chip, an optional 5G modem, and the GNSS receiver on a separate daughter board (DB) that is connected to the main board (MB) via 2 highspeed connectors. You can find the version of the DB as well as the version of the MB printed on the respective PCB. A typical configuration is MB_V03 combined with DB_V02.

Please note that for OSPv2 shipped before October 2024 with a daughter board DB_V02 version the bootloader does not allow in device flashing, so the bootloader will initially need to be flashed via a Silabs Debugger. Once an appropriate bootloader has been flashed, upgrading from the Linux command line will be possible. Please see further down on this page. OSPv2 shipped in October 2024 and later have been pre-flashed with a EFR32MG21 bootloader that will allow to upgrade the EFR32MG21 from the OSPv2 Linux command line.

PIN configuration

There are 2 versions of the DB available DB_v02 which was shipped till ~Dec2024 and DB_v03 which will be shipped in 2025.

DB_V02 Pin configuration

Host Mxl25641 (MB_V03 + DB_V02)
GPIO39 EFR32 Reset
GPIO61 EFR32 recovery
GPIO66 UART1 RX
GPIO67 UART1 TX
EFR32MG21A020F512IM32
PA05 UART TX
PA06 UART RX
PB0 Recovery
RESETn Reset

Coexistence:

IOT and Wifi do share the same 2.4Ghz ISM band. This can cause performance issues for IOT. In order to address this issue a coexistence solution can be used. The Wifi PTA (Packet Traffic Arbitrator) manages the airtime between Wifi and IOT using a 3 Wire control (using GPIO pins). For OSPv2 these are the GPIO Pins used:

Mxl31712 EFR32MG21
Request IO10 PD02
Priority IO8 PD03
Grant IO07 PC01
  • Request: The IoT device signals a request for airtime to the WiFi PTA by setting the Request pin high.
  • Priority: The IoT device signals a high priority for transmitting a message by setting the Priority pin high.
  • Grant: WiFi PTA grants the IoT request by setting the Grant pin low.

Documentation on coexistence for the EFR32MG21 is available here

To enable/disable and check coexistence for the Wifi chip on OSPv2 the following commands need to be executed:

  • Enable coexistence # iw dev wlan0 iwlwav sConfigMRCoex 1 16 4 0

  • Disable coexistence # iw dev wlan0 iwlwav sConfigMRCoex 0 16 4 0

  • Check coexistence status # iw dev wlan0 iwlwav sConfigMRCoex

DB_V03 Pin configuration

will be published once these boards get shipped

OSPv2 CPU governor configuration

Unfortunately it is not possible to to use the EFR32MG21 on OSPv2 in the default board configuration with the CPU governor set to powersave.

EFR32MG21 is connected on OSPv2 with DB_v02 via UART using only RX and TX. To ensure this is connection is working stable the CPU governor has to be set to performance mode:

To set performance mode:

cpu_governor_performance

For the next batch of OSPv2 (most likely it will be called OSPv2.1) DB_v03 is used. On DB_V03 RTS and CTS are used for flow control, on that board the CPU governor can be left in powersave. Please note that on DB_V03 the UART on the MXl25641 will change too.

Flashing of the EFR32MG21 Firmware and bootloader via Silabs Debugger

Required tools

  • Si-MB4002A Wireless Pro Kit Mainboard + USB Type C cable: The Wireless Pro Kit Mainboard is a development board for application development and debugging of wireless products. It supports on-board J-Link debugger. It comes with the mini-Simplicity cable which does work on OSPv2 without the 'Debug Adapter Kit'.

  • For other Silabs debuggers like the BRD4001A a Debug Adapter Kit (SLSDA001A) is required

  • Simplicity Commander a utility that provides GUI and command line access to the debug features of an EFR32 device.

  • J-Link Driver An on-board J-link debugger that enables programming and debugging on the EFR32 device over USB. NOTE: If the J-Link appears as a generic USB BULK device in the Windows device manager, please follow the steps on the Segger WiKi to resolve this issue.

Connect debugger to OSPv2

please use the port called 'mini' on the debugger to connect the ribbon cable, and locate the 10 pin header on OSPv2.

Si-MB4002A debugger MB4002A

ribbon cable connected to the OSPv2 DB; please note the orientation of the cable and the notch ribbon cable connected to the OSPv2 DB; please note the orientation of the cable and the notch

Connect the debugger to your Laptop via a USB cable

Upgrade Bootloader and Firmware of the EFR32MG21 via Commander

Install the J-Link debugger and driver.

Connect the debugger and power it on before powering on OSPv2. Once you power on OSPv2 make sure you have a console connected, stop the boot process at the bootloader. Put the EFR32 in reset

Lightning # gpio set 39

bootloader_stop-gpio39

now unpack Simplicity Commander, and start it

start-commander

select-debugger select your debugger (in this case 440329773)

select-debug-port select the debug port - Debug Mode

Set it to MINI for the BRD4002A debugger

you may need to set it to OUT when using a debugger that requires the use of the 'Debug adapter'

Erase the flash flash-erase select Flash, then select Erase Chip, ensure that Flash was erased successfully

Select the bootloader and flash it flash-bootloader select the file bootloader-uart-xmodem_v3.s37 , click Flash, and verify that Flashing completed successfully!

Flash firmware via the debugger

Now you can flash a Firmware of your choice the same way as the bootloader. Make sure the file you select is of file type .s37

You may want to compile the Firmware yourself using Simplicity Studio. There are a couple of precompiled firmware images you can select from