Skip to content

Instantly share code, notes, and snippets.

@projectgus
Last active January 15, 2025 00:43
Show Gist options
  • Save projectgus/f2d24fa2e4689c41ce8002b70f0926bf to your computer and use it in GitHub Desktop.
Save projectgus/f2d24fa2e4689c41ce8002b70f0926bf to your computer and use it in GitHub Desktop.
Templated MicroPython download pages

Installation instructions

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

For deploying the MicroPython firmware to the SAMD module, follow the procedure:

  • Push the reset button twice or call machine.bootloader(). A drive icon should appear representing a virtual drive.

  • Copy the .uf2 file with the required firmware to that drive.

As soon as the drive disappears, the firmware is loaded and started.

Installation instructions

For deploying the MicroPython firmware to the SAMD module, follow the procedure:

  • Push the reset button twice or call machine.bootloader(). A drive icon should appear representing a virtual drive.

  • Copy the .uf2 file with the required firmware to that drive.

As soon as the drive disappears, the firmware is loaded and started.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

For deploying the MicroPython firmware to the SAMD module, follow the procedure:

  • Push the reset button twice or call machine.bootloader(). A drive icon should appear representing a virtual drive.

  • Copy the .uf2 file with the required firmware to that drive.

As soon as the drive disappears, the firmware is loaded and started.

Installation instructions

For deploying the MicroPython firmware to the SAMD module, follow the procedure:

  • Push the reset button twice or call machine.bootloader(). A drive icon should appear representing a virtual drive.

  • Copy the .uf2 file with the required firmware to that drive.

As soon as the drive disappears, the firmware is loaded and started.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

For deploying the MicroPython firmware to the SAMD module, follow the procedure:

  • Push the reset button twice or call machine.bootloader(). A drive icon should appear representing a virtual drive.

  • Copy the .uf2 file with the required firmware to that drive.

As soon as the drive disappears, the firmware is loaded and started.

Installation instructions

1. Deploy the MicroPython firmware to the Metro M7 board.

1.1 Deploy the firmware using the serial bootloader.

For initial deployment of the firmware a few preparation steps are required, which have to be done once.

  1. Get the files ufconv.py and uf2families.json from the micropython/tools directory, e.g. at https://github.com/micropython/micropython/tree/master/tools.

  2. Get the NXP program sdphost for your operating system, e.g. from https://github.com/adafruit/tinyuf2/tree/master/ports/mimxrt10xx/sdphost. You can also get them from the NXP web sites.

  3. Get the UF2 boot-loader package https://github.com/adafruit/tinyuf2/releases/download/0.9.0/tinyuf2-imxrt1010_evk-0.9.0.zip and extract the file tinyuf2-imxrt1010_evk-0.9.0.bin.

Now you have all files at hand that you will need for updating.

  1. Get the firmware you want to upload from the MicroPython download page.

  2. Set the two BOOTSEL DIP switches to the 1/0 position, which is the opposite position of the normal use mode.

  3. Push the reset button.

  4. Run the commands:

sudo ./sdphost -u 0x1fc9,0x0145 -- write-file 0x20206400 tinyuf2-imxrt1010_evk-0.9.0.bin
sudo ./sdphost -u 0x1fc9,0x0145 -- jump-address 0x20207000

Wait until a drive icon appears on the computer (or mount it explicitly), and then run:

python3 uf2conv.py <firmware_xx.yy.zz.hex> --base 0x60000400 -f 0x4fb2d5bd

You can put all of that in a script. Just add a short wait before the 3rd command to let the drive connect.

  1. Once the upload is finished, set the BOOTSEL DIP switches back to the 0/1 position and push reset.

Using sudo is Linux specific. You may not need it at all, if the access rights are set properly, and you will not need it for Windows.

1.2 Deploy the firmware using a JTAG adapter.

With a JTAG adapter the firmware can be easily installed. Appropriate tools are Segger JFlash Lite and the Segger Edu Mini adapter. Just use the firmware.hex file for loading, which will be loaded at the proper address.

2. Deploy the WiFi firmware.

The NINA firmware in the NINA module has to be updated for use with MicroPython. That can be done using MicroPython and two small Python scripts.

The firmware binaries are available at https://github.com/micropython/micropython-lib/tree/master/micropython/espflash or https://github.com/robert-hh/Shared-Stuff. For the Metro M7 board, the NINA_FW_v1.5.0_Airlift.bin file is needed.

For firmware upload, the following connections to the WiFi module are required:

  • Pin Reset (as above)
  • Pin GPIO0
  • UART RX
  • UART TX

The GPIO pins and UART device id varies between boards. At the Adafruit Metro M7 board, the UART is UART(1), and the Pin names for reset and GPIO0 are ESP_RESET and ESP_GPIO0. The firmware can be uploaded, using the espflash.py module, a short script using espflash.py and mpremote. espflash.py is available at https://github.com/micropython/micropython-lib/tree/master/micropython/espflash. This place also holds the example script.

import espflash
from machine import Pin
from machine import UART
import sys
sys.path.append("/flash")

reset = Pin("ESP_RESET", Pin.OUT)
gpio0 = Pin("ESP_GPIO0", Pin.OUT)
uart = UART(0, 115200, timeout=350)

md5sum = b"b0b9ab23da820a469e597c41364acb3a"
path = "/remote/NINA_FW_v1.5.0_Airlift.bin"

esp = espflash.ESPFlash(reset, gpio0, uart)
# Enter bootloader download mode, at 115200
esp.bootloader()
# Can now change to higher/lower baud rate
esp.set_baudrate(921600)
# Must call this first before any flash functions.
esp.flash_attach()
# Read flash size
size = esp.flash_read_size()
# Configure flash parameters.
esp.flash_config(size)
# Write firmware image from internal storage.
esp.flash_write_file(path)
# Compares file and flash MD5 checksum.
esp.flash_verify_file(path, md5sum)
# Resets the ESP32 chip.
esp.reboot()

The script shows the set-up for the Metro M7 board. The md5sum is the one of the WiFi firmware. It may change and can be recalculated using e.g. the Linux md5sum command. It is used to verify the firmware upload. To upload the firmware, place the firmware and the above script (let's call it ninaflash.py) into the same directory on your PC, and run the command:

mpremote connect <port> mount . run ninaflash.py

After a while, the upload will start. A typical start sequence looks like:

Local directory . is mounted at /remote
Failed to read response to command 8.
Failed to read response to command 8.
Changing baudrate => 921600
Flash attached
Flash size 2.0 MBytes
Flash write size: 1310720 total_blocks: 320 block size: 4096
Writing sequence number 0/320...
Writing sequence number 1/320...
Writing sequence number 2/320...
Writing sequence number 3/320...
Writing sequence number 4/320...
....
....
Writing sequence number 317/320...
Writing sequence number 318/320...
Writing sequence number 319/320...
Flash write finished
Flash verify: File  MD5 b'b0b9ab23da820a469e597c41364acb3a'
Flash verify: Flash MD5 b'b0b9ab23da820a469e597c41364acb3a'
Firmware verified.

The initial messages Failed to read response to command 8. can be ignored.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

For deploying the MicroPython firmware to the SAMD module, follow the procedure:

  • Push the reset button twice or call machine.bootloader(). A drive icon should appear representing a virtual drive.

  • Copy the .uf2 file with the required firmware to that drive.

As soon as the drive disappears, the firmware is loaded and started.

Installation instructions

Via dfu-util

This board can programmed via DFU bootloader, using e.g. dfu-util. To enter the DFU bootloader, double tap the reset (blue) button, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util -w -a 0 -d 2341:035b -D build-ARDUINO_GIGA/firmware.dfu

Or from MicroPython source repository:

make BOARD=ARDUINO_GIGA deploy

Installation instructions

Update the bootloader

Before deploying any firmware images, make sure the board is running the updated Arduino Nano 33 BLE bootloader (which is relocated to the end of the flash), otherwise the bootloader will be overwritten by the softdevice. For more information on how to update the bootloader, see the Getting Started with OpenMV/MicroPython tutorial.

Via Arduino bootloader and BOSSA

Download the latest BOSSA flash programmer from the Arduino BOSSA fork. Note this version adds support for nRF devices, and must be used with the Nano 33 BLE. Double tap the reset button to enter the bootloader, and run the following command:

bossac -e -w --offset=0x16000 --port=ttyACM0 -i -d -U -R build-arduino_nano_33_ble_sense-s140/firmware.bin

Via nrfprog

This board can also be programmed via nrfjprog (with Jlink for example), from MicroPython source repository:

make -j8 BOARD=arduino_nano_33_ble_sense SD=s140 deploy

Installation instructions

Via dfu-util

This board can programmed via DFU bootloader, using e.g. dfu-util. To enter the DFU bootloader, double tap the reset (blue) button, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util -d 0x2341:0x0070 -R -D build-ARDUINO_NANO_ESP32/micropython.app-bin

Please note that the DFU bootloader comes factory flashed. Should you for any reason erase the entire flash, the DFU bootloader will have to be re-installed. Please follow the instructions here to do so.

Important From the options below, download the .app-bin file for your board.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

Via dfu-util

This board can programmed via DFU bootloader, using e.g. dfu-util. To enter the DFU bootloader, double tap the reset (blue) button, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util -w -a 0 -d 2341:035b -D build-ARDUINO_NICLA_VISION/firmware.dfu

Or from MicroPython source repository:

make BOARD=ARDUINO_NICLA_VISION deploy

Installation instructions

Via dfu-util

This board can be programmed via DFU bootloader, using e.g. dfu-util. To enter the DFU bootloader, double tap the recessed reset button, or you can use machine.bootloader() from the MicroPython REPL.

The Arduino Opta indicates its DFU state by blinking the green LED above the RESET button.

NOTE: The board might remain in DFU mode after the upload, a simple reset will bring the board back to Run-Time.

dfu-util -w -a 0 -d 2341:0364 -D build-ARDUINO_OPTA/firmware.dfu

Or from MicroPython source repository, making sure the current directory is ports/stm32:

make BOARD=ARDUINO_OPTA deploy

Installation instructions

dfu-util

This board can programmed via DFU bootloader, using e.g. dfu-util. To enter the DFU bootloader, double tap the reset (blue) button, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util -a 0 -d 2341:0368 -D build-ARDUINO_PORTENTA_C33/firmware.bin -Q # -s :leave

Installation instructions

Via dfu-util

This board can programmed via DFU bootloader, using e.g. dfu-util. To enter the DFU bootloader, double tap the reset (blue) button, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util -w -a 0 -d 2341:035b -D build-ARDUINO_PORTENTA_H7/firmware.dfu

Or from MicroPython source repository:

make BOARD=ARDUINO_PORTENTA_H7 deploy

Installation instructions

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

Installation instructions

Renesas RA Family Board via J-Flash Lite

You can download J-Link Software and Documentation pack that includes a flash programming tool J-Flash Lite.

A .hex file can be flashed using J-Flash Lite.

  1. Start J-Flash Lite.
  2. Select device name for board.
  • EK-RA4M1: R7FA4M1AB
  • EK-RA4W1: R7FA4W1AD2CNG
  • EK-RA6M1: R7FA6M1AD
  • EK-RA6M2: R7FA6M2AF
  • RA4M1 CLICKER: R7FA4M1AB
  1. press OK.
  2. Select firmware.hex file for Data File.
  3. Press Program Device.

Please refer to the Getting started with MicroPython on the Renesas RA about cable connection between the board and your PC.

Installation instructions

Renesas RA Family Board via J-Flash Lite

You can download J-Link Software and Documentation pack that includes a flash programming tool J-Flash Lite.

A .hex file can be flashed using J-Flash Lite.

  1. Start J-Flash Lite.
  2. Select device name for board.
  • EK-RA4M1: R7FA4M1AB
  • EK-RA4W1: R7FA4W1AD2CNG
  • EK-RA6M1: R7FA6M1AD
  • EK-RA6M2: R7FA6M2AF
  • RA4M1 CLICKER: R7FA4M1AB
  1. press OK.
  2. Select firmware.hex file for Data File.
  3. Press Program Device.

Please refer to the Getting started with MicroPython on the Renesas RA about cable connection between the board and your PC.

Installation instructions

Renesas RA Family Board via J-Flash Lite

You can download J-Link Software and Documentation pack that includes a flash programming tool J-Flash Lite.

A .hex file can be flashed using J-Flash Lite.

  1. Start J-Flash Lite.
  2. Select device name for board.
  • EK-RA4M1: R7FA4M1AB
  • EK-RA4W1: R7FA4W1AD2CNG
  • EK-RA6M1: R7FA6M1AD
  • EK-RA6M2: R7FA6M2AF
  • RA4M1 CLICKER: R7FA4M1AB
  1. press OK.
  2. Select firmware.hex file for Data File.
  3. Press Program Device.

Please refer to the Getting started with MicroPython on the Renesas RA about cable connection between the board and your PC.

Installation instructions

Renesas RA Family Board via J-Flash Lite

You can download J-Link Software and Documentation pack that includes a flash programming tool J-Flash Lite.

A .hex file can be flashed using J-Flash Lite.

  1. Start J-Flash Lite.
  2. Select device name for board.
  • EK-RA4M1: R7FA4M1AB
  • EK-RA4W1: R7FA4W1AD2CNG
  • EK-RA6M1: R7FA6M1AD
  • EK-RA6M2: R7FA6M2AF
  • RA4M1 CLICKER: R7FA4M1AB
  1. press OK.
  2. Select firmware.hex file for Data File.
  3. Press Program Device.

Please refer to the Getting started with MicroPython on the Renesas RA about cable connection between the board and your PC.

The following files are firmware that should work on most ESP32-based boards with 4MiB of flash, including WROOM WROVER, SOLO, PICO, and MINI modules.

This board has multiple variants available:

  • If your board is based on a WROVER module, or otherwise has SPIRAM (also known as PSRAM) then it's recommended to use the "spiram" variant. Look for heading Support for SPIRAM / WROVER).
  • If your board has a ESP32-D2WD chip (with only 2MiB flash) then use the "d2wd" variant. Look for heading ESP32 D2WD.
  • If your board has a single-core ESP32 (e.g. the "SOLO" modules) then choose the "unicore" variant. Look for heading ESP32 Unicore.
  • If you'd like to perform Over-the-Air updates of the MicroPython firmware, then choose the "ota" variant. This variant has less room in the flash for Python files as a result of supporting OTA. Look for heading Support for OTA.

Otherwise, download the generic variant (under the first heading below).

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyUSB or /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0x1000:

esptool.py --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If flashing starts and then fails partway through, try removing the --baud 460800 option to flash at the slower default speed.

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following files are firmware images that should work on most ESP32-C3-based boards with 4MiB of flash, including WROOM and MINI modules, that use the revision 3 silicon (or newer).

USB serial/JTAG support is enabled on pin 18 and 19. Note that this is not a full USB stack, the C3 just provides a CDC/ACM class serial and JTAG interface.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyUSB or /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py --baud 460800 write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME --baud 460800 write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If flashing starts and then fails partway through, try removing the --baud 460800 option to flash at the slower default speed.

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following files are firmware that should work on most ESP32-S2-based boards with 4MiB of flash, including WROOM, WROVER, and MINI modules.

This firmware supports configurations with and without SPIRAM (also known as PSRAM) and will auto-detect a connected SPIRAM chip at startup and allocate the MicroPython heap accordingly.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyUSB or /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0x1000:

esptool.py --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If flashing starts and then fails partway through, try removing the --baud 460800 option to flash at the slower default speed.

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following files are firmware that should work on most ESP32-S3-based boards with 4/8MiB of flash, including WROOM and MINI modules.

This firmware supports configurations with and without SPIRAM (also known as PSRAM) and will auto-detect a connected SPIRAM chip at startup and allocate the MicroPython heap accordingly. However if your board has Octal SPIRAM, then use the "spiram-oct" variant.

If your board has 4MiB flash (including ESP32-S3FH4R2 based ones with embedded flash), then use the "flash-4m" build.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyUSB or /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py --baud 460800 write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME --baud 460800 write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If flashing starts and then fails partway through, try removing the --baud 460800 option to flash at the slower default speed.

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyUSB or /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py --baud 460800 write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME --baud 460800 write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If flashing starts and then fails partway through, try removing the --baud 460800 option to flash at the slower default speed.

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following are daily builds of the ESP8266 firmware. This will work on boards with at least 2MiB of flash. They have the latest features and bug fixes, WebREPL is not automatically started, and debugging is enabled by default.

For boards with 1MiB or 512kiB of flash, two variants are provided with reduced functionality. The 1MiB variant removes asyncio and FAT-filesystem support as well as some modules from micropython-lib. The 512kiB variant further removes all filesystem support, as well as framebuffer support, some Python language features, and has less detailed error messages.

Note: v1.12-334 and newer (including v1.13) require an ESP8266 module with 2MiB of flash or more, and use littlefs as the filesystem by default. When upgrading from older firmware please backup your files first, and either erase all flash before upgrading, or after upgrading execute vfs.VfsLfs2.mkfs(bdev).

OTA builds

Over-The-Air (OTA) builds of the ESP8266 firmware are also provided.

The first time you use this build you need to flash one of the "initial image" images using esptool.py as described above. After that, you can update the firmware over the air using the "OTA update" file in conjunction with the ota-client script from yaota8266. The "OTA update" files are digitally signed and will only work with the provided "initial image" files, and vice versa. (Note: this feature is work-in-progress.)

Installation instructions

Program your board using the esptool.py program as described the tutorial.

Installation instructions

For programming an Espruino Pico see the "Advanced Reflashing" section of this page.

Installation instructions

Installation instructions

Installation instructions

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

Installation instructions

[
{
"build": "ESP8266_GENERIC",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"External Flash",
"WiFi"
],
"id": "ESP8266_GENERIC",
"images": [
"esp8266.jpg"
],
"mcu": "esp8266",
"port": "esp8266",
"product": "ESP8266",
"thumbnail": "",
"url": "https://www.espressif.com/en/products/modules",
"variants": {
"FLASH_1M": "1MiB flash",
"FLASH_512K": "512kiB flash",
"OTA": "OTA compatible"
},
"vendor": "Espressif"
},
{
"build": "PYBD_SF3",
"deploy": [
"../PYBD_SF2/deploy.md"
],
"docs": "",
"features": [],
"id": "PYBD_SF3",
"images": [
"PYBD_SF3_W4F2.jpg",
"PYBD_SF3_W4F2_top.jpg",
"PYBD_SF2_W4F2_bot.jpg",
"PYBD_SF3_W4F2_ds1.jpg",
"PYBD_SF3_W4F2_ds2.jpg",
"PYBD_SF3_W4F2_ds3.jpg"
],
"mcu": "stm32f7",
"port": "stm32",
"product": "Pyboard D-series SF3",
"thumbnail": "",
"url": "https://store.micropython.org/product/PYBD-SF3-W4F2",
"vendor": "George Robotics"
},
{
"build": "NUCLEO_F429ZI",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_F429ZI",
"images": [
"nucleo_f429zi.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Nucleo F429ZI",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "PYBLITEV10",
"deploy": [
"../PYBV10/deploy.md"
],
"docs": "",
"features": [],
"id": "PYBLITEV10",
"images": [
"PYBLITEv1_0.jpg",
"PYBLITEv1_0-B.jpg",
"PYBLITEv1_0-C.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Pyboard Lite v1.0",
"thumbnail": "",
"url": "https://store.micropython.org/product/PYBLITEv1.0",
"variants": {
"DP": "Double-precision float",
"DP_THREAD": "Double precision float + Threads",
"NETWORK": "Wiznet 5200 Driver",
"THREAD": "Threading"
},
"vendor": "George Robotics"
},
{
"build": "NUCLEO_L152RE",
"deploy": [
"./deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_L152RE",
"images": [
"nucleo_l152re.jpg"
],
"mcu": "stm32l1",
"port": "stm32",
"product": "Nucleo L152RE",
"thumbnail": "",
"url": "https://www.st.com/en/evaluation-tools/nucleo-l152re.html",
"vendor": "ST Microelectronics"
},
{
"build": "ARDUINO_NICLA_VISION",
"deploy": [
"./deploy.md"
],
"docs": "",
"features": [
"BLE",
"Dual-core",
"External Flash",
"Secure Element",
"USB",
"WiFi"
],
"id": "ARDUINO_NICLA_VISION",
"images": [
"ABX00051_01.iso_1000x750.jpg"
],
"mcu": "stm32h7",
"port": "stm32",
"product": "Arduino Nicla Vision",
"thumbnail": "",
"url": "https://store.arduino.cc/products/nicla-vision",
"vendor": "Arduino"
},
{
"build": "HYDRABUS",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "HYDRABUS",
"images": [
"hydrabus.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "HydraBus v1.0",
"thumbnail": "",
"url": "",
"vendor": "HydraBus"
},
{
"build": "PYBV10",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "PYBV10",
"images": [
"PYBv1_0-C.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Pyboard v1.0",
"thumbnail": "",
"url": "",
"variants": {
"DP": "Double-precision float",
"DP_THREAD": "Double precision float + Threads",
"NETWORK": "Wiznet 5200 Driver",
"THREAD": "Threading"
},
"vendor": "George Robotics"
},
{
"build": "NUCLEO_H743ZI",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_H743ZI",
"images": [
"nucleo_h743zi.jpg"
],
"mcu": "stm32h7",
"port": "stm32",
"product": "Nucleo H743ZI",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "NUCLEO_F401RE",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_F401RE",
"images": [
"nucleo_f401re.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Nucleo F401RE",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "OLIMEX_E407",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "OLIMEX_E407",
"images": [
"olimex_e407.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "E407",
"thumbnail": "",
"url": "",
"vendor": "OLIMEX"
},
{
"build": "ESPRUINO_PICO",
"deploy": [
"deploy.md"
],
"docs": "",
"features": [],
"id": "ESPRUINO_PICO",
"images": [
"Pico_angled.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Pico",
"thumbnail": "",
"url": "https://www.espruino.com/Pico",
"vendor": "Espruino"
},
{
"build": "NUCLEO_G0B1RE",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_G0B1RE",
"images": [
"nucleo_g0b1re.jpg"
],
"mcu": "stm32g0",
"port": "stm32",
"product": "Nucleo G0B1RE",
"thumbnail": "",
"url": "https://www.st.com/en/evaluation-tools/nucleo-g0b1re.html",
"vendor": "ST Microelectronics"
},
{
"build": "NUCLEO_F756ZG",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_F756ZG",
"images": [
"nucleo_f756zg.jpg"
],
"mcu": "stm32f7",
"port": "stm32",
"product": "Nucleo F756ZG",
"thumbnail": "",
"url": "https://www.st.com/en/evaluation-tools/nucleo-f756zg.html",
"vendor": "ST Microelectronics"
},
{
"build": "NUCLEO_F411RE",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_F411RE",
"images": [
"nucleo_f411re.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Nucleo F411RE",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "ARDUINO_GIGA",
"deploy": [
"./deploy.md"
],
"docs": "",
"features": [
"BLE",
"Dual-core",
"External Flash",
"External RAM",
"USB",
"WiFi"
],
"id": "ARDUINO_GIGA",
"images": [
"ABX00063_01.front_1000x750.jpg"
],
"mcu": "stm32h7",
"port": "stm32",
"product": "Arduino Giga",
"thumbnail": "",
"url": "https://store.arduino.cc/products/giga-r1-wifi",
"vendor": "Arduino"
},
{
"build": "NUCLEO_H563ZI",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_H563ZI",
"images": [
"nucleo_h563zi.jpg"
],
"mcu": "stm32h5",
"port": "stm32",
"product": "Nucleo H563ZI",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "NUCLEO_H723ZG",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_H723ZG",
"images": [
"nucleo_h723zg.jpg"
],
"mcu": "stm32h7",
"port": "stm32",
"product": "Nucleo H723ZG",
"thumbnail": "",
"url": "https://www.st.com/en/evaluation-tools/nucleo-h723zg.html",
"vendor": "ST Microelectronics"
},
{
"build": "WEACT_F411_BLACKPILL",
"deploy": [
"../PYBV10/deploy.md"
],
"docs": "",
"features": [],
"id": "WEACT_F411_BLACKPILL",
"images": [
"WEACTV20_F411.jpg"
],
"mcu": "stm32f411",
"port": "stm32",
"product": "WeAct F411 'blackpill'. Default variant is v3.1 with no SPI Flash.",
"thumbnail": "",
"url": "https://github.com/WeActStudio/WeActStudio.MiniSTM32F4x1",
"variants": {
"V13": "v1.3 board with no SPI Flash",
"V13_FLASH_4M": "v1.3 board with 4MB SPI Flash",
"V20_FLASH_4M": "v2.0 board with 4MB SPI Flash",
"V31_FLASH_8M": "v3.1 board with 8MB SPI Flash",
"V31_XTAL_8M": "v3.1 board with 8MHz crystal"
},
"vendor": "WeAct Studio"
},
{
"build": "NUCLEO_F091RC",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_F091RC",
"images": [
"nucleo_f091rc.jpg"
],
"mcu": "stm32f0",
"port": "stm32",
"product": "Nucleo F091RC",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "NUCLEO_L4A6ZG",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_L4A6ZG",
"images": [
"nucleo_l4a6zg.jpg"
],
"mcu": "stm32l4",
"port": "stm32",
"product": "Nucleo L4A6ZG",
"thumbnail": "",
"url": "https://www.st.com/en/evaluation-tools/nucleo-l4a6zg.html",
"vendor": "ST Microelectronics"
},
{
"build": "SPARKFUN_MICROMOD_STM32",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "SPARKFUN_MICROMOD_STM32",
"images": [
"sparkfun_micromod_stm32.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Micromod STM32",
"thumbnail": "",
"url": "",
"vendor": "Sparkfun"
},
{
"build": "NUCLEO_F412ZG",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_F412ZG",
"images": [
"nucleo_f412zg.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Nucleo F412ZG",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "STM32L476DISC",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "STM32L476DISC",
"images": [
"stm32l476disc.jpg"
],
"mcu": "stm32l4",
"port": "stm32",
"product": "Discovery L476",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "STM32F4DISC",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "STM32F4DISC",
"images": [
"stm32f4disc.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Discovery F4",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "B_L475E_IOT01A",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "B_L475E_IOT01A",
"images": [
"b-l475e-iot01a-discovery.jpg"
],
"mcu": "stm32l4",
"port": "stm32",
"product": "B_L475E_IOT01A",
"thumbnail": "",
"url": "https://www.st.com/en/evaluation-tools/b-l475e-iot01a.html",
"vendor": "ST Microelectronics"
},
{
"build": "STM32F439",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "STM32F439",
"images": [
"stm32f439.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "STM32F439",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "NUCLEO_F746ZG",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_F746ZG",
"images": [
"nucleo_f746zg.jpg"
],
"mcu": "stm32f7",
"port": "stm32",
"product": "Nucleo F746ZG",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "NUCLEO_L073RZ",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_L073RZ",
"images": [
"nucleo_l073rz.jpg"
],
"mcu": "stm32l0",
"port": "stm32",
"product": "Nucleo L073RZ",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "NUCLEO_L452RE",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_L452RE",
"images": [
"nucleo_l452re.jpg"
],
"mcu": "stm32l4",
"port": "stm32",
"product": "Nucleo L452RE",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "STM32F7DISC",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "STM32F7DISC",
"images": [
"stm32f7disc.jpg"
],
"mcu": "stm32f7",
"port": "stm32",
"product": "Discovery F7",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "STM32F429DISC",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "STM32F429DISC",
"images": [
"stm32f429disc.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Discovery F429",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "GARATRONIC_NADHAT_F405",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "GARATRONIC_NADHAT_F405",
"images": [
"garatronic_nadhat_f405.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "GARATRONIC_NADHAT_F405",
"thumbnail": "",
"url": "https://shop.mchobby.be/product.php?id_product=1653",
"vendor": "McHobby"
},
{
"build": "VCC_GND_H743VI",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "VCC_GND_H743VI",
"images": [
"STM32H743VIT6.jpg"
],
"mcu": "stm32h7",
"port": "stm32",
"product": "H743VI",
"thumbnail": "",
"url": "http://vcc-gnd.com/",
"vendor": "VCC-GND Studio"
},
{
"build": "USBDONGLE_WB55",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "USBDONGLE_WB55",
"images": [
"usbdongle_wb55.jpg"
],
"mcu": "stm32wb",
"port": "stm32",
"product": "USBDONGLE_WB55",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "LEGO_HUB_NO7",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "LEGO_HUB_NO7",
"images": [
"lego_hub_7.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Hub No.7",
"thumbnail": "",
"url": "",
"vendor": "LEGO"
},
{
"build": "NUCLEO_F446RE",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_F446RE",
"images": [
"nucleo_f446re.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Nucleo F446RE",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "MIKROE_QUAIL",
"deploy": [
"../MIKROE_QUAIL/deploy.md"
],
"docs": "",
"features": [
"mikroBUS"
],
"id": "MIKROE_QUAIL",
"images": [
"quail_top.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "MikroE Quail",
"thumbnail": "",
"url": "https://www.mikroe.com/quail",
"vendor": "MikroElektronika"
},
{
"build": "GARATRONIC_PYBSTICK26_F411",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "GARATRONIC_PYBSTICK26_F411",
"images": [
"pybstick26_f411.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "GARATRONIC_PYBSTICK26_F411",
"thumbnail": "",
"url": "https://shop.mchobby.be/product.php?id_product=1844",
"vendor": "McHobby"
},
{
"build": "NUCLEO_WL55",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_WL55",
"images": [
"nucleo_wl55.jpg"
],
"mcu": "stm32wl",
"port": "stm32",
"product": "Nucleo WL55",
"thumbnail": "",
"url": "https://www.st.com/en/evaluation-tools/nucleo-wl55jc.html",
"vendor": "ST Microelectronics"
},
{
"build": "NUCLEO_L432KC",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_L432KC",
"images": [
"nucleo_l432kc.jpg"
],
"mcu": "stm32l4",
"port": "stm32",
"product": "Nucleo L432KC",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "ADAFRUIT_F405_EXPRESS",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "ADAFRUIT_F405_EXPRESS",
"images": [
"4382-09.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "F405 Express",
"thumbnail": "",
"url": "https://www.adafruit.com/product/4382",
"vendor": "Adafruit"
},
{
"build": "NUCLEO_F767ZI",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_F767ZI",
"images": [
"nucleo_f767zi.jpg"
],
"mcu": "stm32f7",
"port": "stm32",
"product": "Nucleo F767ZI",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "NUCLEO_F722ZE",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_F722ZE",
"images": [
"nucleo_f722ze.jpg"
],
"mcu": "stm32f7",
"port": "stm32",
"product": "Nucleo F722ZE",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "NUCLEO_F439ZI",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_F439ZI",
"images": [
"nucleo_f439zi.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Nucleo F439ZI",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "PYBV11",
"deploy": [
"../PYBV10/deploy.md"
],
"docs": "",
"features": [],
"id": "PYBV11",
"images": [
"PYBv1_1.jpg",
"PYBv1_1-C.jpg",
"PYBv1_1-E.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Pyboard v1.1",
"thumbnail": "",
"url": "https://store.micropython.org/product/PYBv1.1",
"variants": {
"DP": "Double-precision float",
"DP_THREAD": "Double precision float + Threads",
"NETWORK": "Wiznet 5200 Driver",
"THREAD": "Threading"
},
"vendor": "George Robotics"
},
{
"build": "ARDUINO_OPTA",
"deploy": [
"./deploy.md"
],
"docs": "",
"features": [
"BLE",
"Dual-core",
"External Flash",
"USB",
"WiFi"
],
"id": "ARDUINO_OPTA",
"images": [
"AFX00002_01.iso_1000x750.jpg"
],
"mcu": "stm32h7",
"port": "stm32",
"product": "Arduino Opta WiFi",
"thumbnail": "",
"url": "https://store.arduino.cc/products/opta-wifi",
"vendor": "Arduino"
},
{
"build": "NETDUINO_PLUS_2",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NETDUINO_PLUS_2",
"images": [
"netduino_plus_2.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Netduino Plus 2",
"thumbnail": "",
"url": "",
"vendor": "Netduino"
},
{
"build": "NUCLEO_F413ZH",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_F413ZH",
"images": [
"nucleo_f413zh.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Nucleo F413ZH",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "LEGO_HUB_NO6",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "LEGO_HUB_NO6",
"images": [
"lego_hub_6.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Hub No.6",
"thumbnail": "",
"url": "",
"vendor": "LEGO"
},
{
"build": "NUCLEO_WB55",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_WB55",
"images": [
"nucleo_wb55.jpg"
],
"mcu": "stm32wb",
"port": "stm32",
"product": "Nucleo WB55",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "VCC_GND_F407ZG",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "VCC_GND_F407ZG",
"images": [
"STM32F407ZGT6.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "F407ZG",
"thumbnail": "",
"url": "http://vcc-gnd.com/",
"vendor": "VCC-GND Studio"
},
{
"build": "VCC_GND_F407VE",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "VCC_GND_F407VE",
"images": [
"STM32F407VET6.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "F407VE",
"thumbnail": "",
"url": "http://vcc-gnd.com/",
"vendor": "VCC-GND Studio"
},
{
"build": "NUCLEO_H743ZI2",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_H743ZI2",
"images": [
"nucleo_h743zi2.jpg"
],
"mcu": "stm32h7",
"port": "stm32",
"product": "Nucleo H743ZI2",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "STM32H7B3I_DK",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "STM32H7B3I_DK",
"images": [
"stm32h7b3i_dk.jpg"
],
"mcu": "stm32h7",
"port": "stm32",
"product": "Discovery Kit H7",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "STM32F769DISC",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "STM32F769DISC",
"images": [
"stm32f769disc.jpg"
],
"mcu": "stm32f7",
"port": "stm32",
"product": "Discovery F769",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "ARDUINO_PORTENTA_H7",
"deploy": [
"./deploy.md"
],
"docs": "",
"features": [
"BLE",
"Dual-core",
"Ethernet",
"External Flash",
"External RAM",
"USB",
"WiFi"
],
"id": "ARDUINO_PORTENTA_H7",
"images": [
"ABX00042_01.iso_1000x750.jpg"
],
"mcu": "stm32h7",
"port": "stm32",
"product": "Arduino Portenta H7",
"thumbnail": "",
"url": "https://store.arduino.cc/products/portenta-h7",
"vendor": "Arduino"
},
{
"build": "PYBD_SF2",
"deploy": [
"deploy.md"
],
"docs": "",
"features": [],
"id": "PYBD_SF2",
"images": [
"PYBD_SF2_W4F2.jpg",
"PYBD_SF2_W4F2_top.jpg",
"PYBD_SF2_W4F2_bot.jpg",
"PYBD_SF2_W4F2_ds1.jpg",
"PYBD_SF2_W4F2_ds2.jpg",
"PYBD_SF2_W4F2_ds3.jpg"
],
"mcu": "stm32f7",
"port": "stm32",
"product": "Pyboard D-series SF2",
"thumbnail": "",
"url": "https://store.micropython.org/product/PYBD-SF2-W4F2",
"vendor": "George Robotics"
},
{
"build": "STM32F411DISC",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "STM32F411DISC",
"images": [
"stm32f411disc.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Discovery F411",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "OLIMEX_H407",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "OLIMEX_H407",
"images": [
"olimex_h407.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "H407",
"thumbnail": "",
"url": "",
"vendor": "OLIMEX"
},
{
"build": "PYBD_SF6",
"deploy": [
"../PYBD_SF2/deploy.md"
],
"docs": "",
"features": [
"BLE",
"WiFi"
],
"id": "PYBD_SF6",
"images": [
"PYBD_SF6_W4F2.jpg",
"PYBD_SF6_W4F2_top.jpg",
"PYBD_SF2_W4F2_bot.jpg",
"PYBD_SF6_W4F2_ds1.jpg",
"PYBD_SF6_W4F2_ds2.jpg",
"PYBD_SF6_W4F2_ds3.jpg"
],
"mcu": "stm32f7",
"port": "stm32",
"product": "Pyboard D-series SF6",
"thumbnail": "",
"url": "https://store.micropython.org/product/PYBD-SF6-W4F2",
"vendor": "George Robotics"
},
{
"build": "MIKROE_CLICKER2_STM32",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"mikroBUS"
],
"id": "MIKROE_CLICKER2_STM32",
"images": [
"mikroe_clicker2_stm32.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "MikroE Clicker 2 for STM32",
"thumbnail": "",
"url": "https://www.mikroe.com/clicker-2-stm32f4",
"vendor": "MikroElektronika"
},
{
"build": "B_L072Z_LRWAN1",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "B_L072Z_LRWAN1",
"images": [
"b_l072z_lrwan1.jpg"
],
"mcu": "stm32l0",
"port": "stm32",
"product": "B_L072Z_LRWAN1",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "STM32L496GDISC",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "STM32L496GDISC",
"images": [
"stm32l496discovery.jpg"
],
"mcu": "stm32l4",
"port": "stm32",
"product": "Discovery L496G",
"thumbnail": "",
"url": "https://www.st.com/en/evaluation-tools/32l496gdiscovery.html",
"vendor": "ST Microelectronics"
},
{
"build": "NUCLEO_L476RG",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_L476RG",
"images": [
"nucleo_l476rg.jpg"
],
"mcu": "stm32l4",
"port": "stm32",
"product": "Nucleo L476RG",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
},
{
"build": "NUCLEO_G474RE",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NUCLEO_G474RE",
"images": [
"nucleo_g474re.jpg"
],
"mcu": "stm32g4",
"port": "stm32",
"product": "Nucleo G474RE",
"thumbnail": "",
"url": "https://www.st.com/en/evaluation-tools/nucleo-g474re.html",
"vendor": "ST Microelectronics"
},
{
"build": "CERB40",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "CERB40",
"images": [
"cerb40.jpg"
],
"mcu": "stm32f4",
"port": "stm32",
"product": "Cerb40",
"thumbnail": "",
"url": "",
"vendor": "Fez"
},
{
"build": "LIMIFROG",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "LIMIFROG",
"images": [
"limifrog.jpg"
],
"mcu": "stm32l4",
"port": "stm32",
"product": "LimiFrog",
"thumbnail": "",
"url": "",
"vendor": "LimiFrog"
},
{
"build": "IBK_BLYST_NANO",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "IBK_BLYST_NANO",
"images": [
"blyst-nano-fingertip-close_jpg_content-body-gallery.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "ibk_blyst_nano",
"thumbnail": "",
"url": "https://www.i-syst.com/products/blyst-nano",
"vendor": "I-SYST"
},
{
"build": "PCA10031",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "PCA10031",
"images": [
"nRF51-Dongle.jpg"
],
"mcu": "nrf51",
"port": "nrf",
"product": "pca10031",
"thumbnail": "",
"url": "https://www.nordicsemi.com/Products/Development-hardware/nRF51-Dongle",
"vendor": "Nordic Semiconductor"
},
{
"build": "PCA10056",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "PCA10056",
"images": [
"nRF52840-DK-prod-page.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "pca10056",
"thumbnail": "",
"url": "https://www.nordicsemi.com/Products/Development-hardware/nRF52840-DK",
"vendor": "Nordic Semiconductor"
},
{
"build": "SEEED_XIAO_NRF52",
"deploy": [
"deploy.md"
],
"docs": "",
"features": [
"BLE",
"Battery Charging",
"External Flash",
"IMU",
"Microphone",
"RGB LED",
"USB-C"
],
"id": "SEEED_XIAO_NRF52",
"images": [
"XIAO_nrf52840_front.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "SEEED XIAO nRF52840 Sense",
"thumbnail": "",
"url": "https://www.seeedstudio.com",
"vendor": "Seeed Studio"
},
{
"build": "PCA10040",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "PCA10040",
"images": [
"nRF52-DK-prod-page.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "pca10040",
"thumbnail": "",
"url": "https://www.nordicsemi.com/Products/Development-hardware/nRF52-DK",
"vendor": "Nordic Semiconductor"
},
{
"build": "PCA10028",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "PCA10028",
"images": [
"nRF51-DK.jpg"
],
"mcu": "nrf51",
"port": "nrf",
"product": "pca10028",
"thumbnail": "",
"url": "https://www.nordicsemi.com/Products/Development-hardware/nRF51-DK",
"vendor": "Nordic Semiconductor"
},
{
"build": "ACTINIUS_ICARUS",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "ACTINIUS_ICARUS",
"images": [
"icarus-v1.4-front-shadow-p-800.jpg"
],
"mcu": "nrf91",
"port": "nrf",
"product": "actinius_icarus",
"thumbnail": "",
"url": "https://www.actinius.com/icarus",
"vendor": "Actinius"
},
{
"build": "PCA10090",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "PCA10090",
"images": [
"nRF59160-DK-prod-page.jpg"
],
"mcu": "nrf91",
"port": "nrf",
"product": "pca10090",
"thumbnail": "",
"url": "https://www.nordicsemi.com/Products/Development-hardware/nrf9160-dk",
"vendor": "Nordic Semiconductor"
},
{
"build": "MICROBIT",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "MICROBIT",
"images": [
"AF-3362-1.jpg"
],
"mcu": "nrf51",
"port": "nrf",
"product": "micro:bit v1",
"thumbnail": "",
"url": "https://microbit.org/",
"vendor": "BBC"
},
{
"build": "PCA10001",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "PCA10001",
"images": [
"nRF51-DK.jpg"
],
"mcu": "nrf51",
"port": "nrf",
"product": "pca10001",
"thumbnail": "",
"url": "https://www.nordicsemi.com/Products/Development-hardware/nrf51-dk",
"vendor": "Nordic Semiconductor"
},
{
"build": "PCA10059",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "PCA10059",
"images": [
"pca10059.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "pca10059",
"thumbnail": "",
"url": "https://www.nordicsemi.com/Products/Development-hardware/nRF52840-Dongle",
"vendor": "Nordic Semiconductor"
},
{
"build": "PARTICLE_XENON",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "PARTICLE_XENON",
"images": [
"xenon-top.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "Xenon",
"thumbnail": "",
"url": "https://docs.particle.io/xenon/",
"vendor": "Particle"
},
{
"build": "DVK_BL652",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "DVK_BL652",
"images": [
"BL652-SA_JPG-500.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "dvk_bl652",
"thumbnail": "",
"url": "https://www.lairdconnect.com/wireless-modules/bluetooth-modules/bluetooth-5-modules/bl652-series-bluetooth-v5-nfc-module",
"vendor": "Laird Connectivity"
},
{
"build": "BLUEIO_TAG_EVIM",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "BLUEIO_TAG_EVIM",
"images": [
"blyst-nano-mod-4_jpg_project-body.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "blueio_tag_evim",
"thumbnail": "",
"url": "https://www.i-syst.com/index.php/products/blyst-nano",
"vendor": "I-SYST"
},
{
"build": "PCA10000",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "PCA10000",
"images": [
"nRF51-Dongle.jpg"
],
"mcu": "nrf51",
"port": "nrf",
"product": "pca10000",
"thumbnail": "",
"url": "https://www.nordicsemi.com/Products/Development-hardware/nRF51-Dongle",
"vendor": "Nordic Semiconductor"
},
{
"build": "IDK_BLYST_NANO",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "IDK_BLYST_NANO",
"images": [
"blyst-nano-fingertip-close_jpg_content-body-gallery.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "idk_blyst_nano",
"thumbnail": "",
"url": "https://www.i-syst.com/products/blyst-nano",
"vendor": "I-SYST"
},
{
"build": "EVK_NINA_B3",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "EVK_NINA_B3",
"images": [
"EVK-NINA-B3-top.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "evk_nina_b3",
"thumbnail": "",
"url": "https://www.u-blox.com/en/product/evk-nina-b3",
"vendor": "u-blox"
},
{
"build": "WT51822_S4AT",
"deploy": [
"../deploy.md"
],
"docs": "https://4tronix.co.uk/picobot2/WT51822-S4AT.pdf",
"features": [],
"id": "WT51822_S4AT",
"images": [
"WT51822-S4AT.jpg"
],
"mcu": "nrf51",
"port": "nrf",
"product": "wt51822_s4at",
"thumbnail": "",
"url": "http://www.wireless-tag.com/portfolio/wt51822-s4at-2/",
"vendor": "Wireless-Tag"
},
{
"build": "ARDUINO_PRIMO",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "ARDUINO_PRIMO",
"images": [
"arduino_primo.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "arduino_primo",
"thumbnail": "",
"url": "",
"vendor": "Arduino"
},
{
"build": "FEATHER52",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "FEATHER52",
"images": [
"4062-02.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "Feather nRF52840 Express",
"thumbnail": "",
"url": "https://www.adafruit.com/product/4062",
"vendor": "Adafruit"
},
{
"build": "NRF52840_MDK_USB_DONGLE",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "NRF52840_MDK_USB_DONGLE",
"images": [
"dongle_pcba_case.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "nrf52840-mdk-usb-dongle",
"thumbnail": "",
"url": "https://wiki.makerdiary.com/nrf52840-mdk-usb-dongle",
"vendor": "Makerdiary"
},
{
"build": "ARDUINO_NANO_33_BLE_SENSE",
"deploy": [
"./deploy.md"
],
"docs": "",
"features": [
"BLE",
"Environment Sensor",
"IMU",
"Microphone",
"Secure Element",
"USB"
],
"id": "ARDUINO_NANO_33_BLE_SENSE",
"images": [
"ABX00031_01.iso_998x749.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "Arduino Nano 33 BLE Sense",
"thumbnail": "",
"url": "https://store.arduino.cc/products/arduino-nano-33-ble-sense",
"vendor": "Arduino"
},
{
"build": "EVK_NINA_B1",
"deploy": [
"../deploy.md"
],
"docs": "https://www.u-blox.com/sites/default/files/EVK-NINA-B1_UserGuide_%28UBX-15028120%29.pdf",
"features": [],
"id": "EVK_NINA_B1",
"images": [
"EVK-NINA-B1_.jpg"
],
"mcu": "nrf52",
"port": "nrf",
"product": "evk_nina_b1",
"thumbnail": "",
"url": "https://www.u-blox.com/en/product/evk-nina-b1",
"vendor": "u-blox"
},
{
"build": "UM_RGBTOUCH_MINI",
"deploy": [
"../deploy_flashmode.md",
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"BLE",
"Battery Charging",
"External Flash",
"External RAM",
"RGB LED",
"USB-C",
"WiFi"
],
"features_non_filterable": [
"3 Axis IMU",
"12x12 RGB LED Matrix",
"Capacitive Touch",
"I2S Audio Amplifier + Speaker"
],
"id": "UM_RGBTOUCH_MINI",
"images": [
"unexpectedmaker_rgbtouch_mini.jpg"
],
"mcu": "esp32s3",
"port": "esp32",
"product": "RGB Touch Mini",
"thumbnail": "",
"url": "https://rgbtouch.com",
"vendor": "Unexpected Maker"
},
{
"build": "ARDUINO_NANO_ESP32",
"deploy": [
"deploy.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"BLE",
"External Flash",
"RGB LED",
"USB-C",
"WiFi"
],
"id": "ARDUINO_NANO_ESP32",
"images": [
"ABX00092_01.iso_1000x750.jpg"
],
"mcu": "esp32s3",
"port": "esp32",
"product": "Arduino Nano ESP32",
"thumbnail": "",
"url": "https://store.arduino.cc/products/arduino-nano-esp32",
"vendor": "Arduino"
},
{
"build": "UM_FEATHERS3NEO",
"deploy": [
"../deploy_flashmode.md",
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"BLE",
"Battery Charging",
"External Flash",
"External RAM",
"Feather",
"JST-SH",
"RGB LED",
"USB-C",
"WiFi"
],
"features_non_filterable": [],
"id": "UM_FEATHERS3NEO",
"images": [
"unexpectedmaker_feathers3_neo.jpg"
],
"mcu": "esp32s3",
"port": "esp32",
"product": "FeatherS3 Neo",
"thumbnail": "",
"url": "https://esp32s3.com/feathers3neo.html",
"vendor": "Unexpected Maker"
},
{
"build": "UM_OMGS3",
"deploy": [
"./deploy_flashmode.md",
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"Battery Charging",
"RGB LED",
"External RAM",
"WiFi",
"BLE"
],
"features_non_filterable": [
"I2C BAT Fuel Gauge"
],
"id": "omgs3",
"images": [
"unexpectedmaker_omgs3.jpg"
],
"mcu": "esp32s3",
"port": "esp32",
"product": "OMGS3",
"thumbnail": "",
"url": "https://omgs3.io",
"vendor": "Unexpected Maker"
},
{
"build": "ESP32_GENERIC_S3",
"deploy": [
"../deploy.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"BLE",
"External Flash",
"External RAM",
"WiFi"
],
"id": "ESP32_GENERIC_S3",
"images": [
"generic_s3.jpg"
],
"mcu": "esp32s3",
"port": "esp32",
"product": "ESP32-S3",
"thumbnail": "",
"url": "https://www.espressif.com/en/products/modules",
"variants": {
"FLASH_4M": "4MiB flash",
"SPIRAM_OCT": "Support for Octal-SPIRAM"
},
"vendor": "Espressif"
},
{
"build": "UM_NANOS3",
"deploy": [
"./deploy_flashmode.md",
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"Battery Charging",
"RGB LED",
"External RAM",
"WiFi",
"BLE"
],
"features_non_filterable": [
"TinyPICO Nano Compatible"
],
"id": "nanos3",
"images": [
"unexpectedmaker_nanos3.jpg"
],
"mcu": "esp32s3",
"port": "esp32",
"product": "NanoS3",
"thumbnail": "",
"url": "https://nanos3.io",
"vendor": "Unexpected Maker"
},
{
"build": "UM_FEATHERS2NEO",
"deploy": [
"../deploy_flashmode.md",
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0x1000"
},
"docs": "",
"features": [
"Battery Charging",
"External Flash",
"External RAM",
"Feather",
"JST-SH",
"RGB LED",
"USB-C",
"WiFi"
],
"features_non_filterable": [
"5x5 RGB LED Matrix"
],
"id": "UM_FEATHERS2NEO",
"images": [
"unexpectedmaker_feathers2neo.jpg"
],
"mcu": "esp32s2",
"port": "esp32",
"product": "FeatherS2 Neo",
"thumbnail": "",
"url": "https://unexpectedmaker.com/feathers2-neo",
"vendor": "Unexpected Maker"
},
{
"build": "SIL_WESP32",
"deploy": [
"../deploy.md"
],
"deploy_options": {
"flash_offset": "0x1000"
},
"docs": "",
"features": [
"BLE",
"Ethernet",
"External Flash",
"PoE",
"WiFi"
],
"id": "SIL_WESP32",
"images": [
"wesp32-iso.jpg",
"wesp32-top.jpg"
],
"mcu": "esp32",
"port": "esp32",
"product": "SIL WESP32",
"thumbnail": "",
"url": "https://wesp32.com/",
"vendor": "Silicognition"
},
{
"build": "M5STACK_NANOC6",
"deploy": [
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"BLE",
"WiFi",
"RGB LED",
"USB",
"USB-C",
"JST-PH"
],
"id": "M5STACK_NANOC6",
"images": [
"m5stack_nanoc6.jpg"
],
"mcu": "esp32c6",
"port": "esp32",
"product": "M5Stack NanoC6",
"url": "https://shop.m5stack.com/products/m5stack-nanoc6-dev-kit",
"vendor": "M5Stack"
},
{
"build": "LOLIN_C3_MINI",
"deploy": [
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"BLE",
"External Flash",
"USB-C",
"WiFi"
],
"id": "LOLIN_C3_MINI",
"images": [
"lolin_c3_mini.jpg"
],
"mcu": "esp32c3",
"port": "esp32",
"product": "C3 mini",
"thumbnail": "",
"url": "https://www.wemos.cc/en/latest/c3/c3_mini.html",
"vendor": "Wemos"
},
{
"build": "UM_TINYWATCHS3",
"deploy": [
"../deploy_flashmode.md",
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"BLE",
"Battery Charging",
"External Flash",
"External RAM",
"USB-C",
"WiFi"
],
"features_non_filterable": [
"Watch"
],
"id": "UM_TINYWATCHS3",
"images": [
"unexpectedmaker_tinywatchs3.jpg"
],
"mcu": "esp32s3",
"port": "esp32",
"product": "TinyWATCH S3",
"thumbnail": "",
"url": "https://tinywatch.io",
"vendor": "Unexpected Maker"
},
{
"build": "ESP32_GENERIC_C3",
"deploy": [
"../deploy.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"BLE",
"External Flash",
"WiFi"
],
"id": "ESP32_GENERIC_C3",
"images": [
"esp32c3_devkitmini.jpg"
],
"mcu": "esp32c3",
"port": "esp32",
"product": "ESP32-C3",
"thumbnail": "",
"url": "https://www.espressif.com/en/products/modules",
"vendor": "Espressif"
},
{
"build": "M5STACK_ATOM",
"deploy": [
"../deploy.md"
],
"deploy_options": {
"flash_offset": "0x1000"
},
"docs": "",
"features": [
"External Flash",
"IMU",
"JST-PH",
"RGB LED",
"USB-C",
"WiFi"
],
"id": "M5STACK_ATOM",
"images": [
"m5stack_atom.jpg"
],
"mcu": "esp32",
"port": "esp32",
"product": "M5 Stack Atom",
"thumbnail": "",
"url": "https://m5stack.com/",
"vendor": "M5 Stack"
},
{
"build": "UM_PROS3",
"deploy": [
"../deploy_flashmode.md",
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"BLE",
"Battery Charging",
"External Flash",
"External RAM",
"Feather",
"JST-SH",
"RGB LED",
"USB-C",
"WiFi"
],
"features_non_filterable": [],
"id": "UM_PROS3",
"images": [
"unexpectedmaker_pros3.jpg"
],
"mcu": "esp32s3",
"port": "esp32",
"product": "ProS3",
"thumbnail": "",
"url": "https://pros3.io",
"vendor": "Unexpected Maker"
},
{
"build": "UM_TINYC6",
"deploy": [
"deploy_flashmode.md",
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"Battery Charging",
"BLE",
"External Flash",
"WiFi",
"RGB LED",
"USB",
"USB-C"
],
"id": "UM_TINYC6",
"images": [
"unexpectedmaker_tinyc6.jpg"
],
"mcu": "esp32c6",
"port": "esp32",
"product": "TinyC6",
"url": "https://tinyc6.io",
"vendor": "Unexpected Maker"
},
{
"build": "UM_FEATHERS2",
"deploy": [
"../deploy_flashmode.md",
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0x1000"
},
"docs": "",
"features": [
"Battery Charging",
"External Flash",
"External RAM",
"Feather",
"JST-SH",
"RGB LED",
"USB-C",
"WiFi"
],
"features_non_filterable": [
"Second LDO"
],
"id": "UM_FEATHERS2",
"images": [
"unexpectedmaker_feathers2.jpg"
],
"mcu": "esp32s2",
"port": "esp32",
"product": "FeatherS2",
"thumbnail": "",
"url": "https://feathers2.io/",
"vendor": "Unexpected Maker"
},
{
"build": "LOLIN_S2_PICO",
"deploy": [
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0x1000"
},
"docs": "",
"features": [
"Display",
"External Flash",
"External RAM",
"JST-SH",
"USB-C",
"WiFi"
],
"id": "LOLIN_S2_PICO",
"images": [
"lolin_s2_pico.jpg"
],
"mcu": "esp32s2",
"port": "esp32",
"product": "S2 pico",
"thumbnail": "",
"url": "https://www.wemos.cc/en/latest/s2/s2_pico.html",
"vendor": "Wemos"
},
{
"build": "ESP32_GENERIC_S2",
"deploy": [
"../deploy.md"
],
"deploy_options": {
"flash_offset": "0x1000"
},
"docs": "",
"features": [
"External Flash",
"External RAM",
"WiFi"
],
"id": "ESP32_GENERIC_S2",
"images": [
"generic_s2.jpg"
],
"mcu": "esp32s2",
"port": "esp32",
"product": "ESP32-S2",
"thumbnail": "",
"url": "https://www.espressif.com/en/products/modules",
"vendor": "Espressif"
},
{
"build": "LOLIN_S2_MINI",
"deploy": [
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0x1000"
},
"docs": "",
"features": [
"External Flash",
"External RAM",
"USB-C",
"WiFi"
],
"id": "LOLIN_S2_MINI",
"images": [
"lolin_s2_mini.jpg"
],
"mcu": "esp32s2",
"port": "esp32",
"product": "S2 mini",
"thumbnail": "",
"url": "https://www.wemos.cc/en/latest/s2/s2_mini.html",
"vendor": "Wemos"
},
{
"build": "ESP32_GENERIC",
"deploy": [
"../deploy.md"
],
"deploy_options": {
"flash_offset": "0x1000"
},
"docs": "",
"features": [
"BLE",
"External Flash",
"WiFi"
],
"id": "ESP32_GENERIC",
"images": [
"esp32_devkitc.jpg"
],
"mcu": "esp32",
"port": "esp32",
"product": "ESP32 / WROOM",
"thumbnail": "",
"url": "https://www.espressif.com/en/products/modules",
"variants": {
"D2WD": "ESP32 D2WD",
"OTA": "Support for OTA",
"SPIRAM": "Support for SPIRAM / WROVER",
"UNICORE": "ESP32 Unicore"
},
"vendor": "Espressif"
},
{
"build": "OLIMEX_ESP32_POE",
"deploy": [
"../deploy.md"
],
"deploy_options": {
"flash_offset": "0x1000"
},
"docs": "",
"features": [
"BLE",
"Battery Charging",
"Ethernet",
"External Flash",
"PoE",
"WiFi",
"microSD"
],
"id": "OLIMEX_ESP32_POE",
"images": [
"ESP32-POE-ISO-1.jpg"
],
"mcu": "esp32",
"port": "esp32",
"product": "Olimex ESP32 POE",
"thumbnail": "",
"url": "https://www.olimex.com/",
"vendor": "OLIMEX"
},
{
"build": "LILYGO_TTGO_LORA32",
"deploy": [
"../deploy.md"
],
"deploy_options": {
"flash_offset": "0x1000"
},
"docs": "",
"features": [
"BLE",
"Display",
"External Flash",
"LoRa",
"SDCard",
"USB",
"WiFi"
],
"id": "LILYGO_TTGO_LORA32",
"images": [
"lilygo-ttgo-lora-32-v1-6.jpg"
],
"mcu": "esp32",
"port": "esp32",
"product": "LILYGO TTGO LoRa32",
"thumbnail": "",
"url": "http://www.lilygo.cn/prod_view.aspx?TypeId=50060&Id=1270&FId=t3:50060:3",
"vendor": "LILYGO"
},
{
"build": "M5STACK_ATOMS3_LITE",
"deploy": [
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "https://docs.m5stack.com/en/core/AtomS3%20Lite",
"features": [
"BLE",
"WiFi",
"RGB LED",
"JST-PH",
"USB-C"
],
"id": "M5STACK_ATOMS3_LITE",
"images": [
"atoms3lite.jpg"
],
"mcu": "esp32s3",
"port": "esp32",
"product": "AtomS3 Lite",
"thumbnail": "",
"url": "https://shop.m5stack.com/products/atoms3-lite-esp32s3-dev-kit",
"vendor": "M5 Stack"
},
{
"build": "UM_TINYS3",
"deploy": [
"../deploy_flashmode.md",
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"BLE",
"Battery Charging",
"External Flash",
"External RAM",
"RGB LED",
"USB-C",
"WiFi"
],
"features_non_filterable": [
"TinyPICO Compatible"
],
"id": "UM_TINYS3",
"images": [
"unexpectedmaker_tinys3.jpg"
],
"mcu": "esp32s3",
"port": "esp32",
"product": "TinyS3",
"thumbnail": "",
"url": "https://tinys3.io",
"vendor": "Unexpected Maker"
},
{
"build": "ESP32_GENERIC_C6",
"deploy": [
"../deploy.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"BLE",
"WiFi"
],
"id": "esp32c6",
"images": [
"esp32c6_devkitmini.jpg"
],
"mcu": "esp32c6",
"port": "esp32",
"product": "ESP32-C6",
"thumbnail": "",
"url": "https://www.espressif.com/en/products/modules",
"vendor": "Espressif"
},
{
"build": "UM_TINYS2",
"deploy": [
"../deploy_flashmode.md",
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0x1000"
},
"docs": "",
"features": [
"Battery Charging",
"External Flash",
"External RAM",
"JST-SH",
"RGB LED",
"USB-C",
"WiFi"
],
"features_non_filterable": [
"TinyPICO Compatible"
],
"id": "UM_TINYS2",
"images": [
"unexpectedmaker_tinys2.jpg"
],
"mcu": "esp32s2",
"port": "esp32",
"product": "TinyS2",
"thumbnail": "",
"url": "https://unexpectedmaker.com/tinys2",
"vendor": "Unexpected Maker"
},
{
"build": "UM_TINYPICO",
"deploy": [
"../deploy.md"
],
"deploy_options": {
"flash_offset": "0x1000"
},
"docs": "",
"features": [
"BLE",
"Battery Charging",
"External Flash",
"External RAM",
"RGB LED",
"USB-C",
"WiFi"
],
"features_non_filterable": [
"TinyPICO Compatible"
],
"id": "UM_TINYPICO",
"images": [
"unexpectedmaker_tinypico.jpg"
],
"mcu": "esp32",
"port": "esp32",
"product": "TinyPICO",
"thumbnail": "",
"url": "https://www.tinypico.com/",
"vendor": "Unexpected Maker"
},
{
"build": "OLIMEX_ESP32_EVB",
"deploy": [
"../deploy.md"
],
"deploy_options": {
"flash_offset": "0x1000"
},
"docs": "",
"features": [
"BLE",
"Battery Charging",
"Ethernet",
"External Flash",
"WiFi",
"microSD"
],
"id": "OLIMEX_ESP32_EVB",
"images": [
"ESP32-EVB_Rev_K1.png"
],
"mcu": "esp32",
"port": "esp32",
"product": "Olimex ESP32 EVB",
"thumbnail": "",
"url": "https://www.olimex.com/Products/IoT/ESP32/ESP32-EVB/open-source-hardware",
"vendor": "OLIMEX"
},
{
"build": "UM_FEATHERS3",
"deploy": [
"../deploy_flashmode.md",
"../deploy_nativeusb.md"
],
"deploy_options": {
"flash_offset": "0"
},
"docs": "",
"features": [
"BLE",
"Battery Charging",
"External Flash",
"External RAM",
"Feather",
"JST-SH",
"RGB LED",
"USB-C",
"WiFi"
],
"features_non_filterable": [],
"id": "UM_FEATHERS3",
"images": [
"unexpectedmaker_feathers3.jpg"
],
"mcu": "esp32s3",
"port": "esp32",
"product": "FeatherS3",
"thumbnail": "",
"url": "https://feathers3.io",
"vendor": "Unexpected Maker"
},
{
"build": "WIPY",
"deploy": [
"deploy.md"
],
"docs": "https://docs.pycom.io/datasheets/development/wipy3/",
"features": [
"BLE",
"External Flash",
"RGB LED",
"WiFi",
"microSD"
],
"id": "WIPY",
"images": [
"wipy.jpg"
],
"mcu": "cc3200",
"port": "cc3200",
"product": "WiPy Module",
"thumbnail": "",
"url": "https://pycom.io/product/wipy-3-0/",
"vendor": "Pycom"
},
{
"build": "EK_RA6M1",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "EK_RA6M1",
"images": [
"ek_ra6m1_board.jpg"
],
"mcu": "ra6m1",
"port": "renesas-ra",
"product": "EK-RA6M1",
"thumbnail": "",
"url": "https://www.renesas.com/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra6m1-evaluation-kit-ra6m1-mcu-group",
"vendor": "Renesas Electronics"
},
{
"build": "EK_RA4M1",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "EK_RA4M1",
"images": [
"ek_ra4m1_board.jpg"
],
"mcu": "ra4m1",
"port": "renesas-ra",
"product": "EK-RA4M1",
"thumbnail": "",
"url": "https://www.renesas.com/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra4m1-evaluation-kit-ra4m1-mcu-group",
"vendor": "Renesas Electronics"
},
{
"build": "VK_RA6M5",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"DAC"
],
"id": "VK_RA6M5",
"images": [
"VK-RA6M5.jpg"
],
"mcu": "ra6m5",
"port": "renesas-ra",
"product": "VK-RA6M5",
"thumbnail": "",
"url": "https://vekatech.com/VK-RA6M5_docs/brochures/VK-RA6M5%20Flyer%20R2.pdf",
"vendor": "Vekatech"
},
{
"build": "EK_RA6M2",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "EK_RA6M2",
"images": [
"ek_ra6m2_board.jpg",
"ek_ra6m2_j1_pins.jpg",
"ek_ra6m2_j2_pins.jpg",
"ek_ra6m2_j3_pins.jpg",
"ek_ra6m2_j4_pins.jpg"
],
"mcu": "ra6m2",
"port": "renesas-ra",
"product": "EK-RA6M2",
"thumbnail": "",
"url": "https://www.renesas.com/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra6m2-evaluation-kit-ra6m2-mcu-group",
"vendor": "Renesas Electronics"
},
{
"build": "ARDUINO_PORTENTA_C33",
"deploy": [
"./deploy.md"
],
"docs": "",
"features": [
"BLE",
"Ethernet",
"External Flash",
"Secure Element",
"USB-C",
"WiFi"
],
"id": "ARDUINO_PORTENTA_C33",
"images": [
"ABX00074_01.iso_1000x750.jpg"
],
"mcu": "RA6M5",
"port": "renesas-ra",
"product": "Arduino Portenta C33",
"thumbnail": "",
"url": "https://store.arduino.cc/pages/portenta-c33",
"vendor": "Arduino"
},
{
"build": "EK_RA4W1",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "EK_RA4W1",
"images": [
"ek_ra4w1_board.jpg"
],
"mcu": "ra4w1",
"port": "renesas-ra",
"product": "EK-RA4W1",
"thumbnail": "",
"url": "https://www.renesas.com/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra4w1-evaluation-kit-ra4w1-mcu-group",
"vendor": "Renesas Electronics"
},
{
"build": "RA4M1_CLICKER",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"id": "RA4M1_CLICKER",
"images": [
"ra4m1_clicker_board.jpg",
"ra4m1_clicker_pins.jpg"
],
"mcu": "ra4m1",
"port": "renesas-ra",
"product": "Mikroe RA4M1 Clicker",
"thumbnail": "",
"url": "https://www.mikroe.com/ra4m1-clicker",
"vendor": "MikroElektronika"
},
{
"build": "SPARKFUN_PROMICRO",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Dual-core",
"External Flash",
"JST-SH",
"RGB LED",
"USB-C"
],
"id": "SPARKFUN_PROMICRO",
"images": [
"18288-SparkFun_Pro_Micro_-_RP2040-01.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "Pro Micro RP2040",
"thumbnail": "",
"url": "https://www.sparkfun.com/products/18288",
"vendor": "Sparkfun"
},
{
"build": "PIMORONI_TINY2040",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Dual-core",
"External Flash",
"RGB LED",
"USB-C"
],
"id": "PIMORONI_TINY2040",
"images": [
"tiny-2040-on-white-1_1024x1024.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "Tiny2040",
"thumbnail": "",
"url": "https://shop.pimoroni.com/products/tiny-2040",
"variants": {
"FLASH_8M": "8 MiB Flash"
},
"vendor": "Pimoroni"
},
{
"build": "SIL_RP2040_SHIM",
"deploy": [
"deploy.md"
],
"docs": "",
"features": [
"Dual-core",
"RGB LED",
"External Flash",
"USB"
],
"id": "SIL_RP2040_SHIM",
"images": [
"rp2040-shim-product.jpg",
"RP2040-Shim-pinout.png"
],
"mcu": "rp2040",
"port": "rp2",
"product": "RP2040-Shim",
"thumbnail": "",
"url": "https://silicognition.com/Products/rp2040-shim/",
"vendor": "Silicognition LLC"
},
{
"build": "ARDUINO_NANO_RP2040_CONNECT",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"BLE",
"Dual-core",
"External Flash",
"IMU",
"Microphone",
"Secure Element",
"USB",
"WiFi"
],
"id": "ARDUINO_NANO_RP2040_CONNECT",
"images": [
"ABX00052_01.iso_999x750.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "Arduino Nano RP2040 Connect",
"thumbnail": "",
"url": "https://store-usa.arduino.cc/products/arduino-nano-rp2040-connect",
"vendor": "Arduino"
},
{
"build": "RPI_PICO2_W",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"BLE",
"Dual-core",
"External Flash",
"USB",
"WiFi"
],
"id": "RPI_PICO2_W",
"images": [
"rp2-pico2-w.jpg"
],
"mcu": "rp2350",
"port": "rp2",
"product": "Pico 2 W",
"thumbnail": "",
"url": "https://www.raspberrypi.com/products/raspberry-pi-pico-2/",
"vendor": "Raspberry Pi"
},
{
"build": "WEACTSTUDIO",
"deploy": [
"deploy.md"
],
"docs": "",
"features": [
"Dual-core",
"External Flash",
"USB-C"
],
"id": "WEACTSTUDIO",
"images": [
"weact_rp2040.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "WeAct Studio RP2040",
"url": "https://github.com/WeActTC/WeActStudio.RP2040CoreBoard",
"variants": {
"FLASH_2M": "2 MiB Flash",
"FLASH_4M": "4 MiB Flash",
"FLASH_8M": "8 MiB Flash"
},
"vendor": "WeAct"
},
{
"build": "ADAFRUIT_ITSYBITSY_RP2040",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Dual-core",
"External Flash",
"RGB LED",
"USB"
],
"id": "ADAFRUIT_ITSYBITSY_RP2040",
"images": [
"4888-05.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "ItsyBitsy RP2040",
"thumbnail": "",
"url": "https://www.adafruit.com/product/4888",
"vendor": "Adafruit"
},
{
"build": "RPI_PICO_W",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"BLE",
"Dual-core",
"External Flash",
"USB",
"WiFi"
],
"id": "RPI_PICO_W",
"images": [
"rp2-pico-w.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "Pico W",
"thumbnail": "",
"url": "https://www.raspberrypi.com/products/raspberry-pi-pico/",
"vendor": "Raspberry Pi"
},
{
"build": "W5100S_EVB_PICO",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Dual-core",
"Ethernet",
"External Flash",
"USB"
],
"id": "W5100S_EVB_PICO",
"images": [
"W5100S-EVB-Pico.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "Wiznet W5100S-EVB-Pico",
"thumbnail": "",
"url": "https://www.wiznet.io/product-item/w5100s-evb-pico/",
"vendor": "Wiznet"
},
{
"build": "PIMORONI_PICOLIPO",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Battery Charging",
"Dual-core",
"External Flash",
"JST-SH",
"USB-C"
],
"id": "PIMORONI_PICOLIPO",
"images": [
"PimoroniPicoLipo_1of3_1024x1024.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "Pico LiPo",
"thumbnail": "",
"url": "https://shop.pimoroni.com/products/pimoroni-pico-lipo",
"variants": {
"FLASH_16M": "16 MiB Flash"
},
"vendor": "Pimoroni"
},
{
"build": "SPARKFUN_PROMICRO_RP2350",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Dual-core",
"External Flash",
"External RAM",
"JST-SH",
"RGB LED",
"USB-C"
],
"id": "SPARKFUN_PROMICRO_RP2350",
"images": [
"DEV-24870-Pro-Micro-RP2350-Feature.jpg"
],
"mcu": "rp2350",
"port": "rp2",
"product": "Pro Micro RP2350",
"thumbnail": "",
"url": "https://www.sparkfun.com/products/24870",
"vendor": "Sparkfun"
},
{
"build": "W5500_EVB_PICO",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Dual-core",
"Ethernet",
"External Flash",
"USB"
],
"id": "W5500_EVB_PICO",
"images": [
"W5500-EVB-Pico.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "Wiznet W5500-EVB-Pico",
"thumbnail": "",
"url": "https://docs.wiznet.io/Product/iEthernet/W5500/w5500-evb-pico",
"vendor": "Wiznet"
},
{
"build": "RPI_PICO2",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Dual-core",
"External Flash",
"USB"
],
"id": "RPI_PICO2",
"images": [
"rp2-pico2.jpg"
],
"mcu": "rp2350",
"port": "rp2",
"product": "Pico 2",
"thumbnail": "",
"url": "https://www.raspberrypi.com/products/raspberry-pi-pico-2/",
"variants": {
"RISCV": "RISC-V CPU mode"
},
"vendor": "Raspberry Pi"
},
{
"build": "ADAFRUIT_FEATHER_RP2040",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Battery Charging",
"Dual-core",
"External Flash",
"Feather",
"JST-SH",
"RGB LED",
"USB-C"
],
"id": "ADAFRUIT_FEATHER_RP2040",
"images": [
"4884-06.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "Feather RP2040",
"thumbnail": "",
"url": "https://www.adafruit.com/product/4884",
"vendor": "Adafruit"
},
{
"build": "POLOLU_3PI_2040_ROBOT",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"USB-C",
"IMU",
"RGB LED",
"Display",
"Dual-core",
"External Flash"
],
"id": "POLOLU_3PI_2040_ROBOT",
"images": [
"pololu_3pi_2040_robot.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "Pololu 3pi+ 2040 Robot",
"thumbnail": "",
"url": "https://www.pololu.com/3pi",
"vendor": "Pololu"
},
{
"build": "RPI_PICO",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Dual-core",
"External Flash",
"USB"
],
"id": "RPI_PICO",
"images": [
"rp2-pico.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "Pico",
"thumbnail": "",
"url": "https://www.raspberrypi.com/products/raspberry-pi-pico/",
"vendor": "Raspberry Pi"
},
{
"build": "NULLBITS_BIT_C_PRO",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Dual-core",
"External Flash",
"RGB LED",
"USB-C"
],
"id": "NULLBITS_BIT_C_PRO",
"images": [
"nullbits_bit_c_pro.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "Bit-C PRO",
"thumbnail": "",
"url": "https://nullbits.co/bit-c-pro",
"vendor": "nullbits"
},
{
"build": "POLOLU_ZUMO_2040_ROBOT",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"USB-C",
"JST-SH",
"IMU",
"RGB LED",
"Display",
"Dual-core",
"External Flash"
],
"id": "POLOLU_ZUMO_2040_ROBOT",
"images": [
"pololu_zumo_2040_robot.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "Pololu Zumo 2040 Robot",
"thumbnail": "",
"url": "https://www.pololu.com/zumo",
"vendor": "Pololu"
},
{
"build": "SPARKFUN_THINGPLUS",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Battery Charging",
"Dual-core",
"External Flash",
"Feather",
"JST-SH",
"RGB LED",
"USB-C",
"microSD"
],
"id": "SPARKFUN_THINGPLUS",
"images": [
"17745-SparkFun_Thing_Plus_-_RP2040-01a.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "Thing Plus RP2040",
"thumbnail": "",
"url": "https://www.sparkfun.com/products/17745",
"vendor": "Sparkfun"
},
{
"build": "ADAFRUIT_QTPY_RP2040",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Dual-core",
"External Flash",
"JST-SH",
"RGB LED",
"USB-C"
],
"id": "ADAFRUIT_QTPY_RP2040",
"images": [
"4900-12.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "QT Py RP2040",
"thumbnail": "",
"url": "https://www.adafruit.com/product/4900",
"vendor": "Adafruit"
},
{
"build": "GARATRONIC_PYBSTICK26_RP2040",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Dual-core",
"External Flash",
"RGB LED",
"USB"
],
"id": "GARATRONIC_PYBSTICK26_RP2040",
"images": [
"pybstick-rp2040-26-broches-micropython-c.jpg"
],
"mcu": "rp2040",
"port": "rp2",
"product": "PYBSTICK26 RP2040",
"thumbnail": "",
"url": "https://shop.mchobby.be/product.php?id_product=2331",
"vendor": "McHobby"
},
{
"build": "SEEED_ARCH_MIX",
"deploy": [
"deploy.md"
],
"docs": "",
"features": [
"External Flash",
"External RAM",
"RGB LED",
"USB",
"microSD"
],
"id": "SEEED_ARCH_MIX",
"images": [
"main1.jpg"
],
"mcu": "mimxrt",
"port": "mimxrt",
"product": "Arch Mix",
"thumbnail": "",
"url": "https://wiki.seeedstudio.com/Arch_Mix/",
"vendor": "Seeed Studio"
},
{
"build": "MIMXRT1020_EVK",
"deploy": [
"../deploy_mimxrt.md"
],
"docs": "",
"features": [
"Audio Codec",
"CAN",
"Ethernet",
"External Flash",
"External RAM",
"Microphone",
"USB",
"microSD"
],
"id": "MIMXRT1020_EVK",
"images": [
"MIMXRT-1020-EVKBD.jpg"
],
"mcu": "mimxrt",
"port": "mimxrt",
"product": "MIMXRT1020_EVK",
"thumbnail": "",
"url": "https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-rt1020-evaluation-kit:MIMXRT1020-EVK",
"vendor": "NXP"
},
{
"build": "MIMXRT1170_EVK",
"deploy": [
"../deploy_mimxrt.md"
],
"docs": "",
"features": [
"Audio Codec",
"CAN",
"Camera",
"Ethernet",
"External Flash",
"External RAM",
"Microphone",
"USB",
"microSD"
],
"id": "MIMXRT1170_EVK",
"images": [
"IMX-RT1170-EVK-TOP.jpg"
],
"mcu": "mimxrt",
"port": "mimxrt",
"product": "MIMXRT1170_EVK",
"thumbnail": "",
"url": "https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-rt1170-evaluation-kit:MIMXRT1170-EVK",
"vendor": "NXP"
},
{
"build": "MIMXRT1064_EVK",
"deploy": [
"../deploy_mimxrt.md"
],
"docs": "",
"features": [
"Audio Codec",
"CAN",
"Camera",
"Ethernet",
"External Flash",
"External RAM",
"Microphone",
"USB",
"microSD"
],
"id": "MIMXRT1064_EVK",
"images": [
"MIMXRT1064EVK-TOP.jpg"
],
"mcu": "mimxrt",
"port": "mimxrt",
"product": "MIMXRT1064_EVK",
"thumbnail": "",
"url": "https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-rt1064-evaluation-kit:MIMXRT1064-EVK",
"vendor": "NXP"
},
{
"build": "TEENSY41",
"deploy": [
"../deploy_teensy.md"
],
"docs": "",
"features": [
"Ethernet",
"External Flash",
"USB",
"microSD"
],
"id": "TEENSY41",
"images": [
"teensy41_4.jpg"
],
"mcu": "mimxrt",
"port": "mimxrt",
"product": "Teensy 4.1",
"thumbnail": "",
"url": "https://www.pjrc.com/store/teensy41.html",
"vendor": "PJRC"
},
{
"build": "ADAFRUIT_METRO_M7",
"deploy": [
"deploy_metro_m7.md"
],
"docs": "",
"features": [
"BLE",
"External Flash",
"JST-SH",
"RGB LED",
"USB-C",
"WiFi"
],
"id": "ADAFRUIT_METRO_M7",
"images": [
"Metro_M7.jpg"
],
"mcu": "mimxrt",
"port": "mimxrt",
"product": "Adafruit Metro M7",
"thumbnail": "",
"url": "https://www.adafruit.com/product/4950",
"vendor": "Adafruit"
},
{
"build": "MIMXRT1060_EVK",
"deploy": [
"../deploy_mimxrt.md"
],
"docs": "",
"features": [
"Audio Codec",
"CAN",
"Camera",
"Ethernet",
"External Flash",
"External RAM",
"Microphone",
"USB",
"microSD"
],
"id": "MIMXRT1060_EVK",
"images": [
"X-MIMXRT1060-EVK-BOARD-BOTTOM.jpg"
],
"mcu": "mimxrt",
"port": "mimxrt",
"product": "MIMXRT1060_EVK",
"thumbnail": "",
"url": "https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-rt1060-evaluation-kit:MIMXRT1060-EVK",
"vendor": "NXP"
},
{
"build": "MIMXRT1015_EVK",
"deploy": [
"../deploy_mimxrt.md"
],
"docs": "",
"features": [
"Audio Codec",
"External Flash",
"Microphone",
"USB"
],
"id": "MIMXRT1015_EVK",
"images": [
"MIMXRT1015-EVK-TOP.jpg"
],
"mcu": "mimxrt",
"port": "mimxrt",
"product": "MIMXRT1015_EVK",
"thumbnail": "",
"url": "https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-rt1015-evaluation-kit:MIMXRT1015-EVK",
"vendor": "NXP"
},
{
"build": "MIMXRT1010_EVK",
"deploy": [
"../deploy_mimxrt.md"
],
"docs": "",
"features": [
"Audio Codec",
"External Flash",
"Microphone",
"USB"
],
"id": "MIMXRT1010_EVK",
"images": [
"i.MXRT1010-TOP.jpg"
],
"mcu": "mimxrt",
"port": "mimxrt",
"product": "MIMXRT1010_EVK",
"thumbnail": "",
"url": "https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-rt1010-evaluation-kit:MIMXRT1010-EVK",
"vendor": "NXP"
},
{
"build": "OLIMEX_RT1010",
"deploy": [
"deploy_olimex.md"
],
"docs": "",
"features": [
"External Flash",
"USB",
"microSD"
],
"id": "OLIMEX_RT1010",
"images": [
"OLIMEX_RT1010Py.jpg"
],
"mcu": "mimxrt",
"port": "mimxrt",
"product": "Olimex_RT1010Py",
"thumbnail": "",
"url": "https://www.olimex.com/Products/ARM/NXP",
"vendor": "OLIMEX"
},
{
"build": "TEENSY40",
"deploy": [
"../deploy_teensy.md"
],
"docs": "",
"features": [
"External Flash",
"USB"
],
"id": "TEENSY40",
"images": [
"teensy40_front.jpg"
],
"mcu": "mimxrt",
"port": "mimxrt",
"product": "Teensy 4.0",
"thumbnail": "",
"url": "https://www.pjrc.com/store/teensy40.html",
"vendor": "PJRC"
},
{
"build": "MIMXRT1050_EVK",
"deploy": [
"../deploy_mimxrt.md"
],
"docs": "",
"features": [
"Audio Codec",
"CAN",
"Ethernet",
"External Flash",
"External RAM",
"Microphone",
"USB",
"microSD"
],
"id": "MIMXRT1050_EVK",
"images": [
"IMX_RT1050-EVKB_TOP-LR.jpg"
],
"mcu": "mimxrt",
"port": "mimxrt",
"product": "MIMXRT1050_EVK",
"thumbnail": "",
"url": "https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-rt1050-evaluation-kit:MIMXRT1050-EVK",
"vendor": "NXP"
},
{
"build": "SPARKFUN_SAMD51_THING_PLUS",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Battery Charging",
"External Flash",
"JST-SH",
"USB"
],
"id": "SPARKFUN_SAMD51_THING_PLUS",
"images": [
"sparkfun_samd51_thing_plus.jpg"
],
"mcu": "samd51",
"port": "samd",
"product": "Sparkfun SAMD51 Thing Plus",
"thumbnail": "",
"url": "https://www.sparkfun.com/products/14713",
"vendor": "Sparkfun"
},
{
"build": "SEEED_XIAO_SAMD21",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"USB-C"
],
"id": "SEEED_XIAO_SAMD21",
"images": [
"seeeduino-xiao.jpg"
],
"mcu": "samd21",
"port": "samd",
"product": "Seeeduino XIAO (SAMD21)",
"thumbnail": "",
"url": "https://www.seeedstudio.com/Seeeduino-XIAO-Arduino-Microcontroller-SAMD21-Cortex-M0+-p-4426.html",
"vendor": "Seeed Studio"
},
{
"build": "SEEED_WIO_TERMINAL",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"BLE",
"Display",
"External Flash",
"JST-PH",
"SDCard",
"USB-C",
"WiFi"
],
"id": "SEEED_WIO_TERMINAL",
"images": [
"wio-terminal.jpg"
],
"mcu": "samd51",
"port": "samd",
"product": "Wio Terminal D51R",
"thumbnail": "",
"url": "https://www.seeedstudio.com/Wio-Terminal-p-4509.html",
"vendor": "Seeed Studio"
},
{
"build": "ADAFRUIT_METRO_M4_EXPRESS",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"BLE",
"DAC",
"External Flash",
"RGB LED",
"USB",
"WiFi"
],
"id": "ADAFRUIT_METRO_M4_EXPRESS",
"images": [
"metro_m4_express_airlift.jpg"
],
"mcu": "samd51",
"port": "samd",
"product": "Metro M4 Express Airlift",
"thumbnail": "",
"url": "https://www.adafruit.com/product/4000",
"vendor": "Adafruit"
},
{
"build": "ADAFRUIT_ITSYBITSY_M4_EXPRESS",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"External Flash",
"RGB LED",
"USB"
],
"id": "ADAFRUIT_ITSYBITSY_M4_EXPRESS",
"images": [
"itsybitsy_m4_express.jpg"
],
"mcu": "samd51",
"port": "samd",
"product": "ItsyBitsy M4 Express",
"thumbnail": "",
"url": "https://www.adafruit.com/product/3800",
"vendor": "Adafruit"
},
{
"build": "ADAFRUIT_FEATHER_M4_EXPRESS",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Battery Charging",
"External Flash",
"Feather",
"RGB LED",
"USB"
],
"id": "ADAFRUIT_FEATHER_M4_EXPRESS",
"images": [
"feather_m4_express.jpg"
],
"mcu": "samd51",
"port": "samd",
"product": "Feather M4 Express",
"thumbnail": "",
"url": "https://www.adafruit.com/product/3857",
"vendor": "Adafruit"
},
{
"build": "MINISAM_M4",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"External Flash",
"RGB LED",
"USB"
],
"id": "MINISAM_M4",
"images": [
"mini_sam_m4.jpg"
],
"mcu": "samd51",
"port": "samd",
"product": "Mini SAM M4",
"thumbnail": "",
"url": "https://minifigboards.com/products/mini-sam-m4",
"vendor": "MiniFig Boards"
},
{
"build": "ADAFRUIT_FEATHER_M0_EXPRESS",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"Battery Charging",
"External Flash",
"Feather",
"RGB LED",
"USB"
],
"id": "ADAFRUIT_FEATHER_M0_EXPRESS",
"images": [
"feather_m0_express.jpg"
],
"mcu": "samd21",
"port": "samd",
"product": "Feather M0 Express",
"thumbnail": "",
"url": "https://www.adafruit.com/product/3403",
"vendor": "Adafruit"
},
{
"build": "SAMD21_XPLAINED_PRO",
"deploy": [
"deploy_xplained_pro.md"
],
"docs": "",
"features": [
"External Flash",
"USB"
],
"id": "SAMD21_XPLAINED_PRO",
"images": [
"2033-atsamd21-xpro.jpg"
],
"mcu": "samd21",
"port": "samd",
"product": "SAMD21 Xplained Pro",
"thumbnail": "",
"url": "https://www.microchip.com/en-us/development-tool/atsamd21-xpro",
"vendor": "Microchip"
},
{
"build": "ADAFRUIT_ITSYBITSY_M0_EXPRESS",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"External Flash",
"RGB LED",
"USB"
],
"id": "ADAFRUIT_ITSYBITSY_M0_EXPRESS",
"images": [
"itsybitsy_m0_express.jpg"
],
"mcu": "samd21",
"port": "samd",
"product": "ItsyBitsy M0 Express",
"thumbnail": "",
"url": "https://www.adafruit.com/product/3727",
"vendor": "Adafruit"
},
{
"build": "ADAFRUIT_TRINKET_M0",
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"RGB LED",
"USB"
],
"id": "ADAFRUIT_TRINKET_M0",
"images": [
"trinket_m0.jpg"
],
"mcu": "samd21",
"port": "samd",
"product": "Trinket M0",
"thumbnail": "",
"url": "https://www.adafruit.com/product/3500",
"vendor": "Adafruit"
}
]

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

The following files are daily firmware for the LILYGO TTGO LoRa32.

Support for hardware versions v1.0, v1.2, v1.6 and v2.0.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyUSB or /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0x1000:

esptool.py --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If flashing starts and then fails partway through, try removing the --baud 460800 option to flash at the slower default speed.

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0x1000:

esptool.py write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0x1000:

esptool.py write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyUSB or /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0x1000:

esptool.py --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If flashing starts and then fails partway through, try removing the --baud 460800 option to flash at the slower default speed.

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The AtomS3 Lite (docs) is an ESP32-S3 based development board from M5Stack.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

Installation instructions

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

Quail via DFU

Quail can be programmed via USB with the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader press and release the Reset button while holding the Boot button. Alternatively, you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

Firmware can be loaded to the MIMXRT development boards in various ways. The most convenient one is using the built-in support MCU. When a PC is connected to the debug USB port, a drive icon will appear. Firmware can be uploaded to the board by copying it to this drive. The copy and flashing will take a few moments. At the end of the upload, the drive icon will disappear and reappear again. Then the reset button has to be pushed, which starts the MicroPython firmware.

Depending on the power jumper settings, both the debug USB and OTG USB port have to be powered during firmware upload.

You may as well load the firmware using the JLink port or openSDA interface with the appropriate tools. For more options, consult the user guide of the board.

Installation instructions

Firmware can be loaded to the MIMXRT development boards in various ways. The most convenient one is using the built-in support MCU. When a PC is connected to the debug USB port, a drive icon will appear. Firmware can be uploaded to the board by copying it to this drive. The copy and flashing will take a few moments. At the end of the upload, the drive icon will disappear and reappear again. Then the reset button has to be pushed, which starts the MicroPython firmware.

Depending on the power jumper settings, both the debug USB and OTG USB port have to be powered during firmware upload.

You may as well load the firmware using the JLink port or openSDA interface with the appropriate tools. For more options, consult the user guide of the board.

Installation instructions

Firmware can be loaded to the MIMXRT development boards in various ways. The most convenient one is using the built-in support MCU. When a PC is connected to the debug USB port, a drive icon will appear. Firmware can be uploaded to the board by copying it to this drive. The copy and flashing will take a few moments. At the end of the upload, the drive icon will disappear and reappear again. Then the reset button has to be pushed, which starts the MicroPython firmware.

Depending on the power jumper settings, both the debug USB and OTG USB port have to be powered during firmware upload.

You may as well load the firmware using the JLink port or openSDA interface with the appropriate tools. For more options, consult the user guide of the board.

Installation instructions

Firmware can be loaded to the MIMXRT development boards in various ways. The most convenient one is using the built-in support MCU. When a PC is connected to the debug USB port, a drive icon will appear. Firmware can be uploaded to the board by copying it to this drive. The copy and flashing will take a few moments. At the end of the upload, the drive icon will disappear and reappear again. Then the reset button has to be pushed, which starts the MicroPython firmware.

Depending on the power jumper settings, both the debug USB and OTG USB port have to be powered during firmware upload.

You may as well load the firmware using the JLink port or openSDA interface with the appropriate tools. For more options, consult the user guide of the board.

The port for this board is experimental. It is made based on the documentation, but was not yet tested.

Installation instructions

Firmware can be loaded to the MIMXRT development boards in various ways. The most convenient one is using the built-in support MCU. When a PC is connected to the debug USB port, a drive icon will appear. Firmware can be uploaded to the board by copying it to this drive. The copy and flashing will take a few moments. At the end of the upload, the drive icon will disappear and reappear again. Then the reset button has to be pushed, which starts the MicroPython firmware.

Depending on the power jumper settings, both the debug USB and OTG USB port have to be powered during firmware upload.

You may as well load the firmware using the JLink port or openSDA interface with the appropriate tools. For more options, consult the user guide of the board.

The port for this board is experimental. It is made based on the documentation, but was not yet tested.

Installation instructions

Firmware can be loaded to the MIMXRT development boards in various ways. The most convenient one is using the built-in support MCU. When a PC is connected to the debug USB port, a drive icon will appear. Firmware can be uploaded to the board by copying it to this drive. The copy and flashing will take a few moments. At the end of the upload, the drive icon will disappear and reappear again. Then the reset button has to be pushed, which starts the MicroPython firmware.

Depending on the power jumper settings, both the debug USB and OTG USB port have to be powered during firmware upload.

You may as well load the firmware using the JLink port or openSDA interface with the appropriate tools. For more options, consult the user guide of the board.

Installation instructions

Firmware can be loaded to the MIMXRT development boards in various ways. The most convenient one is using the built-in support MCU. When a PC is connected to the debug USB port, a drive icon will appear. Firmware can be uploaded to the board by copying it to this drive. The copy and flashing will take a few moments. At the end of the upload, the drive icon will disappear and reappear again. Then the reset button has to be pushed, which starts the MicroPython firmware.

Depending on the power jumper settings, both the debug USB and OTG USB port have to be powered during firmware upload.

You may as well load the firmware using the JLink port or openSDA interface with the appropriate tools. For more options, consult the user guide of the board.

Installation instructions

For deploying the MicroPython firmware to the SAMD module, follow the procedure:

  • Push the reset button twice or call machine.bootloader(). A drive icon should appear representing a virtual drive.

  • Copy the .uf2 file with the required firmware to that drive.

As soon as the drive disappears, the firmware is loaded and started.

The following files are firmware for the NanoS3.

Installation instructions

To flash or erase your NANOS3, you have to first put it into download mode. NANOS3 doesn't include buttons for RESET and IO0, which should be provided by adding external buttons via a carrier board or other method. To put the NANOS3 into download, follow these steps:

  • Press and hold the [BOOT] button
  • Press and release the [RESET] button
  • Release the [BOOT] button

Now the board is in download mode and the native USB will have enumerated as a serial device.

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD mode=UR dLPM -d firmware.hex -v -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

The following files are firmware for Olimex ESP32 boards with Ethernet. They match the boards ESP32 EVB.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyUSB or /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0x1000:

esptool.py --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If flashing starts and then fails partway through, try removing the --baud 460800 option to flash at the slower default speed.

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following files are firmware for Olimex ESP32 boards with Ethernet. They match the boards ESP32 ETH-PoE, ESP32 ETH-PoE-ISO and ESP32 Gateway.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyUSB or /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0x1000:

esptool.py --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If flashing starts and then fails partway through, try removing the --baud 460800 option to flash at the slower default speed.

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

For initial deployment of the firmware a few preparation steps are required, which have to be done once.

  1. Get the files ufconv.py and uf2families.json from the micropython/tools directory, e.g. at https://github.com/micropython/micropython/tree/master/tools.

  2. Get the NXP program sdphost for your operating system, e.g. from https://github.com/adafruit/tinyuf2/tree/master/ports/mimxrt10xx/sdphost. You can also get them from the NXP web sites.

  3. Get the UF2 boot-loader package https://github.com/adafruit/tinyuf2/releases/download/0.9.0/tinyuf2-imxrt1010_evk-0.9.0.zip and extract the file tinyuf2-imxrt1010_evk-0.9.0.bin.

Now you have all files at hand that you will need for updating.

  1. Get the firmware you want to upload from the MicroPython download page.

  2. Push and hold the "Boot" button, then press "Reset", and release both buttons.

  3. Run the commands:

sudo ./sdphost -u 0x1fc9,0x0145 -- write-file 0x20206400 tinyuf2-imxrt1010_evk-0.9.0.bin
sudo ./sdphost -u 0x1fc9,0x0145 -- jump-address 0x20207000

Wait until a drive icon appears on the computer (or mount it explicitly), and then run:

python3 uf2conv.py <firmware_xx.yy.zz.hex> --base 0x60000400 -f 0x4fb2d5bd

You can put all of that in a script. Just add a short wait before the 3rd command to let the drive connect.

  1. Once the upload is finished, push Reset again.

Using sudo is Linux specific. You may not need it at all, if the access rights are set properly, and you will not need it for Windows.

Once the generic boot-loader is available, this procedure is only required for the first firmware load or in case the flash is corrupted and the existing firmware is not functioning any more.

The following files are firmware for the OMGS3.

Installation instructions

To flash or erase your OMGS3, you have to first put it into download mode.

OMGS3 doesn't include buttons for RESET and IO0, which should be provided by adding external buttons via a carrier board or other method. To put the OMGS3 into download, follow these steps:

  • Press and hold the [BOOT] button
  • Press and release the [RESET] button
  • Release the [BOOT] button

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

Installation instructions

Installation instructions

Installation instructions

Installation instructions

Installation instructions

Installation instructions

Installation instructions

Installation instructions

Installation instructions

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Firmware can be found in the sections below, which is built daily from the ports/stm32/ directory of MicroPython. Check which model you have by the sticker on the top.

Installation instructions

Pyboard-D via mboot

For the pyboard D-series you can enter the mboot DFU bootloader by executing machine.bootloader() at the MicroPython REPL. Alternatively, mboot can be entered by holding down the USR button, pressing and releasing the RST button, and continuing to hold down USR until the LED is white (4th in the cycle), then let go of USR while the LED is white. The LED will then flash red once per second to indicate it is in USB DFU mode. You can then program the firmware using a DFU programmer, eg dfu-util or pydfu.py.

Firmware can be found in the sections below, which is built daily from the ports/stm32/ directory of MicroPython. Check which model you have by the sticker on the top.

Installation instructions

Pyboard-D via mboot

For the pyboard D-series you can enter the mboot DFU bootloader by executing machine.bootloader() at the MicroPython REPL. Alternatively, mboot can be entered by holding down the USR button, pressing and releasing the RST button, and continuing to hold down USR until the LED is white (4th in the cycle), then let go of USR while the LED is white. The LED will then flash red once per second to indicate it is in USB DFU mode. You can then program the firmware using a DFU programmer, eg dfu-util or pydfu.py.

Firmware can be found in the sections below, which is built daily from the ports/stm32/ directory of MicroPython. Check which model you have by the sticker on the top.

Installation instructions

Pyboard-D via mboot

For the pyboard D-series you can enter the mboot DFU bootloader by executing machine.bootloader() at the MicroPython REPL. Alternatively, mboot can be entered by holding down the USR button, pressing and releasing the RST button, and continuing to hold down USR until the LED is white (4th in the cycle), then let go of USR while the LED is white. The LED will then flash red once per second to indicate it is in USB DFU mode. You can then program the firmware using a DFU programmer, eg dfu-util or pydfu.py.

The "standard" build is listed first and is the default firmware that the pyboards are shipped with. Use this firmware if you are uncertain. The "double FP" builds use double-precision floating point instead of the standard single precision. The "threading" builds contain the _thread module and allow multithreading. The "network" builds have network drivers for WIZ820io included. All these different firmware are completely interchangeable and you can freely change from one to the other without losing the filesystem on your pyboard.

Installation instructions

Pyboard v1.x via DFU

One you have downloaded the appropriate DFU file it can be flashed directly to your pyboard using a DFU programmer. You can enter the DFU bootloader on the pyboard by executing machine.bootloader() at the MicroPython REPL.

Alternatively, connect 3V3 with BOOT0 and reset the board. For information about DFU programming on Windows see this PDF. For Linux and Mac see here.

The "standard" build is listed first and is the default firmware that the pyboards are shipped with. Use this firmware if you are uncertain. The "double FP" builds use double-precision floating point instead of the standard single precision. The "threading" builds contain the _thread module and allow multithreading. The "network" builds have network drivers for WIZ820io included. All these different firmware are completely interchangeable and you can freely change from one to the other without losing the filesystem on your pyboard.

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

The "standard" build is listed first and is the default firmware that the pyboards are shipped with. Use this firmware if you are uncertain. The "double FP" builds use double-precision floating point instead of the standard single precision. The "threading" builds contain the _thread module and allow multithreading. The "network" builds have network drivers for WIZ820io included. All these different firmware are completely interchangeable and you can freely change from one to the other without losing the filesystem on your pyboard.

Installation instructions

Pyboard v1.x via DFU

One you have downloaded the appropriate DFU file it can be flashed directly to your pyboard using a DFU programmer. You can enter the DFU bootloader on the pyboard by executing machine.bootloader() at the MicroPython REPL.

Alternatively, connect 3V3 with BOOT0 and reset the board. For information about DFU programming on Windows see this PDF. For Linux and Mac see here.

Installation instructions

Renesas RA Family Board via J-Flash Lite

You can download J-Link Software and Documentation pack that includes a flash programming tool J-Flash Lite.

A .hex file can be flashed using J-Flash Lite.

  1. Start J-Flash Lite.
  2. Select device name for board.
  • EK-RA4M1: R7FA4M1AB
  • EK-RA4W1: R7FA4W1AD2CNG
  • EK-RA6M1: R7FA6M1AD
  • EK-RA6M2: R7FA6M2AF
  • RA4M1 CLICKER: R7FA4M1AB
  1. press OK.
  2. Select firmware.hex file for Data File.
  3. Press Program Device.

Please refer to the Getting started with MicroPython on the Renesas RA about cable connection between the board and your PC.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

The SAMD21 Xplained Pro board is shipped without a bootloader. For use with MicroPyhton a suitable bootloader has be be installed first. The following procedure has been found to work and be simple:

  1. Get the bootloader from https://micropython.org/resources/firmware/bootloader-xplained-pro-v3.16.0-15-gaa52b22.hex.
  2. Connect your board to the debug port. A drive with the name XPLAINED shall appear.
  3. Copy the Intel hex file of the bootloader to that drive.
  4. Connect your board to the target port. A drive with the name SAMD21XPL should appear. If not, push reset twice. Then it should appear. If that does not happen, the bootloader was not properly installed or is not compatible.
  5. Copy the MicroPython firmware, a .uf2 file, to the SAMD21 drive. When the SAMD21 drive disappears, MicroPython is installed.

From now on only steps 4 and 5 are needed to update MicroPython. You can use the usual methods to invoke the bootloader, namely:

  • Push Reset twice.
  • Call machine.bootloader().
  • Use the touch 1200 procedure by switching the USB baud rate to 1200 baud and back.

At the above link above there are as well .uf2 versions of the bootloader which one can install using steps 5. and 6. above once a .uf2 capable bootloader is installed.

Installation instructions

Firmware upload to the Seed ARCH MIX board can be done using the J-Link interface For that, follow the instructions given by Seed in their Wiki at https://wiki.seeedstudio.com/Arch_Mix/#flashing-arduino-bootloader-to-arch-mix. You will need a J-Link debug probe and software. What has been tested was the Segger JLlink edu or Segger JLink edu mini. As matching loader tool you can use Segger JFlashLite. The target address for loading is 0x60000000.

Installation instructions

For deploying the MicroPython firmware to the SAMD module, follow the procedure:

  • Push the reset button twice or call machine.bootloader(). A drive icon should appear representing a virtual drive.

  • Copy the .uf2 file with the required firmware to that drive.

As soon as the drive disappears, the firmware is loaded and started.

Installation instructions

The steps below let you create and install the firmware file. For a .uf2 type file taken from the MicroPython downloads source only step 4 is needed. For the .hex version of the firmware file, steps 1, 3 and 4 are required.

  1. Download and install u2fconv.py. It is available e.g. in the tools directory of MicroPython.

  2. Create a firmware for the SEEED nrf52840 if needed, with the command

    make BOARD=SEEED_XIAO_NRF52 -j5

    in the directory build-SEEED_XIAO_NRF52-s140. The firmware file will have the name firmware.uf2.

  3. Create the .uf2 file if needed in the build directory with the command:

    uf2conv.py -c -f 0xADA52840 -o firmware.uf2 firmware.hex

    It must report the start address as 0x27000. If you omit the -o option, the output file will have the name flash.uf2.

  4. Enable the upload mode by pushing reset twice or calling machine.bootloader() and copy the file firmware.uf2 to the board drive, which will pop up on your PC.

In case the XIAO bootloader is lost or overwritten, it can be found at https://github.com/Seeed-Studio/Adafruit_nRF52_Arduino.git in different formats. Using a JLINK adapter or interface, it can be uploaded as hex version. The bootloader is as well available through the Arduino IDE.

Installation instructions

For deploying the MicroPython firmware to the SAMD module, follow the procedure:

  • Push the reset button twice or call machine.bootloader(). A drive icon should appear representing a virtual drive.

  • Copy the .uf2 file with the required firmware to that drive.

As soon as the drive disappears, the firmware is loaded and started.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, double press the reset button SW1. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyUSB or /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0x1000:

esptool.py --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If flashing starts and then fails partway through, try removing the --baud 460800 option to flash at the slower default speed.

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

For deploying the MicroPython firmware to the SAMD module, follow the procedure:

  • Push the reset button twice or call machine.bootloader(). A drive icon should appear representing a virtual drive.

  • Copy the .uf2 file with the required firmware to that drive.

As soon as the drive disappears, the firmware is loaded and started.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

For deploying the firmware use the Teensy Loader tool provided by PJRC on their web site. PJRC provides both a graphical and command line version for Windows, OS X and Linux. With the command line version, run the command:

teensy_loader_cli --mcu=imxrt1062 -v -w TEENSY40-<date_version_tag>.hex

or for Teensy 4.1:

teensy_loader_cli --mcu=imxrt1062 -v -w TEENSY41-<date_version_tag>.hex

Instead of imxrt1062 with the --mcu option, you can as well use the board specific names TEENSY40, TEENSY41 or TEENSY_MICROMOD. When loading the firmware the PJRC boot loader will erase the board file system.

Note: If the Teensy board is equipped with Teensy bootloader v1.07 and up, the first attempt to upload the firmware may fail. In that case try again.

Installation instructions

For deploying the firmware use the Teensy Loader tool provided by PJRC on their web site. PJRC provides both a graphical and command line version for Windows, OS X and Linux. With the command line version, run the command:

teensy_loader_cli --mcu=imxrt1062 -v -w TEENSY40-<date_version_tag>.hex

or for Teensy 4.1:

teensy_loader_cli --mcu=imxrt1062 -v -w TEENSY41-<date_version_tag>.hex

Instead of imxrt1062 with the --mcu option, you can as well use the board specific names TEENSY40, TEENSY41 or TEENSY_MICROMOD. When loading the firmware the PJRC boot loader will erase the board file system.

Note: If the Teensy board is equipped with Teensy bootloader v1.07 and up, the first attempt to upload the firmware may fail. In that case try again.

The following files are firmware for the FeatherS2.

Installation instructions

To flash or erase your FeatherS2, you have to first put it into download mode.

To put the FeatherS2 into download, follow these steps:

  • Press and hold the [BOOT] button
  • Press and release the [RESET] button
  • Release the [BOOT] button

Now the board is in download mode and the native USB will have enumerated as a serial device.

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0x1000:

esptool.py write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following files are firmware for the FeatherS2 Neo.

Installation instructions

To flash or erase your FeatherS2 Neo, you have to first put it into download mode.

To put the FeatherS2 Neo into download, follow these steps:

  • Press and hold the [BOOT] button
  • Press and release the [RESET] button
  • Release the [BOOT] button

Now the board is in download mode and the native USB will have enumerated as a serial device.

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0x1000:

esptool.py write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following files are firmware for the FeatherS3.

Installation instructions

To flash or erase your FeatherS3, you have to first put it into download mode.

To put the FeatherS3 into download, follow these steps:

  • Press and hold the [BOOT] button
  • Press and release the [RESET] button
  • Release the [BOOT] button

Now the board is in download mode and the native USB will have enumerated as a serial device.

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following files are firmware for the FeatherS3 Neo.

Installation instructions

To flash or erase your FeatherS3 Neo, you have to first put it into download mode.

To put the FeatherS3 Neo into download, follow these steps:

  • Press and hold the [BOOT] button
  • Press and release the [RESET] button
  • Release the [BOOT] button

Now the board is in download mode and the native USB will have enumerated as a serial device.

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following files are firmware for the ProS3.

Installation instructions

To flash or erase your ProS3, you have to first put it into download mode.

To put the ProS3 into download, follow these steps:

  • Press and hold the [BOOT] button
  • Press and release the [RESET] button
  • Release the [BOOT] button

Now the board is in download mode and the native USB will have enumerated as a serial device.

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following files are firmware for the RGB Touch Mini.

Installation instructions

To flash or erase your RGB Touch Mini, you have to first put it into download mode.

To put the RGB Touch Mini into download, follow these steps:

  • Press and hold the [BOOT] button
  • Press and release the [RESET] button
  • Release the [BOOT] button

Now the board is in download mode and the native USB will have enumerated as a serial device.

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

Installation instructions

To put the TinyC6 into 'download mode', hold the BOOT button while connecting the USB cable. It can be released after the connection is made.

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following files are firmware for the TinyPICO.

Installation instructions

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyUSB or /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0x1000:

esptool.py --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME --baud 460800 write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If flashing starts and then fails partway through, try removing the --baud 460800 option to flash at the slower default speed.

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following files are firmware for the TinyS2.

Installation instructions

To flash or erase your TinyS2, you have to first put it into download mode.

To put the TinyS2 into download, follow these steps:

  • Press and hold the [BOOT] button
  • Press and release the [RESET] button
  • Release the [BOOT] button

Now the board is in download mode and the native USB will have enumerated as a serial device.

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0x1000:

esptool.py write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0x1000 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following files are firmware for the TinyS3.

Installation instructions

To flash or erase your TinyS3, you have to first put it into download mode.

To put the TinyS3 into download, follow these steps:

  • Press and hold the [BOOT] button
  • Press and release the [RESET] button
  • Release the [BOOT] button

Now the board is in download mode and the native USB will have enumerated as a serial device.

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

The following files are firmware for the TinyWATCH S3.

Installation instructions

To flash or erase your TinyWATCH S3, you have to first put it into download mode.

To put the TinyWATCH S3 into download, follow these steps:

  • Press and hold the [BOOT] button
  • Press and release the [RESET] button
  • Release the [BOOT] button

Now the board is in download mode and the native USB will have enumerated as a serial device.

Program your board using the esptool.py program, found here.

Windows users: You may find the installed program is called esptool instead of esptool.py.

Erasing

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py erase_flash

esptool.py will try to detect the serial port with the ESP32 automatically, but if this fails or there might be more than one Espressif-based device attached to your computer then pass the --port option with the name of the target serial port. For example:

esptool.py --port PORTNAME erase_flash
  • On Linux, the port name is usually similar to /dev/ttyACM0.
  • On Mac, the port name is usually similar to /dev/cu.usbmodem01.
  • On Windows, the port name is usually similar to COM4.

Flashing

Then deploy the firmware to the board, starting at address 0:

esptool.py write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Replace ESP32_BOARD_NAME-DATE-VERSION.bin with the .bin file downloaded from this page.

As above, if esptool.py can't automatically detect the serial port then you can pass it explicitly on the command line instead. For example:

esptool.py --port PORTNAME write_flash 0 ESP32_BOARD_NAME-DATE-VERSION.bin

Troubleshooting

If these steps don't work, consult the MicroPython ESP32 Troubleshooting steps and the esptool documentation.

Important: From the options below, download the .bin file for your board.

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

STM32 via ST-Link

Nucleo and Discovery boards typically include a built-in ST-Link programmer.

A .bin or .hex file can be flashed using st-flash.

# Optional erase to clear existing filesystem.
st-flash erase

# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex

A .hex file can be flashed using STM32 Cube Programmer.

STM32_Programmer.sh -c port=SWD -d firmware.hex -hardRst

STM32 via DFU

Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. dfu-util or pydfu.py.

To enter the bootloader the BOOT0 pin can be connected to VCC during reset, or you can use machine.bootloader() from the MicroPython REPL.

dfu-util --alt 0 -D firmware.dfu

Installation instructions

Renesas RA Family Board via J-Flash Lite

You can download J-Link Software and Documentation pack that includes a flash programming tool J-Flash Lite.

A .hex file can be flashed using J-Flash Lite.

  1. Start J-Flash Lite.
  2. Select device name for board.
  • EK-RA4M1: R7FA4M1AB
  • EK-RA4W1: R7FA4W1AD2CNG
  • EK-RA6M1: R7FA6M1AD
  • EK-RA6M2: R7FA6M2AF
  • RA4M1 CLICKER: R7FA4M1AB
  1. press OK.
  2. Select firmware.hex file for Data File.
  3. Press Program Device.

Please refer to the Getting started with MicroPython on the Renesas RA about cable connection between the board and your PC.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while plugging the board into USB. The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

Pyboard v1.x via DFU

One you have downloaded the appropriate DFU file it can be flashed directly to your pyboard using a DFU programmer. You can enter the DFU bootloader on the pyboard by executing machine.bootloader() at the MicroPython REPL.

Alternatively, connect 3V3 with BOOT0 and reset the board. For information about DFU programming on Windows see this PDF. For Linux and Mac see here.

Installation instructions

Flashing via UF2 bootloader

To get the board in bootloader mode ready for the firmware update, execute machine.bootloader() at the MicroPython REPL. Alternatively, hold down the BOOTSEL button while pressing reset (NRST). The uf2 file below should then be copied to the USB mass storage device that appears. Once programming of the new firmware is complete the device will automatically reset and be ready for use.

Installation instructions

The following files are firmware for the WiPy. The zip file contains mcuimg.bin which should be copied via ftp to the /flash/sys directory on the WiPy.

Installation instructions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy