notjosh / bleno-mac

Bleno MacOS bindings using the official CoreBluetooth API
MIT License
23 stars 24 forks source link

macOS 10.14.2 no services or characteristics being broadcast on Android #2

Closed DaBs closed 5 years ago

DaBs commented 5 years ago

Since updating to 10.14.2, I haven't been able to see any services or characteristics, although I can connect to the device just fine. Seeing as this was not the issue with 10.14.1, I'm suspecting some change in how CoreBluetooth handles adding services "on-the-fly". I'm investigating it as well, but any pointers to where to start would be greatly appreciated.

It seems that this only affects Android for now.

EDIT: It turned out to be due to mismatched bonding information. This can be avoided by forgetting the previous bonding information. It's going to be interesting seeing if this issue persists with the next macOS update.

saiimons commented 5 years ago

Which version of Android are you using ? Are you using a particular framework on top of the Android APIs ?

My current tablet is running Android 8, I am using https://github.com/Polidea/RxAndroidBle.

My JS code runs on Mojave 10.14.2, no problem - except when writing quickly on the characteristic (see #1)

notjosh commented 5 years ago

If you have a small repro in how you're adding "on-the-fly", I'll take a look when I get a chance. Nothing comes to mind why it'd be an issue though :(

DaBs commented 5 years ago

@saiimons Exact same framework, and Android 9 (Pie) on a OnePlus 5T. I'm seeing the services fine on iOS (Using Rx there as well), so I'll try to reproduce in a separate repo

notjosh commented 5 years ago

I don't have a (modern enough) Android device to test this on so I'm not sure how much help I'll be able to be here, sorry. Hope you folks can figure it out though, and I'll take a look through any repro you've got!

DaBs commented 5 years ago

OK, after testing on a colleagues device, I've found the issue to be in relation to the bonding information. Since the device has previously been bonded before the macOS update, there seems to be some mismatch between the client's bond information and / or service information and the actual information being broadcast by BLENO. The solution turned out to be to "forget" bonding information, whereafter the issue practically resolved itself. Thank you for the quick response, however!