Spelling with attention: a brain-computer interface
Connecting a portable, open-source EEG headset to a P300 speller so people with ALS could spell words without moving.
ALS gradually takes away movement and speech while thought stays intact. Our assistive-technology team explored whether a portable, affordable EEG headset could give people a way to communicate that doesn't depend on movement at all.
How a P300 speller works
The user looks at a grid of letters while its rows and columns flash in random order. About 300 milliseconds after the letter they're focusing on lights up, the brain produces a small, recognizable response called the P300. By averaging the signal over repeated flashes, the software works out which row and column held the target, and types that letter.

The system
We combined two open-source projects: the OpenBCI board and its Python driver to read EEG from an open-source headset, and OpenViBE, a brain-computer interface platform whose CoAdapt P300 stimulator runs the speller and classifies the responses.
Adapting the speller to a portable headset
OpenViBE's speller ships configured for a lab-grade cap, so our patch reconfigured it for the headset:
- Eight electrodes instead of twelve, at C3, Cz, C4, P3, Pz, P4, O1, and O2, matching the board's eight channels over the central, parietal, and occipital areas where the P300 is strongest.
- A neutral spatial filter. The default filter weights were trained for a different 12-channel setup, so we reset them to be retrained for each user.
- Fifteen flashes per letter instead of four. Averaging more repetitions makes the response easier to detect in a noisier portable signal, at the cost of spelling speed.
- A pangram for calibration. "Sphinx of black quartz, judge my vow" uses every letter of the alphabet, so training sees each one.
The repository also documents how to build OpenViBE from source on Linux with these changes.
Where it stood
Winner of the Design Excellence Award.
The code repository holds the system setup and speller configuration; it doesn't include trained models or measured spelling accuracy and speed, so this page describes the design rather than evaluated performance.