-
Notifications
You must be signed in to change notification settings - Fork 260
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GUI v5.0.3 fails to send/update/maintain hardware settings #954
Comments
Please provide a console log and screenshot. Descriptions are not enough information in this case. |
OK, here are some screenshots from playback:
Log files: |
When you make a recording, electrodes should be connected to a user, and other channels should be turned off. Is this the case? If not, I would try again with this in mind. |
FYI This is not an issue with the GUI, so I will close this issue. I can see from the console log that the commands were sent out from the Dongle with success while the board is not streaming. There isn't always an acknowledgment from the board. I can try to help do some basic troublshooting though on the hardware. |
I'm not sure what you mean. As I mentioned earlier the recordings were done with 5 electrodes connected (in this case to my own head) and channels 2-7 were turned off. Somehow, however, the turned-off channels activated themselves with no actions from my side. I tested it several times. The outcome was always the same. So, it's not just an occasional problem. If the channels are disabled, why their signal appears in the GUI at all? |
There is enough info here for me to try and replicate. Looking into this now.... |
I was not able to replicate this issue using Cyton + Mac and the latest development copy of the GUI. There was no leaking of signals and I set the hardware settings almost the same as yours. What we can do is send commands for channels with un-sent commands only, instead of sending commands for all channels. |
|
I understand. In my case the problem only started after 3 minutes of recording. I run GUI on Win 10. |
I am trying again and leaving it running for 10-15 minutes with a charged (and larger) LiPo battery. In this case, the operating system is not a factor. |
ACTION ITEMS FROM THIS THREAD:
|
@marles77 Two most important steps you can do now are:
|
I'll give it a try with totally fresh batteries after the weekend. I appreciate all the improvements in GUI since v4. If we manage to fix this issue I will be more than happy. Loading the hardware settings form a file seems convenient indeed. |
So, I spent a few hours to try to document my issue. Apologies in advance for such a long comment.
GUI 4.2 GUI 5.0.3 Another test with additional EEG channel (N8P) GUI 5.0.3 Is there any explanation of such a different behavior of GUI 4 and GUI 5 ? Is this some sort of a problem with the connection between GUI and the Cyton board (firmware, drivers, whatever else)? I tried to run these tests multiple times. The outcome was always the same. |
Please Save and Load Hardware Settings in GUI v5. Then, Send commands. This will reduce the number of commands sent to Cyton by half. I have already pushed code to shorten this even more. This is the difference.
If you save/load/send, this would only be 8 commands in GUI v5.0.3. Please do this with Data Streaming Off. |
Closing this issue as I have pushed code to resolve what can be fixed, and was unable to replicate the further issues. |
@Andrey1994 This could be an issue with BrainFlow and Cyton commands, or maybe an issue with how the firmware interprets multiple commands. |
I used Save and Load option on other occasions. That did not change the outcome. |
The link I previously gave, |
@wjcroft I can see the link but I can't see anything like "reflashing". Do you mean I should install arduino firmware manually? |
@marles77 Please try this first. After sending these configuration commands. You can confirm the ADS1299 registers using the If the registers are correct, and the channels that are Off still show signals, this will confirm that the error is in firmware/hardware. |
@retiutut OK, I'll try to do that tomorrow. However, what about the recordings performed under v4.2? They are consistent. I posted just one sample but I have made tens of such recordings. Doesn't that prove that the hardware is OK? |
@marles77, yes, the previous link shows how to upload and refresh the firmware on the Cyton. Cyton firmware is stored in flash memory on the CPU chip. So the informal term for this is 'flashing' the firmware. As far as sending Cyton commands over Brainflow, (the test Richard suggests) you can see an example of the Brainflow function call used, here: https://openbci.com/forum/index.php?p=/discussion/2703/disable-srb-with-brainflow-on-cyton-resolved |
@marles77 Here is the full Python code you need to bypass the GUI and stream every single sample over LSL with no delays: CODE AS OF MARCH 16, 2021, 5PM CST:
|
@retiutut Brilliant! It's still warm... I'll let know tomorrow how it worked. I need to crash, it's neerly midnight here. |
@retiutut @wjcroft @Andrey1994
One thing that can be important here is the log from my first attempt, when I tried to send multiple commands to the board: |
For Cyton, we only know that the Dongle aka Serial Port was able to send the message. Also, the data from the example I shared does not have filters applied. You can modify the code to add BrainFlow filters (same used in GUI) to the data before sending out via LSL. |
Not entirely true. The values that were non-zero were indeed coming from the board. |
I don't understand how openbci_lsl.py can output filtered data. |
Are you absolutely positive? Take a look at lines 1060-1190 of OpenBCI_32bit_Library.cpp where incomming channel settings are processed. I can see many different messages that are sent depending on success or failure. That is exactly what I get when I send commands to the board by openbci_lsl.
OK, I can try. |
What do you mean by filtered data? It's just normalized in EEGLab. >60Hz frequencies are cut off because sample rate is only 125Hz. No other filters were applied. |
Some commands force device to write smth to serial port some of them not. You can write smth like this if you want:
Also, I dont think that its a good idea to stream filered data like this. Because you read very small chunks and filter data in such chunks. It makes much more sense to filter it once in the end where you need it |
@Andrey1994 Thanks for your reply. From what I can see 'v' calls soft reset and it just returns board ID.
Sorry, but I don't understand what filtered data you refer to. This is what I get after streaming by openbci_lsl and recorded by LabRecorder. I don't think they use filters. I searched for any filtering methods and didn't find anything. Anyway, I will try your code together with brainflow filters as suggested. |
Cyton 8Ch Sampling rate is ~250Hz. |
Yes, I'm aware of that. Openbci_lsl automatically detects Daisy and I didn't disable it manually, so originally 16 channels were available. I turned off all but one. However, sample rate was reduced by half. I think that at this stage this discussion is pointless. Thank you for your time. I'll be monitoring the development of the new GUI and the Brainflow library because I believe that they have great potential. At the moment, however, I don't think they are reliable enough to use them in my work. Maybe it has something to do with my configuration. I have to figure it out. |
Sorry to beat a dead horse here. ;-) I wanted to add one more thing. Previous comment by Richard:
Is it possible that some ADS1299's, are overly sensitive to the timing and sequencing of commands sent via the Cyton firmware. Such that Richard's tests with GUI 5 work fine, but Marcin's GUI 5 tests, produce flaky 75Hz noise after some minutes of running. BECAUSE, the rapid default GUI 5 loading of his Cyton channel settings, (sent one after the other with little / no delays between channel set commands) somehow confused / jangled / fried the marginal ADS1299 that Marcin owns. So although technically his ADS1299 failure with GUI 5, is really a hardware bug in his ADS1299. It only 'works' with GUI 4, because the old Hub is so slow that it naturally inserts some small delays between each channel set command. Whereas GUI 5 using Brainflow is so efficient and fast, that the commands come faster into Marcin's ADS1299. And unfortunately his ADS1299 hardware is marginal, and fails after some minutes when 'pushed' in this fashion. So... I realize Richard already made improvements in the GUI 5 channel setting logic, to only send the required channel set commands, not all at once. But, this may not be enough to handle ADS1299 chips that have this type of marginal behavior. And it is unknown how many such chips are in the field. So, could a workaround be, that any time GUI 5 sends multiple channel set commands, that an arbitrary timing delay be inserted between such commands? Say some fraction of a second if that is possible with Processing language. Like 500 ms or 200 ms. If only 1 second delay is possible, then go with that. Regards, William |
Finally, something constructive. I believe that a 0.2 sec delay would not interfere with UX. I think that @retiutut Richard has already proposed another good workaround (redundancy seems not a bad thing in this case):
Sending only changed channels would let the user match the amount of data being sent, to the particular board. |
@retiutut @Andrey1994 As I already mentioned on the forum adding delay does the trick and fixes the problem. Now I start to appreciate the simplicity of Brainflow. But can I have one last question? I use Cyton + Daisy and even if I send the command 'c' (with 0.5 sec delay) and receive the confirmation that Daisy is removed, the sampling rate is still only 125Hz. I send this particular config_board() before LSL initialization (and after board.prepare_session()), so srate should already be updated. Using 0 as board-id in params doesn't work either (noise at all channels). Is there any other way I can set a sample rate of 250Hz for the remaining 8 (i.e. Cyton) channels? |
I'm not sure if anyone still follows this issue, but just in case someone bumps into a similar problem with GUI 5 and Cyton+Daisy, the fix is just sending 'c' command through the Hardware settings in Expert mode (tested on v5.0.4). In my case it was necessary even if I chose 8 channels option in the Control panel. I intuitively assumed that selecting 8 channels should automatically deactivate Daisy. I was wrong. I think it should be either implemented or explained somewhere. |
@marles77 I haven't tried using 8 channels with the Daisy attached in some time. The main reason is that I would forget to change how the earclip electrodes are attached. Using Daisy requires Y-splitter cable for one of them. I'm going to reopen this issue and maybe we should send "c" as you suggested for this use case.
|
Problem
I'm trying to record EEG and EOG simultaneously following instructions from this official tutorial. I use Cyton+Daisy but in this case I just switch to 8 channels recording. The signal is then sent through LSL and intercepted by LabRecorder, since I need to synchronize it with a stream of markers.
My configuration:
A1 - bottom SRB
A2 - bottom BIAS
EOG - N1P (bipolar: top pin + bottom pin)
EEG - N8P
Because I dont't need the rest of the channels and I don't want my EOG channel to refer either to SRB or Bias, I go to Hardware settings and first disable unused channels 2-7, and then for channel 1 I switch off both SRB2 and Bias. I hit "Send" and get a message that it was sent to my board. I go back to Time series and it seems to work fine. However, after ~2-3 minutes the disabled channels (usually 3 and 4) start to send some high frequency noise. After another ~60 seconds all channels (including EEG and EOG) produce only HF noise. Updating settings at this stage is impossible. I tested this with GUI v4.2 and everything worked just fine. GUI 5.0.3 works without problems when I don't touch Hardware settings (but I really need to...).
Expected
Hardware settings are sent to Cyton and maintain until the end of current session or until they are updated (as it is in v4.2).
Operating System and Version
Windows 10
GUI Version
5.0.3
Running standalone app
I'm running the downloaded app
Type of OpenBCI Board
Cyton/Cyton+Daisy
Are you using a WiFi Shield?
No
The text was updated successfully, but these errors were encountered: