Connecting an External AirLift FeatherWing

External AirLift boards have three optional ESP32 control pins which are not connected by default:


Make sure to solder each of these pads together. You will not be able to upload firmware to your ESP32 if they are not connected.

Upload Serial Passthrough Code

If you have already installed CircuitPython, back up any code and files you have on your CIRCUITPY drive. It will be overwritten by the code you're going to upload to your board. You should not end up losing any files on the QSPI flash, but it's a good idea to back them up anyways. 

Download the UF2 for your board to your Desktop:

To enter bootloader mode, start with your RP2040 board unplugged from USB.

Press and hold the BOOTSEL button (highlighted in red in the image of the Feather RP2040, but all RP2040 boards should include this button), continue to hold it while plugging it into USB, and wait for the RPI-RP2 drive to appear before releasing the button.

You will see a new disk drive appear called RPI-RP2. The board is now in bootloader mode.

Find the UF2 file you downloaded. Drag that file to the RPI-RP2 drive on your computer in your operating system file manager/finder.

The board's LED should flash, RPI-RPI2 will disappear. Your board should re-enumerate USB and appear as a COM or Serial port on your computer. Make a note of the serial port by checking the Device Manager (Windows) or typing ls /dev/cu* or /dev/tty* (Mac or Linux) in a terminal.

Download NINA Firmware

Click the link below to download the latest version of the NINA firmware. Unzip it and save the .bin file to your desktop.

To support BLE on the ESP32 AirLift, you'll need NINA_W102-1.7.1.bin or later.

Next, you'll need to flash the firmware to your ESP32 AirLift module. If you're using the Google Chrome browser, you may follow the instructions below for programming using our web-based ESPTool.

Otherwise, scroll down and follow the instructions for flashing using the Python program.

Flash AirLift using Web Serial ESPTool

If you have a computer with the Google Chrome browser, we've created the WebSerial ESPTool as an option for programming ESP32 boards.

Safari and Firefox, etc are not supported because we need Web Serial and only Chrome is supporting it to the level needed. If you're using an unsupported browser, you'll need to upgrade using the Python program on your computer (Scroll down to Upgrade with,)

Enable Chrome's Web Serial API

At the time of this tutorial, you'll need to enable the Serial API, which is really easy.

Visit  chrome://flags from within Chrome. Find and enable the Experimental Web Platform features


Restart Chrome

Next, navigate to In the top-right corner of your browser, select 115200 as the baud rate and click the Connect button.

You will get a pop-up asking you to select the Pico's COM or Serial port. You may want to remove all other USB devices so only the ESP32-S2 board is attached, that way there's no confusion over multiple ports! 

Click Connect.

On success, you will see that it is Connected and will print out a unique MAC address identifying the board.

Once you have successfully connected, a command toolbar will appear.

Verify that the offset is 0x0 and choose the nina-fw .bin file you downloaded above. 

Click the program button to flash the firmware to your ESP32.

ESPTool will take a few minutes to write firmware to your device. After it's complete, the progress bar will disappear and the console will print "To run the new firmware,..."

Press the Reset button (or, on the RP2040 Pico, unplug your device from USB power) to get out of the ROM bootloader.

Flash AirLift using

Esptool is an application that can communicate with the ROM bootloader in Espressif chips. 

To install esptool, run the following in your terminal:

pip3 install esptool

This guide assumes you have Python3 installed. If you have not installed it, navigate to the Python downloads page ( and install the latest release.

Burning nina-fw with esptool

Click the link below to download the latest nina-fw .bin file. Unzip it and save the .bin file to your desktop.

If you're using macOS or Linux - run the following command, replacing /dev/ttyACM0 with the serial port of your board and NINA_W102-1.6.0 with the binary file you're flashing to the ESP32. --port /dev/ttyACM0 --before no_reset --baud 115200 write_flash 0 NINA_W102-1.6.0.bin

If you're using Windows - run the following command, replacing COM7 with the serial port of your board  and NINA_W102-1.6.0 with the binary file you're flashing to the ESP32 --port COM7 --before no_reset --baud 115200 write_flash 0 NINA_W102-1.6.0.bin

The command should detect the ESP32 and will take a minute or two to upload the firmware. 

If ESPTool doesn't detect the ESP32, make sure you've uploaded the correct .UF2 file to the bootloader and are using the correct serial port.

Once the firmware is fully uploaded, press the Reset button (or, on the RP2040 Pico, unplug your device from USB power) to get out of the ROM bootloader.

Verifying the Upgraded Firmware Version

To verify everything is working correctly, we'll load up some CircuitPython code. 

If you were previously using your ESP32 project with CircuitPython, you'll need to first reinstall CircuitPython firmware for your board. The QSPI flash should have retained its contents. If you don't see anything on the CIRCUITPY volume, copy files from the backup you made earlier to CIRCUITPY.

To verify the new ESP32 WiFi firmware version is correct, follow the Connect to WiFi step in this guide and come back here when you've successfully run the code. The REPL output should display the firmware version you flashed.

This guide was first published on Sep 30, 2019. It was last updated on 2021-03-26 13:24:47 -0400.

This page (Upgrade RP2040 AirLift Firmware) was last updated on May 20, 2022.

Text editor powered by tinymce.