Hardware
Devices
Octopus_16
Software

Software

Octopus 16 streams over Bluetooth LE, so it works straight from a browser tab or your wrist. Pick the option that fits what you want to do.

Best forRuns onInstall
PiEEG CloudDashboards, spectra, experiences, Buddy AIChrome or EdgeNone
octoBridgeClassrooms, block programs, the OctoBio KitChrome or EdgeNone
octoWatchLive wrist EEG scope, relative band-power HUD & 10–20 fit guideGarmin smartwatchesConnect IQ Store (opens in a new tab)
JavaScript SDKYour own web appChrome or EdgeOne script
Python SDKLive view with heatmap and FFT, recording to ExcelWindows, macOS, Linuxpip install bleak

All of them connect to a board flashed with the official firmware, which appears as Octopus-16-XXXX. First time? See Firmware.

Garmin Smartwatch App — octoWatch

Stream and visualize live 16-channel 250 SPS EEG from Octopus-16 directly on your Garmin watch (Venu, fēnix, epix, Forerunner, vívoactive) over Bluetooth Low Energy:

PiEEG Cloud

  1. Open cloud.pieeg.com (opens in a new tab) in Chrome or Edge.
  2. In the Session Lobby, open the PiEEG Devices tab and choose Octopus 16.
  3. Pick Octopus-16-XXXX in the browser's Bluetooth window.

PiEEG Cloud Session Lobby with Octopus 16

You get live waveforms, spectra, topographic maps, recording and playback, plus the Live Lab, experiences and Buddy AI. Processing runs in your browser. More: PiEEG Cloud.

octoBridge

The classroom lab at octobridge.pieeg.com (opens in a new tab). Connect the Octopus 16 (and, optionally, the OctoBio Kit's Arduino board), watch live readings and build block programs.

ReadingMeaning
Band powerδ θ α β γ, relative (share of total spectral power)
Focus (β / (β + θ))Shorthand label for the uncalibrated Beta / (Beta + Theta) band-power ratio
Relax (α / (α + β))Shorthand label for the uncalibrated Alpha / (Alpha + Beta) band-power ratio
RMSSignal amplitude in µV
EEG okGreen when RMS is between 2 and 200 µV

More: octoBridge · OctoBio Kit lessons.

JavaScript SDK

pieeg.js connects to Octopus 16 from your own web page, with filtering and band power built in.

const eeg = new PiEEG();
eeg.onBandPowers((p) => console.log('Alpha', p.Alpha, 'Beta', p.Beta));
 
button.addEventListener('click', async () => {         // must be a click handler
  const info = await eeg.connectBLE({ device: 'octopus-16' });
  console.log(`${info.deviceName}: ${info.channels} ch @ ${info.sampleRate} Hz`);
});

More: JavaScript SDK.

Python SDK

Scripts built on bleak (opens in a new tab), in the Octopus_16 repository (opens in a new tab).

pip install bleak matplotlib numpy scipy openpyxl pandas
git clone https://github.com/pieeg-club/Octopus_16.git
cd Octopus_16

Live view: GUI/SDK_Data_Visual.py

16 live channels, a heatmap and an FFT with the EEG bands marked.

python GUI/SDK_Data_Visual.py                      # find the board and stream
python GUI/SDK_Data_Visual.py --scan               # list nearby Bluetooth devices
python GUI/SDK_Data_Visual.py --save data.csv      # also save to CSV
python GUI/SDK_Data_Visual.py --notch 60           # 60 Hz mains (default 50)
python GUI/SDK_Data_Visual.py --window 6           # 6-second window (default 4)
python GUI/SDK_Data_Visual.py --demo               # synthetic data, no board

The script finds the board by its Bluetooth service UUID, so it works whatever name the board advertises.

Python SDK demo video (opens in a new tab)

Recorder: Dataset/Visualisation.py

Records a set number of seconds of raw 16-channel data and saves it to Excel.

python Dataset/Visualisation.py --duration 30 --out my_session.xlsx
python Dataset/Visualisation.py --demo                                # no board

Analysis: Dataset/FFT.py

Band-pass filters one channel of a saved file (1–30 Hz) and plots its spectrum. Set the file and channel at the top of the script.

On macOS, allow your terminal (or Python) to use Bluetooth: System Settings → Privacy & Security → Bluetooth. On Linux, make sure the Bluetooth service is running (sudo systemctl start bluetooth).

Next