Seeking Documentation on OpenBCI WiFi Shield API and Example Responses

benbobenbo San Francisco Bay Area

Hello everyone,
First-time poster here.

I am looking for documentation on the OpenBCI WiFi (shield) API, specifically example responses from an OpenBCI board. I found this old documenation https://docs.openbci.com/ThirdParty/WiFiShield/WiFiAPI/, but it doesn't cover all commands.

My goal is to use the OpenBCI_GUI to visualize and analyze live EEG signals from a third-party device, a Muse S.

Here’s what I’ve done so far:
1. On the GUI, select "CYTON (live)" with the "WiFi" protocol.
2. Select "Static IP" and enter the IP value (my laptop's).
3. Press START SESSION.
Result: the GUI displays "Failed to initialize board" error message. I found out that it sent a "/board" API call on Port 80 to my laptop's IP.
* NOTE: The Wifi API documentation I cited does not describe the "/board" API command.

I plan to write a custom OpenBCI-wifi server that makes the Muse emulate a Cyton board. To achieve this, I need to know what minimal set of GUI commands to support and what responses to generate.

Additionally, do you think this approach could be a viable way to extend OpenBCI_GUI’s compatibility with other third-party BCI devices? Would the OpenBCI community support this idea?

Thanks in advance for any help or guidance!
Ben!

Comments

  • wjcroftwjcroft Mount Shasta, CA

    Hi Ben,

    The Wifi Shield hardware is not currently in production. A new V2 Cyton is anticipated that will support Wifi directly without needing a shield. However 'Galea' is taking priority at the present time and V2 Cyton timeline is uncertain.

    The emulation you are proposing would be very difficult. As it involves multiple levels of firmware (Cyton PIC32 mainboard and Shield ESP8266) and GUI coordination. The Wifi Shield (hardware, software, firmware) is currently in status: deprecated, unsupported.

    A much simpler route is for you to utilize the Brainflow library and sample programs that already can interface to Muse.

    https://brainflow.org/
    https://brainflow.readthedocs.io/en/stable/SupportedBoards.html#muse
    https://brainflow.readthedocs.io/en/stable/Examples.html#python-get-data-from-a-board
    https://brainflow.readthedocs.io/en/stable/Examples.html#python-real-time-plot

    Yet other possibilities you have are to use other BCI platforms that support Muse, such as Neuromore, OpenViBE, etc. But Brainflow is likely your best bet as the Python code is easily modified.

    Regards, William

  • wjcroftwjcroft Mount Shasta, CA

    Some Neuromore 'muse' comments, issues,

    https://github.com/neuromore/studio/issues/52

  • benbobenbo San Francisco Bay Area
    edited July 3

    Hi William,
    Thank you for your explanation and suggestions!
    I'm actually already using the Brainflow library to connect to the Muse S via Bluetooth on my MacBook and receive raw data. I can also display the data live using the real_time_plot.py sample code, with minor tweaks to make it work with the latest Qt5 library.

    real_time_plot.py output

    As you can see, the output is quite basic. While I could enhance the sample code to add more widgets and features, I am interested in making the Muse work with existing BCI GUI tools and supporting that ecosystem. I really like the simple yet functional design of OpenBCI_GUI with its ability to record sessions easily, monitor and display live data, and use built-in widgets for analysis.

    I understand that the WiFi Shield is deprecated and unsupported. My goal is not to build a similar "shield" for the Muse but rather to create software that acts as a middleman between OpenBCI_GUI and the Muse.

    Here’s my plan in more detail:
    1. Write a Python web service using Flask and requests that binds to Port 80 on my laptop's localhost IP.
    2. Implement the minimal set of REST API calls needed to support the "START SESSION" and "STOP SESSION" commands sent by the GUI. For this, I need information on the URL endpoints, input parameters, and the expected HTTP response. Other commands will not be implemented.
    3. When the session starts, the web service will execute a task (in a separate thread) that streams the raw sensor data to the GUI. The WiFi API documentation describes the output format. The streaming task will serialize the Muse data in this format. Given that the Muse S samples EEG at 256Hz and the accelerometer at 50Hz, there may be some complications.

    What do you think the technical hurdles are with this approach?

    I will explore the other GUI tools you suggested if it turns out that the middleman approach is not feasible.

    Best regards,
    Ben

  • benbobenbo San Francisco Bay Area

    I'm making progress. Thanks the the openbci-wifi-server example on SwaggerHub, I have enough info to try to develop the middleman software.
    I will post an update.

  • wjcroftwjcroft Mount Shasta, CA

    The code you found from 2017 may not match what the current GUI is doing. That code was never supported or announced by OpenBCI or AJ Keller. Support in the current and future GUIs for the now deprecated Wifi Shield product, may end at any time without notice.

    If your goal is BCI or signal analysis, there are better easier options available for you.

Sign In or Register to comment.