Hardware
Devices
Octopus_16
Firmware

Firmware

The XIAO ESP32-S3 needs the Octopus 16 firmware once, before first use. You flash it from the browser, with no Arduino IDE.

Open the flasher

Open octobridge.pieeg.com/flash (opens in a new tab) in desktop Chrome or Edge. The same installer is also at firmware.pieeg.com (opens in a new tab).

Octopus-16 firmware installer

Plug in the XIAO

Connect the XIAO ESP32-S3 to the computer with a USB-C data cable. It can stay mounted on the Octopus 16.

⚠️

Flash with the board off the head. USB from a computer is only for flashing.

Install

Click Install Octopus-16, choose the serial port and wait about 30 seconds.

Replug

Unplug and replug the XIAO once. It now advertises over Bluetooth as Octopus-16-XXXX.

No port shows up, or flashing fails? Hold BOOT, tap RESET, release BOOT, then click Install again. Also try another USB-C cable: charge-only cables can't flash.

LED states

PatternState
Solid (brief)Booting
Slow blink, about once a secondAdvertising, waiting for an app
SolidConnected and streaming
Fast double-blinkADC not detected: check the XIAO is mounted the right way round

Build from source

The Framework (opens in a new tab) folder has Arduino sketches and an ADS131M08 driver, for developers who want to change the firmware.

FileWhat it is
ADS131M08.cpp, ADS131M08.hDriver for the two ADS131M08 converters
XIAO_ESP_32_S6.inoSketch for the XIAO ESP32-S3: EEG over BLE, plus on-board FFT and gamepad output (Bluetooth and USB HID) for neurofeedback control
XIAO_ESP_32_C3.inoSimpler EEG-over-BLE sketch for a XIAO ESP32-C3

The sketches use the NimBLE Arduino library (and ESP32-BLE-Gamepad for the S3 sketch). They set both ADCs to OSR 16384 (250 SPS) and gain 4, and use the same BLE service and 51-byte packet as the official firmware. See Specification.

The sketches advertise under other names (Octopos or FE-Gamepad-XXXX). PiEEG Cloud, the JavaScript SDK and the Python SDK find the board by its service UUID, so they still connect. To go back to the official firmware, flash it again from the browser.