Occasionally new firmware for the ESP32-C6 WiFi coprocessor onboard your board may become available to provide bug fixes or enhanced capabilities. The steps below show how to upgrade that firmware.
Step 1. Download nina-fw-upgrade.uf2 File
Save the following file wherever is convenient for you. You will need to access it to copy it to your board.
The UF2 BELOW IS NOT CURRENTLY WORKING AS DESCRIBED. It does not contain the updating code. For now, install the UF2, and then download nina-fw-upgrade-fruitjam.py. Rename the downloaded file to code.py and replace the code.py on CIRCUITPY with the new code.py. Then install the neopixel.mpy and adafruit_miniesptool.mpy library files to lib/ on CIRCUITPY. Then continue with the procedure below.
Step 2. Download NINA Firmware
This firmware runs on the ESP32-C6 co-processor. Save the following file to a location on your computer that is convenient for you. You will need to access it during a later step.
For the Adafruit Fruit Jam, you will want to download the file which is named something like NINA_ADAFRUIT-fruitjam_c6-3.3.0.bin.
To enter the bootloader, hold down the BOOT/BOOTSEL button (highlighted in red above), and while continuing to hold it (don't let go!), press and release the reset button (highlighted in blue above). Continue to hold the BOOT/BOOTSEL button until the RP2350 drive appears!
- Navigate to the folder where you downloaded the nina-fw-upgrade.uf2 file from Step 1.
- Drag the nina-fw-upgrade.uf2 file to the RP2350 drive.
- The RP2350 drive will disappear and the board will automatically reboot.
- Navigate to where you downloaded the nina fw bin file from Step 2
- Drag the .bin file to the CIRCUITPY drive
- Rename the .bin file to nina.bin
Ensure the .bin file on the CIRCUITPY drive is named nina.bin before proceeding to the next step.
To start the updater for the Fruit Jam:
- Ensure the Fruit Jam NeoPixels are glowing blue (you may need to reset the board)
- Press the Fruit Jam's Button #3
- Your Fruit Jam's NeoPixels will glow yellow while the board updates the ESP32-C6's firmware
- After the firmware is updated, the NeoPixels should blink green.
Ensure you downloaded the correct .bin file, renamed it to nina.bin, and placed it on the root of your CIRCUITPY drive (not in a folder).
The firmware updating process is finished! You can delete nina.bin from the CIRCUITPY drive.
Alternative Update Method: Passthrough
If the method above does not work, or you are experiencing errors, try this alternative method of updating your C6 module which allows your board to act as a programmer for the ESP32-C6 AirLift module.
Upload Passthrough Code
First, you'll need to upload the code below to allow your board to act as a programmer for the ESP32-C6 AirLift module.
Back up any code and files on your CIRCUITPY drive. The code will overwrite the drive's contents. 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 file for your board and save it to your computer's Desktop.
To enter the bootloader, hold down the BOOT/BOOTSEL button (highlighted in red above), and while continuing to hold it (don't let go!), press and release the reset button (highlighted in blue above). Continue to hold the BOOT/BOOTSEL button until the RP2350 drive appears!
Find the .UF2 file you downloaded and drag that file to the new drive on your computer.
The board's LED should flash and the drive 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 for the ESP32-C6. Unzip it and save the .bin file to your desktop.
Next, you'll need to flash the firmware to your ESP32-C6 AirLift module.
If you're using the Google Chrome browser or Microsoft Edge (version 89 or later), you may follow the instructions below for programming using your board.
For advanced users who have esptool.py installed, skip to the bottom of the page.
Upload NINA Firmware
Next, you'll need to upload the new version of NINA firmware to your ESP32-C6 AirLift. To do this, we'll use the web-based implementation of the flasher tool for Espressif chips, ESPTool. You will need to be running Google Chrome or Microsoft Edge (version 89 or later) to follow the steps below.
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 either switch to Google Chrome or upload NINA firmware using the Python esptool.py program from your computer (Scroll down to Upload NINA Firmware with esptool.py,)
On your Google Chrome browser, navigate to https://adafruit.github.io/Adafruit_WebSerial_ESPTool/
Turn on the toggle labeled No reset for Passthrough updates:
In the top-right corner, select 115200 as the baud rate and click the Connect button.
You will get a pop-up asking you to select the board's COM or Serial port.
- If there are a lot of boards and ports appearing in this list and you're not sure what to select - remove all other USB devices so only your board is attached, that way there's no confusion over multiple ports!
Click Connect.
Upon 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 at the top of the screen.
Verify that the offset is 0x0 and choose the NINA_....bin file you downloaded above.
Click the program button to flash the firmware to your ESP32-C6 AirLift.
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.
Verify the New Firmware Version
To verify everything is working correctly, we'll load up some CircuitPython code.
If you were previously using your ESP32-C6 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-C6 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.
(Advanced) Upload NINA Firmware with ESPTool.py
For advanced users who have esptool.py installed, run the following commands on your command line:
If you're using macOS or Linux - run the following command, replacing /dev/ttyACM0 with the serial port of your board and NINA_BIN with the binary file you're flashing to the ESP32-C6.
esptool --before no_reset -p /dev/ttyACM0 -b 115200 -c esp32-c6 chip_idesptool --before no_reset -p /dev/ttyACM0 -b 115200 -c esp32-c6 write_flash 0 NINA_BIN.bin
If you're using Windows - run the following command, replacing COM7 with the serial port of your board and NINA_BIN with the binary file you're flashing to the ESP32
esptool.py --port COM7 --before no_reset -b 115200 -c esp32-c6 write_flash 0 NINA_BIN.bin
The command should detect the ESP32-C6 and will take a minute or two to upload the firmware.
- If ESPTool doesn't detect the ESP32-C6, 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 mode.
Page last edited December 27, 2025
Text editor powered by tinymce.