Open-Source Brain-Computer Interface
PiEEG Documentation
From electrode wiring to live WebSocket streams — complete coverage of PiEEG hardware, PiEEG Server software, and all integrations.
What Is PiEEG?
PiEEG is a family of EEG shields and boards that turn a Raspberry Pi, Jetson Nano, or standalone USB host into a multi-channel brain-computer interface. The companion PiEEG Server software acquires, streams, records, and exposes real-time EEG data over WebSocket, LSL, OSC, and webhooks — with a built-in browser dashboard out of the box.
New to PiEEG? Follow the Quick Start to get streaming in minutes. Setting up hardware for the first time? Start with Hardware and pick your device.
Explore the Docs
What's Covered
| Area | Topics |
|---|---|
| Hardware | PiEEG, PiEEG-16, JNEEG, ardEEG, IronBCI, MicroBCI, IronBCI-32, electrodes, caps, power |
| Software | Server install, dashboard, WebSocket streaming, data format, recording, detectors |
| Integrations | LSL, Jupyter notebooks, VRChat OSC, webhooks, IFTTT, Zapier |
| Operations | Authentication, security, troubleshooting, development, signal quality |
Install the Server
One-line install (Linux / Raspberry Pi OS)
curl -sSL https://raw.githubusercontent.com/pieeg-club/PiEEG-server/main/install.sh | bashOpen the dashboard
Navigate to http://<device-ip>:1617 in your browser.
Stream data
Connect any WebSocket client to ws://<device-ip>:1616.
Platform Architecture
┌──────────────────────────────────────────────────────────┐
│ Raspberry Pi + PiEEG Shield (8 or 16 ch) │
│ or IronBCI / EAREEG board (8 ch, Bluetooth LE) │
│ or IronBCI-32 board (32 ch, USB serial) │
│ │
│ hardware.py → SPI/GPIO init, ADS1299 config │
│ ironbci.py → BLE scan, GATT notifications, parsing │
│ ironbci_32.py → USB serial (pyserial), FreeEEG frames │
│ ↓ │
│ acquisition.py → 250 Hz read loop (background thread) │
│ ↓ pub/sub │
│ ├── server.py → WebSocket broadcast │
│ ├── recorder.py → CSV writer │
│ ├── monitor.py → Terminal sparklines │
│ ├── osc_vrchat.py → VRChat OSC bridge │
│ └── lsl.py → Lab Streaming Layer outlet │
│ │
│ ws://0.0.0.0:1616 │ http://0.0.0.0:1617 │
└──────────┬───────────────────────────────────────────────┘
│ Local network / internet
├── Browser dashboard (React + Vite)
├── Python / Jupyter notebook
├── VRChat (OSC over UDP)
├── LSL consumers (OpenViBE, MNE, LabRecorder…)
├── IFTTT / Zapier (webhooks)
└── Any WebSocket client