Skip to main content
This guide shows how to flash omiGlass firmware to your ESP32 S3 XIAO board with PlatformIO.

Prerequisites

Install the following before you begin:
1

Install PlatformIO

PlatformIO is required to build and flash the firmware. Install it using one of these methods:Using Homebrew (macOS/Linux):
Using pip (all platforms):
Verify installation:
2

Install required libraries

PlatformIO installs the required libraries when you build the firmware. The dependencies include:
  • NimBLE-Arduino (v1.4.1+) - Bluetooth Low Energy stack
  • esp32-camera (v2.0.0+) - Camera driver for ESP32
  • arduino-libopus - Audio codec for voice encoding
PlatformIO downloads them based on the platformio.ini configuration.
3

Connect your device

Connect your ESP32 S3 XIAO board to your computer via USB-C cable.
Use a quality USB-C cable that supports data transfer, not just charging.

Flash the firmware

Navigate to the firmware directory and flash using PlatformIO:
1

Navigate to the firmware directory

2

Build and upload firmware

Try the standard build environment first:
If you experience connection issues, use the slower upload environment:
The seeed_xiao_esp32s3_slow environment uses a slower upload speed (57600 baud) which is more reliable for some USB connections.
3

Wait for the upload

PlatformIO will:
  1. Install dependencies (first time only)
  2. Compile the firmware
  3. Upload to your device
  4. Reset the device automatically
The process takes 1-3 minutes depending on your connection.

Build environments

The firmware supports two build environments:
If you only want to compile the firmware without uploading:
The compiled binary will be in .pio/build/seeed_xiao_esp32s3/firmware.bin

Troubleshooting

Problem: PlatformIO cannot find your ESP32 device.Solutions:
  • Check USB cable is properly connected
  • Try a different USB port (connect directly, not through a hub)
  • On macOS: Check System Settings > Privacy & Security for any blocked devices
  • Verify device appears with ls /dev/tty.* or ls /dev/cu.*
Problem: Cannot access the serial port.Solutions (macOS/Linux):
Or add your user to the dialout group (Linux):
Then log out and back in.
Problem: Build fails with compilation errors.Solutions:
  • Clean the build and try again:
  • Update PlatformIO:
  • Delete .pio folder and rebuild:
Problem: Upload process starts but never completes.Solutions:
  • Use the slower environment:
  • Try a different USB cable
  • Restart your computer and device

Next steps

After you flash the firmware:

Monitor device

Learn how to monitor logs and test your device

Hardware assembly

Complete hardware setup and assembly guide