-
Notifications
You must be signed in to change notification settings - Fork 21
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
Reopening device fails #103
Comments
I can add, that adding a 10 second sleep after each call to
|
Thank you for the detailed logs! This looks to be similar to #75. It's a known issue that there's some quirks around re-opening the device (especially the USB dongle) that I haven't investigated in detail. I haven't prioritized this issue as the typical/most common use-cases close the device when the program terminates, but I will keep it on my radar. |
Any updates on this? |
I haven't looked much into this. I think there's a solution polling pc-ble-driver-py's enum_serial_ports. I haven't been working in this domain recently so this has fallen to the wayside for a bit |
The issue can be reduced by waiting for the serial port to be ready before opening the Blatann BLE Device. In the following code, modified from the original test script by @martinhansdk, this is done using pyserial 3.5 to find the serial port first, then checking that the serial device path exists:
In my testing on Linux I found that sometimes the serial port is listed/found while the operating system level serial device path isn't ready (yet). The code tries to detect that situation and does another retry/run to find the serial port (and path). It also adds a little more time before checking the path... which feels a bit like a hack, but this does provide much more reliable use of the nRF52840-Dongle (PCA10059). This approach does introduce delays (as other fixed/static duration sleep workarounds also do), but it tries to be more reliable with as little delay as possible. Next to testing with the nRF52840-Dongle (PCA10059), I've also tested the script with the nRF52-DK, a Dev Kit for the nRF52832 (PCA10040), and that also worked fine with the script. |
On 2023-06-07 @ThomasGerstenberg commented:
I looked into this a bit (after my work on the above PySerial based approach) to see if it could be used. However, the nRF52840-Dongle (PCA10059) will not be enumerated by
Which on Linux showed the following (incorrect, see below) output:
Note that in my case that output is incorrect, as I had the following two nRF52 Connectivity devices present:
Both have proven to work with Blatann just fine (and thus are known-good nRF52 Connectivity devices). There might be fixes proposed for the underlying |
I find that I frequently get a timeout when trying to open a BleDevice that I have recently closed. This happens when I'm running a script, interrupt it and then start it again.
I am using a nrf52840 dongle that I've programmed with the connectivity firmware that ships with blatann version 0.3.6. I am on Ubuntu 21.10.
I have boiled the situation down to the following minimal script which simply opens and closes the device in a loop:
Here is the output that I get from running the script:
As you can see, it complains about a non-existing file when trying to open the device the second time. My script checks that the serial port device exists before opening, so I don't know what could cause this.
The text was updated successfully, but these errors were encountered: