8-32 channel TI ADS1299 Arduino shield for EEG, EMG, and EKG bio-signals acquisition

Available for pre-order

View Purchasing Options
Dec 16, 2019

Project update 2 of 15

HackEEG and OpenBCI

HackEEG and OpenBCI

HackEEG is designed to read your brainwaves (EEG). So how do you do that?

person with HackEEG and OpenBCI running on a laptop

One way is by streaming data from HackEEG using Lab Streaming Layer to OpenBCI GUI for visualization.

Lab Streaming Layer

Lab Streaming Layer (LSL) is a way to exchange real-time EEG data between instruments and software. Here’s what its Github page says about it:

The lab streaming layer (LSL) is a system for the unified collection of measurement time series in research experiments that handles both the networking, time-synchronization, (near-) real-time access as well as optionally the centralized collection, viewing and disk recording of the data.

In other words, LSL is way to get data from HackEEG to lots of different EEG applications in real-time so it can analyzed, displayed, or recorded. LSL also allows you to send non-EEG data too. It’s an amazing set of software– it allows plug-and-play connection of disparate equipment and software with very little hassle. And it’s all open source!


OpenBCI GUI is a very cool program for visualizing EEG data. It’s mainly used for visualizing data from OpenBCI’s own hardware– the Cyton and Ganglion EEG ADC boards.

The software is open source, and available on OpenBCI’s Github account. It normally can’t connect to a HackEEG board, but Starcat has modified the OpenBCI GUI to take Lab Streaming Layer input. With this, you can send 8 or 16 channels of HackEEG data to OpenBCI. This is the software you see in the demo video. Here’s Starcat’s fork of OpenBCI GUI. (We hope to get these changes merged into OpenBCI’s project.)

Putting It Together

Detailed instructions are over on the hackeeg-python-client documentation page. Here’s an overview of getting it all going. The HackEEG software is command-line only right now– in an update later this month, I’ll post a Python Qt-based GUI for doing the same thing.

  1. Install the HackEEG software
  2. Install Processing
  3. Install the Starcat fork of OpenBCI
  4. Run the hackeeg_stream command: ./hackeeg_stream --sps 500 --continuous --lsl --quiet
  5. Start Processing
  6. Open OpenBCI_GUI and run it
  7. Select Live (from Lab Streaming Layer) – 8 channels from the Input Selector (seen below).
  8. Click Start Session
  9. Click Start Data Stream
  10. Select the Band Power Widget in the lower right pane (if that's what you want to see)
OpenBCI_GUI Input Selector with LSL selected
OpenBCI_GUI Input Selector with LSL selected

If you don’t want to use OpenBCI, you can connect your own visualization or data analysis software via LSL, or access the data directly from Python.

Sign up to receive future updates for HackEEG.

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects