Are there known bluetooth LE issues using OSX 10.12.5 that result in missing packet data

bluedbluetooth

PROBLEM:

When two IMUs are sending data at the same time and are received in my debug script only one stream of data from one IMU sensor ever shows up in the log. The same script shows the expected results when run on other systems.

VERSIONS:

My laptop's related hardware/firmware/software versions

  • OSX 10.12.5
  • Apple Bluetooth Software Version: 5.0.4f18
  • Manufacturer: Broadcom
  • Transport: USB
  • Chipset: 20702B0
  • Firmware Version: v137 c9260
  • HCI Version: 4.0 (0x6)
  • HCI Revision: 0x242C
  • LMP Version: 4.0 (0x6)
  • LMP Subversion: 0x4189

My test script's related software versions

  • Xcode 8.3
  • node v6.11.0
  • noble 1.8.1

DETAILS:

The above relates to a test script I'm using to debug a BLE problem. The script acts as central device that connects to BLE peripheral sensors (IMU) that broadcast data from a nordic bluetooth chip.

The hardware does not seem to be the issue. I can run the test script with expected results on a number of different systems so it seems to be something related to the hardware/firmware/software versions of bluetooth on my laptop but I can't find any related info.

  • I ran tests demonstrating expected result in other environments using the same node and lib versions.
  • Tested using same OSX version and also using different OSX version with expected results.
  • Tested on android with a different packet observation app with expected results.
  • The 2 IMUs have been independently tested and are confirmed to work.
  • When I observe a single IMU (not the simultaneous pair) I am able to observe the data correctly.
  • I tried restarting my machine with no effect.
  • I have reset the bluetooth module and restarted my machine as well.
  • I've observed BLE packets using xcode packet sniffer and the expected packets don't show up there either (i.e. independently observed so it doesn't seem to be node/noble issue).
  • I've also tried using different language implementations to connect to OSX bluetooth layer on my mac but there really aren't any working libraries that I could find.
  • I have not experienced any other regular bluetooth issues or BLE issues using the same machine.

Basically I'm desperate and don't know what else to try or how to debug this issue.

I'm looking for ideas identifying the issue or ideas to help me to debug the issue. If anyone has any insights please let me know. Thanks so much!

Best Answer

The issue of packet loss was due to the different minimum connection intervals allowed on different operating systems and the amount of data my peripheral was attempting to output. Due to the requirements of the project we need fairly high throughput. My original assessment of getting positive and negative results from the same operating system were incorrect due to some confounding variables. The same packet loss was occurring on all mac machines I tested. Greater packet loss was occurring using os x vs using ubuntu because there is a theoretical limit on the minimum connection interval of 20ms for all apple software interfacing with corebluetooth. I'm not sure if ubuntu imposes a similar limit but I was definitely observing less packet loss using ubuntu. My hunch is that there is no artificial limit and the connection interval could have been at the ble minimum of 7.5ms but I will have to do some more research to figure out what the number actually is.