Flashing precompiled firmware¶
Note
Only valid for Arduino NINA, Adafruit AirLift, Unijoysticle and MightyMiggy boards.
If you only want to flash the latest firmware version without downloading the toolchain + sources you should do:
Download the latest precompiled firmware from here:
And then you can flash it either using:
- Command Line
- or GUI
Command Line (esptool)¶
Supported platforms: Linux, macOS and Windows
Flashing your device from the command line
requires esptool.py (source code):
- Ubuntu / Debian:
sudo apt install esptool - Fedora / Red Hat:
sudo dnf install esptool - macOS with Homebrew installed:
brew install esptool - Windows, macOS without Homebrew, and other OSes: after installing Python, run
pip install esptool. Python is available for download here. On Windows 10 and newer, you can also install Python from the Microsoft Store to get automatic updates.
To flash your device:
# Linux
export ESPPORT=/dev/ttyUSB0 # This may be different if you have multiple USB serial devices connected.
# macOS
export ESPPORT=/dev/cu.SLAB_USBtoUART
# Windows
set ESPPORT=COM?? # You can find a list of COM devices in Device Manager.
# Identify the correct COM port by watching to see which one appears when connecting
# the device you intend to update.
python -m esptool --chip esp32 --port ${ESPPORT} --baud 115200 --before default_reset --after hard_reset write_flash 0x0000 bluepad32-unijoysticle-full.bin
On Linux, the flash operation may fail with a permissions error if you're not running as root. If you'd like to be able to flash as a standard user, you can instead change the permissions for the appropriate ttyUSB device to allow writes by unprivileged users.
GUI (ESP32 Flash Download Tool)¶
Supported platforms: Windows only
If you are not familiar with command-line tools, you can try with the ESP32 Flash Download Tool:
Parameters:
- If asked about "chipType", select "ESP32"
- Select "SPIDownload" tab
- Click on "..." and select the
bluepad32-unijoysticle-full.binfile - Set
0x0000as address - Select the correct "COM" port
- And then click "START"
Compiling + flashing firmware¶
Note
Although Bluepad32 works both with ESP-IDF 5.x, NINA and MightyMiggy require ESP-IDF v4.4.
For Windows¶
-
Install ESP-IDF v5.5. For further info, read: ESP-IDF Getting Started for Windows
- Either the Online or Offline version should work
- When asked which components to install, don't change anything. Default options are Ok.
- When asked whether ESP can modify the system, answer "Yes"
-
Launch the "ESP-IDF v5.5 CMD" (type that in the Windows search box)
-
From the ESP-IDF cmd, clone Bluepad32 repo
git clone --recursive https://github.com/ricardoquesada/bluepad32.git -
Setup
# Setup Bluepad32 Platform cd bluepad32\src idf.py menuconfigAnd select
Component config->Bluepad32->Target platform(choose the right one for you). -
Compile it
# Compile it cd bluepad32\src idf.py build # Flash + open debug terminal idf.py flash monitor
For Linux / macOS¶
-
Requirements and permissions
Install ESP-IDF dependencies (taken from here):
# For Ubuntu / Debian sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0And in case you don't have permissions to open
/dev/ttyUSB0, do: (taken from here)# You MUST logout/login (or in some cases reboot Linux) after running this command sudo usermod -a -G dialout $USER -
Install and setup ESP-IDF
# Needs to be done just once # Clone the ESP-IDF git repo mkdir ~/esp && cd ~/esp git clone -b release/v5.5 --recursive https://github.com/espressif/esp-idf.git # Then install the toolchain cd ~/esp/esp-idf ./install.sh -
Clone Bluepad32 repo
git clone --recursive https://github.com/ricardoquesada/bluepad32.git -
Patch BTstack
cd ${BLUEPAD32_SRC}/external/btstack git apply ../patches/*.patch -
Compile it
# Compile it cd ${BLUEPAD32}/tools/fw ./build.py all