Project B: Reverse-engineer a bought board
If you buy an OpenBCI Ganglion or Cyton instead of building, read its schematic, trace the signal chain, read its firmware, and characterize it as if it were yours. Faster to decoding, and nearly as educational.
You are skimming: the title, the first figure, and the short version. Switch to Read in the header for the full page, or Deep to open every deep dive.
There is no shame in buying the amplifier. OpenBCI publishes every schematic, every board layout, and every line of firmware, so a bought board can be read like a textbook that happens to work. The deal you make with yourself is this: you will read the whole schematic and be able to explain every part on it, you will find the sample-conversion code in the firmware, and you will measure the board’s noise floor and rejection on the phantom head exactly as if you had designed it. Then you will get to Phase 3 a month sooner than the builders.
Which board
The Ganglion has four channels, uses a Microchip MCP3912 converter rather than the ADS1299, and talks Bluetooth. It is the cheap way in and its four channels are enough for SSVEP, P300, and a two-channel sleep band. The Cyton has eight channels around the ADS1299, an optional eight-channel daisy board, and a radio link; it is the research-lite standard and costs four times as much. A used Cyton appears for sale often enough to be worth watching for.
Read the schematic like this
Print it. With a highlighter, trace one channel from the electrode connector to the converter input, and mark every component you pass. For each one write, in the margin, what it is for. A series resistor: input protection and RF filtering. A capacitor to ground: the other half of that filter. A ferrite: keeping radio out of the analog section. When you reach a component you cannot explain, that is your reading for the evening.
Then do the same for the bias (DRL) path, the reference path, the power path from battery to analog rail, and the SPI lines. Four highlighter colours. Photograph the annotated schematic into your notebook.
Read the firmware like this
Find three things. The register initialization: which registers are written at startup and to what values; compare each to the datasheet’s register map. The data-ready handler: how the frame is read and how the 24-bit two’s-complement values are unpacked. The scaling: the line that turns counts into volts, and the constant in it. Compute the constant yourself from the reference voltage, gain, and bit depth, and check it matches.
If you find a discrepancy, you have found either a bug or a subtlety, and either one is worth a note in the OpenBCI forum.
Measure it like it is yours
The phantom head and the characterization report apply to a bought board unchanged. Noise floor with inputs shorted. Common-mode rejection with a known hum injected. Gain accuracy and bandwidth with a swept sine. Crosstalk between channels. Compare each to the manufacturer’s stated numbers. Boards usually meet them; the exercise is in knowing how to check.
Modify one thing
Once you can read it, change it. Ideas: replace the stock electrodes with ones you made in the electrodes project and compare impedance and noise. Write your own receiver in Python that speaks the board’s serial protocol and publishes to LSLLab Streaming Layer (LSL)A protocol that timestamps and synchronizes streams from many devices and stimulus programs on a network; every BCI lab uses it. Glossary entry. Add a hardware trigger input for experiment timing. Design a 3D-printed headset that positions the electrodes at O1, O2, C3, and C4 repeatably.