Flashing
Option A: Web flasher (recommended)
Visit themia.dev/flash in Chrome or Edge.
- Plug in your device via USB
- Select your board from the dropdown
- Click Flash
- Wait ~30 seconds for the firmware and filesystem to write
- The device reboots automatically when done
No software installation required. Chrome or Edge only — Web Serial API isn't supported in Firefox or Safari.
Option B: PlatformIO
For building from source or flashing a custom build:
git clone https://github.com/paperclipsvinny/Meshtastic-Injection-Apparatus
cd Meshtastic-Injection-Apparatus/firmware
# install dependencies (first time only)
pio pkg install
# flash firmware
pio run -e heltec_wifi_lora_32_V3 -t upload
# flash web dashboard to device filesystem (required)
pio run -e heltec_wifi_lora_32_V3 -t uploadfs
Both commands are required. -t upload writes the firmware binary; -t uploadfs writes the web dashboard files to LittleFS. Missing the second step results in a blank page at http://192.168.4.1.
Option C: esptool directly
If you have pre-built binaries:
esptool.py --chip esp32s3 --port /dev/ttyACM0 --baud 460800 write_flash \
0x0 bootloader.bin \
0x8000 partitions.bin \
0xe000 boot_app0.bin \
0x10000 firmware.bin
Entering bootloader mode
Most ESP32-S3 boards with native USB auto-reset into download mode when esptool connects — no button press needed.
If it fails to connect, manually enter bootloader mode:
- Hold the BOOT button (or bridge GPIO0 to GND on boards without a button)
- Press and release RESET (or briefly bridge EN to GND)
- Release BOOT
- Run the flash command