Software
Getting Started
Quick Start

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.

PortPurpose
:1616WebSocket data stream
:1617Web 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 outlet

IronBCI / 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 scan

IronBCI 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           # Windows

IronBCI-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.