brainflow integration — CUSTOM_BOARD + OpenBCI Cyton/Ganglion support #17

Open
opened 2026-04-26 21:47:42 -07:00 by pyr0ball · 0 comments
Owner

Add BCISource adapter using the brainflow Python library.

Hardware targets:

  • OpenBCI Cyton (8-ch, USB dongle): BoardIds.CYTON_BOARD
  • OpenBCI Cyton+Daisy (16-ch): BoardIds.CYTON_DAISY_BOARD
  • OpenBCI Ganglion (4-ch, BLE): BoardIds.GANGLION_BOARD
  • Custom ADS1299 PCB (see #18): BoardIds.CUSTOM_BOARD via WiFi serial

Interface:

class BCISource:
    def start_stream(self) -> None: ...
    def get_board_data(self) -> np.ndarray: ...  # (channels, samples)
    def get_sampling_rate(self) -> int: ...
    def stop_stream(self) -> None: ...

Auto-detect: probe USB serial ports at startup. If no board found and no custom board config, BCISource.is_available() returns False.

Optional dep group: merlin[bci]brainflow>=5.10.

Tier: Paid — BCISource is BSL. The brainflow binding itself is MIT (open hardware deserves open drivers).

Add `BCISource` adapter using the `brainflow` Python library. **Hardware targets:** - OpenBCI Cyton (8-ch, USB dongle): `BoardIds.CYTON_BOARD` - OpenBCI Cyton+Daisy (16-ch): `BoardIds.CYTON_DAISY_BOARD` - OpenBCI Ganglion (4-ch, BLE): `BoardIds.GANGLION_BOARD` - Custom ADS1299 PCB (see #18): `BoardIds.CUSTOM_BOARD` via WiFi serial **Interface:** ```python class BCISource: def start_stream(self) -> None: ... def get_board_data(self) -> np.ndarray: ... # (channels, samples) def get_sampling_rate(self) -> int: ... def stop_stream(self) -> None: ... ``` **Auto-detect:** probe USB serial ports at startup. If no board found and no custom board config, BCISource.is_available() returns False. Optional dep group: `merlin[bci]` → `brainflow>=5.10`. Tier: Paid — BCISource is BSL. The brainflow binding itself is MIT (open hardware deserves open drivers).
pyr0ball added this to the Phase C — EEG and EMG Hardware milestone 2026-04-26 21:47:42 -07:00
Sign in to join this conversation.
No labels
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/raven#17
No description provided.