EEG Software

BrainAccess hardware products come with free software for controlling the devices, streaming and preprocessing EEG data. The software is provided as libraries and can be accessed via C/C++ or Python API. This gives the user direct control of the devices and access to EEG data and easy integration capabilities into the user’s applications. The software also comes with a Viewer, which gives access to the main functionality of the libraries through a graphical user interface. Below is the list of EEG software components included in the BrainAccess software installer.

BrainAccess Core

BrainAccess Core library provides an interface with BrainAccess electroencephalographs. It enables control of the device, configuration of acquisition parameters and streaming of EEG data to the computer.

The library has full control of the device and can be used to access raw EEG recording. It enables setting required channels for recording and their gains, measuring impedance, streaming EEG and other additional input data if available on the device. It also allows monitoring of the state of the device such as battery voltage and level.

BrainAccess Core library features asynchronous requests, callback-driven EEG data acquisition and supports multiple devices through the same Bluetooth adapter.

BrainAccess Processor

BrainAccess Processor library has functions for EEG signal preprocessing such as detrending, filtering, FFT and other typical utilities.

BrainAccess Viewer

BrainAccess Viewer is a Python application that provides a GUI for most of BrainAccess Core and Processor functionality. A user can measure impedances, stream and save data using the Viewer.
BrainAccess Viewer
BrainAccess Viewer
Electrode stream
Electrode stream
Accelerometer and digital input stream
Accelerometer and digital input stream

BCI Software

BrainAccess software also includes some BCI algorithms as part of the BCI Connect library. It comes with C/C++ and Python API. Different BCI algorithms may need different EEG setups so please pay attention to the description of a particular algorithm.

SSVEP Classifier

The steady-state visual evoked potential (SSVEP) is a repetitive evoked potential that is produced when viewing flashing stimuli. Activity at the same frequency as the visual stimulation can be detected in the occipital areas of the brain. 

SSVEP Classifier can recognize steady-state visual evoked potentials (SSVEP). If a person is presented with some visual stimuli flickering at different frequencies, SSVEP classifier can determine at which stimulus a person is focusing on. 

This can be used as motionless control, where a user can choose between different presented options or even type a keyboard by only focusing his attention to a particular flickering letter.

The SSVEP classifier requires 2-6 electrodes placed in the occipital region (for example, O1, O2, P3, P4, Oz, Pz) with reference at Fp1 and bias at Fp2.

Please see Python API documentation for more information on how to use the SSVEP classifier, which also includes an example of an SSVEP based keyboard and SSVEP based 4-direction movement classifier.

SSVEP keyboard example
SSVEP keyboard example

P300 Classifier

The P300 (P3) wave is an event-related potential (ERP) component elicited in the process of decision making. The P300 is thought to reflect processes involved in stimulus evaluation or categorization.

It is usually elicited using the oddball paradigm, in which low-probability target items are mixed with high-probability non-target (or “standard”) items. It surfaces as a positive deflection in voltage in EEG recordings with a latency (delay between stimulus and response) of roughly 250 to 500 ms. The signal is typically measured most strongly by the electrodes covering the parietal lobe. The P300 wave is present/most pronounced when a user is presented with target items, in other words target stimuli. The P300 classifier can be used as lie detector, speller (keyboard) and other.

Standard BrainAccess setup. Electrode positions and corresponding channels on BrainAccess MINI
The electrode setup for the P300 requires 8 electrodes with reference electrode placed at Fp1 position and bias at Fp2 as shown in the picture.

Please see Python API documentation for more information on how to use the provided P300 classifier, which also includes an example of an P300 based keyboard (speller).

P300 speller
P300 speller


BrainAccess libraries can be interfaced through C, C++ and Python API. Python API is provided as a BrainAccess Python package and should be installed using pip. Python package also includes BrainAccess Viewer as well.

Documentation for C, C++ and Python API can be found on the respective pages below:


Download Windows installer from the Download Centre. It is a single installer that installs all the BrainAccess software. For linux users download the debian package for installation of BrainAccess software.

The Download Centre becomes accessible after the purchase of one of our products.

System requirements

  • Windows 10 or newer and Ubuntu 18.04 or newer are supported.