### Check EEGLAB Setup in MATLAB Source: https://docs.openbci.com/Software/CompatibleThirdPartySoftware/Matlab Run this command in the MATLAB prompt to verify if EEGLAB is correctly installed and accessible. An error indicates it's not set up, while a GUI pop-up confirms success. ```matlab eeglab ``` -------------------------------- ### SD Card Metadata Example Source: https://docs.openbci.com/Cyton/CytonSDCard This example illustrates the metadata included at the beginning and end of an SD card log file. Lines starting with '%' are text metadata, including timestamps, total write time, and block write performance. ```text %START AT 00001C70 00,8822D0,882E56,8CB903,8AA6B0,88101E,881459,8C9E38,8CC28A 01,882194,882D1F,8CB47F,8AA0B5,880EE8,881321,8C9B2D,8CC403 .... 50,876554,8770E3,8BFE9F,891AE4,875316,875739,8BE3A1,8C0FE0 %STOP AT 000025BD %START AT 0000315A 00,866B60,8676F6,8B099A,86F099,8659F9,865DAA,8AE564 01,866A24,8675B7,8B05B9,86E9D6,8658B7,865C68,8AE291 .... %Total time mS: 00005F53 %min Write time uS: 0000012B %max Write time uS: 00000131 %Over: 00000000 %block, uS ``` -------------------------------- ### OpenBCI_Radios RadioHost32bit Example Source: https://docs.openbci.com/Cyton/CytonRadios This example launches the Host firmware for the OpenBCI dongle. Ensure the correct board (RFduino) and COM port are selected in the Arduino IDE. ```Arduino radio.begin(OPENBCI_MODE_HOST,20); ``` -------------------------------- ### Example: Set Sample Rate to 800Hz - Ganglion Firmware v2.x.x Source: https://docs.openbci.com/Ganglion/GanglionSDK This example demonstrates setting the sample rate to 800Hz. The command is followed by a confirmation string. ```text Sample rate set to 800Hz$$$ ``` -------------------------------- ### Install pyautogui Package Source: https://docs.openbci.com/Examples/EMGProjects/EMGscrolling Use this command to install the pyautogui Python package for GUI automation. ```bash python -m pip install pyautogui ``` -------------------------------- ### Install pylsl Package Source: https://docs.openbci.com/Examples/EMGProjects/EMGscrolling Use this command to install the pylsl Python package for LSL data streaming. ```bash python -m pip install pylsl ``` -------------------------------- ### Install BCILAB in MATLAB Source: https://docs.openbci.com/Software/CompatibleThirdPartySoftware/Matlab Change the current directory to the BCILAB installation path. This command is used after downloading and extracting the BCILAB toolbox. ```matlab cd your/path/to/bcilab; ``` -------------------------------- ### Example Data Logged by GUI Source: https://docs.openbci.com/Cyton/CytonExternal This data shows the format after being logged by the OpenBCI GUI, including the values 3.14 (0x6620) indicating a trigger event. ```text 217, -18.08, -23.04, -21.59, -29.86, -23.76, -19.65, -28.79, -19.47, 0.00, 0.00, 0.00 218, -18.17, -22.82, -21.59, -29.93, -23.85, -19.65, -28.72, -19.16, 0.00, 0.00, 0.00 219, -17.97, -23.04, -21.39, -29.97, -23.92, -19.56, -28.74, -19.24, 0.00, 0.00, 0.00 220, -17.99, -23.07, -21.61, -30.00, -23.72, -19.71, -28.52, -19.16, 0.00, 0.00, 0.00 221, -17.90, -23.04, -21.48, -30.09, -23.85, -19.54, -28.43, -19.18, 3.14, 3.14, 3.14 222, -17.90, -22.96, -21.48, -30.20, -23.72, -19.38, -28.57, -18.95, 0.00, 0.00, 0.00 223, -17.93, -22.89, -21.26, -29.97, -23.96, -19.65, -28.54, -18.95, 0.00, 0.00, 0.00 ``` -------------------------------- ### Launch BCILAB in MATLAB Source: https://docs.openbci.com/Software/CompatibleThirdPartySoftware/Matlab Execute this command in MATLAB after navigating to the BCILAB directory to start the BCILAB toolbox. ```matlab bcilab ``` -------------------------------- ### SD Card Data Log Format Example Source: https://docs.openbci.com/Cyton/CytonSDCard This example shows the structure of data logged to an SD card, including sample numbers, ADS channel values, and accelerometer/auxiliary values. Data is recorded in hexadecimal format. ```text Sample#, 8 ADS Channel Values, 3 Accelerometer/Aux Values 8B,028A3C,028A0E,028A86,028A04,0288FB,028AB7,028962,028A42 8C,028A3D,028A09,028A89,028A08,0288FE,028AC5,028960,028A3C 8D,028A3A,028A0B,028A85,028A01,0288ED,028AB1,02895A,028A3D 8E,028A41,028A06,028A83,0289FE,0288F2,028AAD,028953,028A3A,02A0,FF80,21A0 8F,028A42,028A02,028A79,0289FC,0288E8,028AAF,02894D,028A3F 90,028A32,028A0C,028A7C,0289FF,0288EE,028AB4,028959,028A3A 91,028A39,028A03,028A80,028A04,0288F6,028AB6,02894D,028A29 92,028A3B,028A0C,028A84,028A04,0288F1,028ABE,028952,028A37 93,028A3D,028A0F,028A7E,0289F6,0288EA,028AC2,02895A,028A35,02A0,FF80,2190 94,028A40,028A11,028A76,028A03,0288E4,028ABD,028953,028A38 ``` -------------------------------- ### Setup and Add Widget to Manager Source: https://docs.openbci.com/Software/OpenBCISoftware/GUIWidgets After instantiating, set the widget's title and add it to the main widget manager using the addWidget function. This ensures it appears in the GUI. ```processing ... w_networking = new W_networking(_this); w_networking.setTitle("Networking"); addWidget(w_networking, w); w_myNewWidget = new W_myNewWidget(_this); w_myNewWidget.setTitle("My New Widget"); addWidget(w_myNewWidget, w); w_bandPower = new W_BandPower(_this); w_bandPower.setTitle("Band Power"); addWidget(w_bandPower, w); ... ``` -------------------------------- ### Get Default Channel Settings (Cyton) Source: https://docs.openbci.com/Cyton/CytonSDK Query the current default channel settings. Expect a 6-character ASCII string followed by '$$$'. ```text D ``` -------------------------------- ### Example Data Logged to SD Card Source: https://docs.openbci.com/Cyton/CytonExternal This data format is logged to the SD card, showing hexadecimal values (e.g., 6220) that correspond to trigger events. ```text D9,FFFCD7,FFFBF9,FFFC3A,FFFAC8,FFFBD9,FFFC91,FFFAF8,FFFC99 DA,FFFCD3,FFFC03,FFFC3A,FFFAC5,FFFBD5,FFFC91,FFFAFB,FFFCA7 DB,FFFCDC,FFFBF9,FFFC43,FFFAC3,FFFBD2,FFFC95,FFFAFA,FFFCA3 DC,FFFCDB,FFFBF8,FFFC39,FFFAC2,FFFBDB,FFFC8E,FFFB04,FFFCA7 DD,FFFCDF,FFFBF9,FFFC3F,FFFABE,FFFBD5,FFFC96,FFFB08,FFFCA6,6220,6220,6220 DE,FFFCDF,FFFBFD,FFFC3F,FFFAB9,FFFBDB,FFFC9D,FFFB02,FFFCB0 DF,FFFCDE,FFFC00,FFFC49,FFFAC3,FFFBD0,FFFC91,FFFB03,FFFCB0 ``` -------------------------------- ### Get Current Sample Rate Command Source: https://docs.openbci.com/Cyton/CytonSDK Use the '~' command to query the current sample rate of the Cyton board. The board will return its current setting. ```text ~ ``` -------------------------------- ### Start Data Streaming - Ganglion Source: https://docs.openbci.com/Ganglion/GanglionSDK Send this ASCII character to start streaming data from the board. ```ascii b ``` -------------------------------- ### Configure Board Channel Settings via CLI Source: https://docs.openbci.com/Software/CompatibleThirdPartySoftware/LSL Enter Channel Settings mode to configure board parameters. The format 'x[settings]X' allows for specific channel adjustments. ```bash x3020000X ``` -------------------------------- ### Start Accelerometer - Ganglion Source: https://docs.openbci.com/Ganglion/GanglionSDK Send this ASCII character to start the accelerometer. This results in 18-bit delta compression of channel data. ```ascii n ``` -------------------------------- ### Start Impedance Test - Ganglion Source: https://docs.openbci.com/Ganglion/GanglionSDK Send this ASCII character to start an impedance test. The board will send back impedance packets. ```ascii z ``` -------------------------------- ### Launch OpenBCI GUI on Linux Source: https://docs.openbci.com/Software/OpenBCISoftware/GUIDocs Execute the OpenBCI GUI application from the terminal. You may need to use 'sudo' if you encounter permission issues. ```bash ./OpenBCI_GUI ``` ```bash sudo ./OpenBCI_GUI ``` -------------------------------- ### Example EMG Joystick UDP JSON Packet Source: https://docs.openbci.com/Software/OpenBCISoftware/NeuroFly_Toolkit This is an example of the JSON packet structure sent for EMG joystick data via UDP. ```json { "type": "emgJoystick", "data": [0.664, -0.749] } ``` -------------------------------- ### Install Python Requirements for LSL Source: https://docs.openbci.com/Software/CompatibleThirdPartySoftware/LSL Automatically install necessary Python packages for LSL integration using pip. Ensure you are in the correct directory before running. ```bash pip install --upgrade numpy brainflow pylsl ``` -------------------------------- ### Ganglion Board Startup Information Source: https://docs.openbci.com/Ganglion/GanglionSDK This is the initial output from the OpenBCI Ganglion board upon startup, providing version and hardware identification. ```text OpenBCI Ganglion v2.0.0 LIS2DH ID: 0x33 MCP3912 CONFIG_1: 0xXX ``` -------------------------------- ### Get Firmware Version Source: https://docs.openbci.com/Cyton/CytonSDK Retrieves the current firmware version of the Cyton board. ```APIDOC ## Get Firmware Version ### Description Retrieves the firmware version of the OpenBCI Cyton board. ### Command - `V` : Get firmware version ### Response Example ``` Board returns: v3.1.1$$$ ``` ``` -------------------------------- ### Check Python Version Source: https://docs.openbci.com/Examples/EMGProjects/EMGmusic Verify if Python is installed on your system and check its version by running this command in the terminal. ```bash python --version ``` -------------------------------- ### Instantiate New Widget Globally Source: https://docs.openbci.com/Software/OpenBCISoftware/GUIWidgets Register your new widget by instantiating it globally in the widgetManager.pde file. This makes it available in the widget dropdown menu. ```processing // MAKE YOUR WIDGET GLOBALLY W_timeSeries w_timeSeries; W_fft w_fft; W_Networking w_networking; W_BandPower w_bandPower; W_Accelerometer w_accelerometer; W_CytonImpedance w_cytonImpedance; W_GanglionImpedance w_ganglionImpedance; W_HeadPlot w_headPlot; W_template w_template1; W_emg w_emg; W_PulseSensor w_pulsesensor; W_AnalogRead w_analogRead; W_DigitalRead w_digitalRead; W_playback w_playback; W_Spectrogram w_spectrogram; W_PacketLoss w_packetLoss; W_Focus w_focus; W_MyNewWidget w_myNewWidget; ```