Skip to content

Conversation

@philippitts
Copy link
Contributor

This PR creates explicit boards for the Ganglion v2 and v3 firmwares.

Supporting two separate firmwares is necessary because some users have older Ganglion boards which require specialized hardware to upgrade the firmware. Most users with these older boards will not be able to upgrade. Newer Ganglion boards support OTA updates and can benefit from bug fixes in current firmware releases.

The current implementation attempts to use the device name advertised by the Ganglion board to determine if the v2 or v3 firmware is in use. This works fine on most platforms, but fails with CoreBluetooth on newer versions of macOS when using native BLE. These problems will likely become more prevalent as support for the Simblee module used in Ganglion has ended.

The proposed change classifies v2 Ganglion boards as legacy devices and creates separate IDs for these boards. The current Ganglion board IDs will default to the v3 firmware. Users who cannot upgrade can explicitly select the legacy firmware when starting a BrainFlow session. This allows users on newer versions of macOS to use the current firmware while maintaining support for legacy devices.

@Andrey1994
Copy link
Member

Andrey1994 commented Jan 22, 2026

hi!
Are you back to openbci?

Its ok, but I think it would have been better to keep current code as is(with the attempt to determine the fw), and add special parameter to force specific fw into BrainFlowInputParams.other_params, and in addition to it we can add a warning only for macos where this mechanism doesnt work and if this parameter is not set.

Benefits would be - it will not break anything comparing to the current state for any users(those who has old fw mostly)

Thoughts?

@Andrey1994
Copy link
Member

basically to force specific fw version:

params = BrainFlowInputParams()
params.other_info = "fw:2" # idk the best format for it, can be just 2
board = BoardShim(BoardIds.GANGLION_NATIVE_BOARD, params)

and use this mechanism where we determine this by default if other_info is not set, plus warning messages, etc. Also, can make this param required for macos if needed or just default to 3 there

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants