# First-time firmware installation procedure - [NodeMCU](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#nodemcu) (ESP8266) - [ESP32](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#esp32) - [ESP32-S3](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#esp32-s3) - [ESP32-S2](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#esp32-s2) - [ESP32-C6](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#esp32-c6) - [ESP32-C3](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#esp32-c3) - [S76G](https://github.com/lyusupov/SoftRF/wiki/AcSiP-S7xG-flashing-instructions#s76g) (STM32L073) - [CC1352R](https://github.com/lyusupov/SoftRF/wiki/Uni-Edition.-Firmware-maintenance-procedures#initial-installation) - [CubeCell](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#cubecell) (ASR650x) - [nRF52840](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#nrf52840) - [LPC4320](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#lpc4320) - [ASR6601](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#asr6601) - [RP2040](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#rp2040) - [STM32WLE5](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#stm32wle5) ## List by Model Model|Instructions|Firmware folder ---|:---:|:---: [Standalone Edition](https://github.com/lyusupov/SoftRF/wiki/Standalone-Edition)|[NodeMCU](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#nodemcu)
[ESP32-C3](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#esp32-c3)
[ESP32-C6](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#esp32-c6)|[NodeMCU](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/NodeMCU/SoftRF)
[ESP32C3](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32C3/SoftRF)
[ESP32C6](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32C6/SoftRF) [Prime Edition Mk2](https://github.com/lyusupov/SoftRF/wiki/Prime-Edition-MkII)|[ESP32](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#esp32)|[ESP32](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32/SoftRF) [Prime Edition Mk3](https://github.com/lyusupov/SoftRF/wiki/Prime-Edition-MkIII)|[ESP32-S3](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#esp32-s3)|[ESP32S3](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32S3/SoftRF/MassStorage) [Ham Edition](https://github.com/lyusupov/SoftRF/wiki/Ham-Edition)|[ESP32-S3](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#esp32-s3)|[ESP32S3](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32S3/SoftRF/MassStorage) [Midi Edition](https://github.com/lyusupov/SoftRF/wiki/Midi-Edition)|[ESP32-S3](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#esp32-s3)|[ESP32S3](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32S3/SoftRF/MassStorage) [Badge Edition](https://github.com/lyusupov/SoftRF/wiki/Badge-Edition)|[nRF52840](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#nrf52840)|[nRF52840](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/nRF52840) [Dongle Edition](https://github.com/lyusupov/SoftRF/wiki/Dongle-Edition)|[S76G](https://github.com/lyusupov/SoftRF/wiki/AcSiP-S7xG-flashing-instructions#s76g)|[S76G](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/STM32/S76G) [ES Edition](https://github.com/lyusupov/SoftRF/wiki/ES-Edition)|[LPC4320](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#lpc4320)|[LPC4320](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/LPC4320) [Lego Edition](https://github.com/lyusupov/SoftRF/wiki/Lego-Edition)|[RP2040](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#rp2040)|[RP2040](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/RP2040/SoftRF) [Balkan Edition](https://github.com/lyusupov/SoftRF/wiki/Balkan-Edition)|[STM32WLE5](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#stm32wle5)|[STM32WLE5](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/STM32/WLE5) [Uni Edition](https://github.com/lyusupov/SoftRF/wiki/Uni-Edition)|[CC1352R](https://github.com/lyusupov/SoftRF/wiki/Uni-Edition.-Firmware-maintenance-procedures#initial-installation)|[CC1352](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/CC13XX/CC1352) [Mini Edition](https://github.com/lyusupov/SoftRF/wiki/Mini-Edition)|[CubeCell](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#cubecell)|[ASR650x](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ASR650x) [Octave Concept](https://github.com/lyusupov/SoftRF/wiki/Octave-Concept)|[ASR6601](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#asr6601)|[ASR6601](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ASR6601) [Raspberry Edition](https://github.com/lyusupov/SoftRF/wiki/Raspberry-Edition)||[RaspberryPi](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/RaspberryPi) [UAV Edition](https://github.com/lyusupov/SoftRF/wiki/UAV-Edition)|[NodeMCU](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#nodemcu)|[NodeMCU](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/NodeMCU/SoftRF) [Academy Edition](https://github.com/lyusupov/SoftRF/wiki/Academy-Edition)|N/A1|N/A1 1 - since primary purpose of the **Academy Edition** is education - we do not provide firmware binaries for this model. Students and a teacher are responsible to [build and install the SoftRF firmware](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/source/README.md) ( [SAMD21](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/source#samd21) or [RA4M1](https://github.com/lyusupov/SoftRF/edit/master/software/firmware/source#ra4m1) ) from source code by themselves.

Model|Instructions|Firmware folder ---|:---:|:---: [SkyView EZ](https://github.com/lyusupov/SoftRF/wiki/SkyView-EZ)|[ESP32](https://github.com/lyusupov/SoftRF/wiki/SkyView.-Quick-start)|[ESP32](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32/SkyView) [SkyView Pico](https://github.com/lyusupov/SoftRF/wiki/SkyView-Pico)|[RP2040](https://github.com/lyusupov/SoftRF/wiki/SkyView-Pico.-Quick-start#raspberry-pico-w)
[ESP32-S3](https://github.com/lyusupov/SoftRF/wiki/SkyView-Pico.-Quick-start#banana-bpi-picow-s3)|[RP2040](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/RP2040/SkyView)
[ESP32S3](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32S3/SkyView) [WebTop Serial](https://github.com/lyusupov/SoftRF/wiki/WebTop-Serial-adapter)|[NodeMCU](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries#nodemcu)|[NodeMCU](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/NodeMCU/WebTop) [WebTop USB](https://github.com/lyusupov/SoftRF/wiki/WebTop-USB)|[ESP32-S2](https://github.com/lyusupov/SoftRF/blob/master/software/firmware/binaries/README.md#esp32-s2)|[ESP32S2](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32S2/WebTop) [USB to Bluetooth](https://github.com/lyusupov/SoftRF/wiki/USB-to-Bluetooth-adapter)|[XIAO](https://github.com/lyusupov/SoftRF/wiki/USB-to-Bluetooth-adapter#quick-start)|[SAMD21](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/SAMD21/USB_Bluetooth)
## NodeMCU ### Select NodeMCU COM port ![](https://github.com/lyusupov/SoftRF/blob/master/documents/images/NodeMCU-Flasher-1.GIF) ### Select firmware file ![](https://github.com/lyusupov/SoftRF/blob/master/documents/images/NodeMCU-Flasher-2.GIF) ### Start flashing cycle ![](https://github.com/lyusupov/SoftRF/blob/master/documents/images/NodeMCU-Flasher-3.GIF) ### Wait for completion ![](https://github.com/lyusupov/SoftRF/blob/master/documents/images/NodeMCU-Flasher-4.GIF) ## ESP32 1. Take ESP32 flash download tool from this location: http://www.espressif.com/en/support/download/other-tools
You might also need to install: * a [driver for the CP210X USB to UART bridge from Silicon Labs](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers) or * [CH9102F driver](https://github.com/Xinyuan-LilyGO/CH9102_Driver)
prior to first use of the ESP32 tool ; 2. Download an appropriate version of SoftRF firmware from [this location](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32) and unzip the archive ; 3. Select COM port, enter partition files and addresses, select options ;
Here is an example:
![](https://github.com/lyusupov/SoftRF/raw/master/documents/images/ESP32-Flasher-1.JPG) 4. Press **START** button and wait for completion. For some boards you may need to push **BOOT** button in order to activate flash download mode.
"Stock" modules may also require to apply full flash memory erase (use **ERASE** UI "button") prior to first flashing with SoftRF's firmware.
One may need to reduce BAUD rate down to 115200 bps.
## CubeCell 1. Take **CubeCellflash** for Windows _(Linux and MacOS variants are also available there)_ download tool from this location: https://resource.heltec.cn/download/
You might also need to install a [driver for the CP210X USB to UART bridge from Silicon Labs](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers) prior to first use of the CubeCellflash tool ; 2. Download an appropriate version of SoftRF firmware from [this location](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ASR650x) and unzip the archive ; ![](https://github.com/lyusupov/SoftRF/blob/master/documents/images/Mini-1.jpg) 3. Use Windows command line tool to execute firmware flashing procedure as follows: ![](https://github.com/lyusupov/SoftRF/blob/master/documents/images/Mini-2.jpg)
## nRF52840 The T-Echo board typically comes with factory pre-installed [Adafruit_nRF52_Bootloader](https://github.com/adafruit/Adafruit_nRF52_Bootloader).
The Bootloader is capable to self-program an application firmware into the device. In order to simplify the firmware transfer, the bootloader emulates a "USB Mass Storage" interface. 1. Download an appropriate version of SoftRF firmware from [this location](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/nRF52840/SoftRF/MassStorage) ; 2. Connect the SoftRF Badge Edition device to your PC by means of a USB cable (Type-A <-> Type-C) ; 3. Double click (within 0.5 seconds) onto the SoftRF device RESET button (LilyGO T-Echo or Heltec T114) or connect twice (within 0.5 seconds) the USB cable while holding the device button been pressed (Seeed T1000-E).
        A virtual disk with a device specific label should appear in your "File manager" afterwards.
        For **LilyGO T-Echo** the label is   **TECHOBOOT** (or **NRF52BOOT**)
        For **Seeed T1000-E**                     **T1000-E**
        For **Heltec T114**                           **HT-n5262**
4. Drag the downloaded firmware file by your pointing device (mouse, trackball,...) , then drop it into **TECHOBOOT** / **NRF52BOOT** / **T1000-E** / **HT-n5262** disk. Wait until the file transfer is complete.

## LPC4320 For Linux and Mac OS X users, you will need a few tools installed on your computer before you begin: * [dfu-util](http://dfu-util.sourceforge.net/) 0.8 or newer - Used to load and run the stock HackRF One firmware from RAM. dfu-util 0.8 is recommended, as it is the most extensively tested with the HackRF One hardware and build software. * [hackrf](https://github.com/greatscottgadgets/hackrf) - All you need is the host tools, specifically, hackrf_spiflash. ### Backup of factory firmware ``` $ hackrf_spiflash -v -r HackRF_One_factory_firmware.bin Reading 256 bytes from 0x000000. Reading 256 bytes from 0x000100. < ... skipped ... > $ ls -la HackRF_One_factory_firmware.bin -rw-r--r-- 1 pi pi 1048576 Nov 4 10:18 HackRF_One_factory_firmware.bin ``` ### Flashing 1. Download an appropriate version of SoftRF firmware from [this location](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/LPC4320) ; 2. Plug the HackRF One into a PC USB slot while holding down DFU button (the button closer to antenna jack). Release the DFU button, then execute: ``` $ dfu-util -D hackrf_one_usb.dfu --reset $ hackrf_spiflash -v -w SoftRF-firmware-v1.1-LPC4320.bin ``` ### Restore of HackRF One firmware Plug the HackRF One into a PC USB slot while holding down DFU button (the button closer to antenna jack). Release the DFU button, then execute: ``` $ dfu-util -D hackrf_one_usb.dfu --reset $ hackrf_spiflash -v -w HackRF_One_factory_firmware.bin ```
## ASR6601 1. Download an appropriate version of SoftRF firmware from [this location](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ASR6601) ; 2. Take a copy of **tremo_loader.py** script from [ASR SDK](https://github.com/asrlora/asr_lora_6601/raw/master/build/scripts/tremo_loader.py) ; 3. Connect an appropriate USB-Serial adapter to ASR6601 MCU pins as follows: Adapter|MCU ---|--- GND|GND 3V3|VCC TX|GPIO16 RX|GPIO17 DTR 2|GPIO2 RTS|RESET 2 - certain USB-Serial adapters may require to **invert DTR** signal either in hardware or in the Python script.
4. Plug the USB-Serial adapter into spare USB slot of your PC ; 5. Use the loader tool to read the serial number of the MCU. This is a safety action to make sure that all the connections are good ; ``` $ python tremo_loader.py --port /dev/ttyUSB0 read_sn Connecting... Connected The SN is: 0c15458cc5fb3201 ``` 6. Write the SoftRF firmware binary into flash memory of the ASR6601. ``` $ python tremo_loader.py --port /dev/ttyUSB0 flash 0x08000000 SoftRF-firmware-v1.1-ASR6601.bin Connecting... Connected ('send: ', 512) ('send: ', 1024) ('send: ', 1536) ('send: ', 2048) ('send: ', 2560) ('send: ', 3072) < ... skipped ... > ('send: ', 102400) ('send: ', 102912) ('send: ', 103228) Download files successfully ```
## RP2040 Every RAK11310 WisBlock Core module has built-in (ROM) bootloader.
The bootloader is capable to self-program an application firmware into the device. In order to simplify the firmware transfer, the bootloader emulates a "USB Mass Storage" interface. 1. Download an appropriate version of SoftRF firmware from [this location](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/RP2040/SoftRF) ; 2. Plug RAK11310 WisBlock Core module into RAK5005-O WisBlock Base ; 3. Connect the RAK5005-O to your PC by means of a USB cable (Type-A <-> micro Type-B) ; 4. Press and keep holding BOOT button of RAK11310 Core module ; 5. Press and release RESET button on RAK5005-O Base ; 6. Release BOOT button of RAK11310 module. A virtual disk with **RPI-RP2** label should appear in your "File manager" afterwards ; 7. Drag the downloaded firmware file by your pointing device (mouse, trackball,...) , then drop it into **RPI-RP2** disk. Wait until the file transfer is complete.

## ESP32-S2 1. Take **esptool-v4.4-win64.zip** flash tool for Windows from this location: [https://github.com/espressif/esptool/releases/tag/v4.4](https://github.com/espressif/esptool/releases/tag/v4.4) and unzip the archive ; 2. Download an appropriate version of WebTop firmware from [this location](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32S2/WebTop) and unzip the archive ; 3. Connect the ESP32-S2 board into spare USB slot of your Windows PC ; 4. Press and keep holding BOOT button of the ESP32-S2 board ; 5. Press and release RESET button on the ESP32-S2 board ; 6. Release BOOT button of the ESP32-S2 board. A virtual COM port should appear in "Device Manager" afterwards ; 7. Execute **essptool.exe** utility as folows :
![](https://github.com/lyusupov/SoftRF/raw/master/documents/images/WebTop-9.jpg)
## STM32WLE5 1. Take pre-built **OpenOCD** tool for Windows from this location: https://gnutoolchains.com/arm-eabi/openocd/ and extract the archive ; 2. Download an appropriate version of SoftRF firmware from [this location](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/STM32/WLE5) ; 3. Connect the SoftRF Balkan Edition device to your PC by means of a USB cable ; 4. Use Windows command line tool to execute firmware flashing procedure as follows: ``` C:\OpenOCD-20211118-0.11.0>.\bin\openocd.exe -f interface/cmsis-dap.cfg -c "cmsis_dap_vid_pid 0x15ba 0x0044" -c "transport select swd" -c "adapter speed 4000" -f "target/stm32wlx.cfg" -c "program SoftRF-firmware-v1.2-WLE5.bin 0x08000000" ``` Example:
![](https://github.com/lyusupov/SoftRF/blob/master/documents/images/Balkan-7.jpg)
## ESP32-S3 The T-Beam Supreme board typically comes with factory pre-installed [**TinyUF2** bootloader](https://github.com/adafruit/tinyuf2/tree/master/ports/espressif#readme).
The Bootloader is capable to self-program an application firmware into the device. In order to simplify the firmware transfer, the bootloader emulates a "USB Mass Storage" interface. 1. Download an appropriate version of SoftRF firmware from [this location](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32S3/SoftRF/MassStorage) and extract the archive ; 2. Connect the SoftRF device to your PC by means of a USB cable (Type-A <-> Type-C) ; 3. Press and release RESET button of the SoftRF device. Immediately (within 1 second) press and release the BOOT button. One should see this message on the OLED display.      For **T-Beam Supreme**: ![](https://github.com/lyusupov/SoftRF/blob/master/documents/images/Prime3-1.jpg)      For **T-TWR Plus**:      This white LED on the **Heltec Tracker** will start to flicker:
        A virtual disk with a device specific label should appear in your "File manager" afterwards.
        For **T-Beam Supreme** the label is   **TBEAMBOOT**
        For **T-TWR Plus**                               **TWRBOOT**
        For **Heltec Tracker**                           **HTBOOT**
4. Drag the downloaded .uf2 firmware file by your pointing device (mouse, trackball,...) , then drop it into **TBEAMBOOT** / **TWRBOOT** / **HTBOOT** disk. Wait until the file transfer is complete.

## ESP32-C3 1. Take ESP32 flash download tool from this location: http://www.espressif.com/en/support/download/other-tools
2. Download an appropriate version of SoftRF firmware from [this location](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32C3/SoftRF) and unzip the archive ;
3. Connect the ESP32-C3 based device to your PC by means of a USB cable ; 4. Execute the tool; Select **ESP32-C3** Chip Type, **Develop** WorkMode and **UART** LoadMode ;
5. Select COM port, enter partition files and addresses, select options ;
Here is an example:
![](https://github.com/lyusupov/SoftRF/raw/master/documents/images/Standalone-ESP32C3-3.jpg) 6. Press **START** button and wait for completion. "Stock" devices may also require to apply full flash memory erase (use **ERASE** UI "button") prior to first flashing with SoftRF's firmware.
## ESP32-C6 1. Take ESP32 flash download tool from this location: http://www.espressif.com/en/support/download/other-tools
2. Download an appropriate version of SoftRF firmware from [this location](https://github.com/lyusupov/SoftRF/tree/master/software/firmware/binaries/ESP32C6/SoftRF) and unzip the archive ;
3. Connect the ESP32-C6 based device to your PC by means of a USB cable ; 4. Execute the tool; Select **ESP32-C6** Chip Type, **Develop** WorkMode and **UART** LoadMode ;
5. Select COM port, enter partition files and addresses, select options ;
Here is an example:
![](https://github.com/lyusupov/SoftRF/raw/master/documents/images/Standalone-ESP32C6-3.jpg) 6. Press **START** button and wait for completion. "Stock" devices may also require to apply full flash memory erase (use **ERASE** UI "button") prior to first flashing with SoftRF's firmware.