Hardware
Devices
JNEEG
Software

Software

JNEEG works with two software stacks. Pick the one that fits what you want to do.

Best forLanguageEffort
PiEEG ServerLive dashboard, recording, streaming to apps, LSL, OSC, webhooksAny (WebSocket JSON)A few commands
Python scriptsLearning how the ADS1299 works, raw data, quick plotsPythonEdit and run a script

PiEEG Server dashboard

PiEEG Server

JNEEG runs the official PiEEG Server (opens in a new tab): the same real-time streaming, dashboard, recording and integrations as on the Raspberry Pi boards. Run it with --device jneeg, which applies the jetson-nano hardware profile automatically (600 kHz SPI, GPIO on /dev/gpiochip0).

Enable SPI on the 40-pin header

sudo /opt/nvidia/jetson-io/jetson-io.py

Configure 40-pin header → enable spi1 → Save and reboot. Then check ls /dev/spidev0.0.

Grant SPI and GPIO access

sudo groupadd -f spi
sudo usermod -aG spi,gpio "$USER"

Log out and back in (or reboot).

Install the server

python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install "pieeg-server[rpi]"

The rpi extra just installs spidev, which is generic Linux SPI and works on the Jetson Nano. The Pi-only setup.sh script isn't used on the Jetson. PiEEG Server needs Python 3.10+.

Check and run

pieeg-server doctor          # check SPI, GPIO and dependencies
pieeg-server --device jneeg  # start streaming (8 channels)

Open http://localhost:1617 (opens in a new tab) for the dashboard.

AddressWhat it is
http://<jetson-ip>:1617Browser dashboard
ws://<jetson-ip>:1616WebSocket stream: JSON frames with 8 channels in µV

Common options

pieeg-server --device jneeg --filter               # 1–40 Hz band-pass
pieeg-server --device jneeg --record session.csv   # record while streaming
pieeg-server --device jneeg --lsl                  # Lab Streaming Layer outlet
pieeg-server record session.csv --device jneeg     # CSV only, no server
⚠️

DRDY line check (one-time). The jetson-nano profile expects the data-ready line (header pin 7) at line offset 216 on /dev/gpiochip0. If samples never arrive, check the offset for your JetPack release with sudo apt install -y gpiod && gpioinfo gpiochip0, then pass the chip explicitly: pieeg-server --device jneeg --gpio-chip /dev/gpiochip0.

More: Installation · Configuration · WebSocket API · LSL

Python scripts

Small scripts that set up the ADS1299, read raw samples over SPI and plot or save them. They run on the Jetson's stock Python.

Source: github.com/pieeg-club/EEG-with-JetsonNano/tree/master/GUI (opens in a new tab)

ScriptWhat it does
1.Graph_real_time.py (opens in a new tab)Live 8-channel graph, band-pass filtered (1–10 Hz by default)
2.Save_data.py (opens in a new tab)Save raw µV for all 8 channels to Excel after 10,000 samples (40 s)
dataset/Data_visualisation.py (opens in a new tab)Plot a saved file

Install and run

sudo apt install -y python3-pip python3-matplotlib python3-scipy
pip3 install spidev pandas openpyxl
git clone https://github.com/pieeg-club/EEG-with-JetsonNano.git
cd EEG-with-JetsonNano/GUI
python3 1.Graph_real_time.py

The scripts use Jetson.GPIO (preinstalled on JetPack) to read DRDY on board pin 7, and spidev for SPI.

Tested library versions: matplotlib 3.6.3 · spidev 3.5 · scipy 1.10.1

The folder with_c_library_not_support holds an older C version using c-periphery. It isn't supported any more. Use the Python scripts or PiEEG Server.

Machine learning on the GPU

The Jetson Nano's GPU lets you run trained models on the EEG stream in real time:

  1. Stream samples from PiEEG Server's WebSocket (ws://localhost:1616) or read them with the Python scripts.
  2. Compute features (for example band power per channel, once per second).
  3. Run your PyTorch or TensorRT model on the features, on the GPU.

See the machine-learning example for PiEEG-16: the same steps work on JNEEG's 8 channels.