Quick Start
Install & launch
curl -sSL https://raw.githubusercontent.com/pieeg-club/PiEEG-server/main/install.sh | bash
sudo reboot # first time only, enables SPI
pieeg-server # or: pieeg-server --mock (no hardware)Open the dashboard
Browse to http://raspberrypi.local:1617 (opens in a new tab) — you'll land on the Session Lobby. The server URL is pre-filled — click Connect to start streaming.
No hardware? Click ▶ Use Demo Server then Connect to stream synthetic EEG from the public mock server.
| Port | Purpose |
|---|---|
:1616 | WebSocket data stream |
:1617 | Web dashboard |
Connect from code
import asyncio, json, websockets
async def main():
async with websockets.connect("ws://raspberrypi.local:1616") as ws:
async for msg in ws:
frame = json.loads(msg)
print(f"#{frame['n']}: {frame['channels']}")
asyncio.run(main())Every frame is plain JSON — no SDK, no binary protocol, works in any language that has WebSocket support.
Common Launch Modes
pieeg-server # stream 16 ch (default)
pieeg-server --device pieeg8 # 8-channel shield
pieeg-server --device ironbci8 # IronBCI / EAREEG via Bluetooth LE
pieeg-server --device ironbci32 --serial-port /dev/ttyACM0 # IronBCI-32 via USB serial
pieeg-server --filter # 1–40 Hz bandpass
pieeg-server --monitor # terminal sparklines
pieeg-server --mock # synthetic data, no hardware
pieeg-server --auth # require 6-digit access code
pieeg-server --osc # VRChat OSC bridge
pieeg-server --lsl # Lab Streaming Layer outletIronBCI / EAREEG
pieeg-server --device ironbci8 # auto-scan for EAREEG device
pieeg-server --device ironbci8 --ble-name MyBoard # custom BLE device name
pieeg-server --device ironbci8 --ble-address A1:B2:C3:D4:E5:F6 # skip scanIronBCI requires the BLE extra: pip install pieeg-server[ironbci]. No SPI or GPIO needed — works on any platform with Bluetooth.
IronBCI-32 (USB serial)
pieeg-server --device ironbci32 --serial-port /dev/ttyACM0 # Linux/macOS
pieeg-server --device ironbci32 --serial-port COM3 # WindowsIronBCI-32 requires the serial extra: pip install pieeg-server[ironbci32]. Pure-Python pyserial driver — no BrainFlow required. 32 channels at ~500 SPS over USB CDC, FreeEEG wire protocol at 921600 baud.