Select pre-built NCP firmware images and flashing instructions are provided here to jump-start your OpenThread development. All binaries are the example platform builds featured in the GitHub repository.
Nordic Semiconductor nRF52840
Use an i386- or x86-based Linux machine to flash the downloaded nRF52840 firmware image to the nRF52840 board. A Micro-USB to USB is required to attach the board to the Linux machine for flashing and the host development board for operation.
Download nRF52840 firmware image
The pre-built nRF52840 firmware image is a
.hex file. Download and extract it
This nRF52840 firmware image is built with the following build switches:
BORDER_AGENT=1 BORDER_ROUTER=1 COMMISSIONER=1 UDP_PROXY=1 USB=1
USB=1 switch enables native USB CDC ACM as a serial
Install SEGGER J-Link
Use SEGGER J-Link to program the nRF52840 board, which has an onboard JTAG
module. Download and install SEGGER J-Link on your Linux machine by extracting
the package into
Install nRF5x Command Line Tools
The nRF5x Command Line Tools flash the OpenThread binary to the nRF52840 board.
Install the appropriate
build on your Linux machine. Place the extracted package in the root folder of
Flash the nRF52840
- Attach the USB cable to the Micro-USB debug port next to the external power
pin on the nRF52840 board, and then attach the USB end to the Linux machine.
Set the nRF power source switch on the nRF52840 board to VDD. When
- Verify that the board is attached by checking for serial ports starting with
/dev/ttyACM*(all nRF52840 boards use
ttyACMas their serial port identifier). The board appears as
/dev/ttyACM0if it's the only nRF52840 board attached to the Linux machine:
- Note the serial number of the nRF52840 board:
- Navigate to the location of the nRFx Command Line Tools, and flash the
ot-ncp-ftd-g0c07c53c-nrf52840.hexfile onto the nRF52840 board, using the board's serial number:
./nrfjprog -f nrf52 -s 683704924 --chiperase --program \
LED5on the nRF52840 board briefly turns off during flashing. The following output is generated upon success:
Parsing hex file. Erasing user available code and UICR flash areas. Applying system reset. Checking that the area to write is not protected. Programing device. Applying system reset. Run.
Connect the nRF52840
Because the OpenThread NCP firmware image provided here enables use of native USB CDC ACM as a serial transport, you must use the nRF USB port on the nRF52840 board to communicate with the NCP host board.
- Eject the device from the Linux machine and detach the USB cable from both the Linux machine and the debug port of the nRF52840 board.
- Attach the USB cable to the Micro-USB nRF USB port next to the RESET button on the nRF52840 board. Set the nRF power source switch on the nRF52840 board to USB.
- Attach the USB end of the USB cable to your NCP host board (for example, a Raspberry Pi 3B).
The Zolertia Firefly features the Texas Instruments CC2538 SoC. Use a Linux machine to flash the downloaded CC2538 firmware image to the Firefly USB stick.
Download CC2538 firmware image
The pre-built CC2538 firmware image is a
.bin file. Download and extract it in
This CC2538 firmware image is built with the following build switches:
TMF_PROXY=1 BORDER_ROUTER=1 COMMISSIONER=1
A Python serial bootloader script is used to flash the Firefly.
- Install required packages:
sudo apt-get update
sudo apt-get install python-pip
pip install python-magic
- Clone the Python CC2538 serial bootloader into your root directory:
git clone --recursive https://github.com/JelmerT/cc2538-bsl
Flash the Firefly
- Insert the Zolertia Firefly USB stick into a USB port on your Linux machine.
- Verify that the Firefly is attached by checking for serial ports starting
/dev/ttyUSB*(all Firefly USB sticks use
ttyUSBas their serial port identifier). The board appears as
/dev/ttyUSB0if it's the only serial device attached to the Linux machine:
- Flash the downloaded
ot-ncp-ftd-g0c07c53c-cc2538.binfile onto the Firefly USB stick:
python ~/cc2538-bsl/cc2538-bsl.py -e -w -v -p /dev/ttyUSB0 \
-a 0x00200000 ~/Downloads/ot-ncp-ftd-g0c07c53c-cc2538.bin
Connect the Firefly
- Eject the device from the Linux machine and remove the Firefly USB stick.
- Insert the Firefly USB stick into a USB port on your target NCP host device (for example, a Raspberry Pi 3B).