BLE Reliability?

I have a strange problem and I am not sure if this is actually correct behavior or if I am doing something wrong. So we wanted to dive into BLE deeper and bought two Nordic nrf52840 dongles. I also use two laptops lets just call them Laptop A and Laptop B. Both laptops are equipped with one dongle. Laptop A hosts a python driven GATT Server application. Using the nrf android app I can connect to it and look at the characteristics so I know it is working as intended. Furthermore, this laptop hosts a different python script that uses the nrf dongle to sniff all BLE packets. Now Laptop B only hosts a simple script which uses the dongle to send packets to the GATT server. Now my problem is the following: Sending SCAN_REQ or CONNECT_REQ packets results in Laptop B telling me it received a response, however, the sniffer on Laptop A does not show any SCAN_REQ or CONNECT_REQ packets being seen. So as a next step I created a script on Laptop B that only sends continuous SCAN_REQ packets. From the 30 packets being sent I approx. only see 5 in the sniffer logs. Is this normal? Is BLE just really unreliable? Is it somehow related to the GATT server using my laptops Bluetooth chip and the sniffer running the dongles chip? Why is it that I basically sometimes don't see sent packets in the sniffer log and why is it that from what I see in the log that basically only 10% arrives?

Parents
  • If the sniffer is not running when a connection is established it can not track the suedo-random hopping algorithm. As it can only recieve on one out of 40 channels at a time it will miss a lot of packets. There is also limit to what the sniffer can pick up even if it is tracking a connection as it cannot make use of the protocols automatic retransmissions when it receives a malformed packet. The nRF Sniffer is an very cost effective tool, but it is not perfect. A proper wide-band BLE sniffer costs 100-400x the price of the nRF52 dongle. The nRF Sniffer can give you a good indication on what's going on on-air, but it can't replace industrial RF analysis equipment. 

    The BLE protocol itself is incredibly reliable, and able to operate in environments drowned in RF interference. If you want to test the reliability/range of BLE i suggest you run the BLE throughput examples as they will give you real-world numbers on the performance of your link, instead of using the sniffer to count received packets. 

  • Thank you for your response. 

    Regarding the 40 channels: But if I am only sending SCAN_REQs they should be only sent through 3 channels right? Shouldn't it still be capable of sniffing them more regularly when it is only three channels?

    Anyways, I am very happy with the dongle. As you said it is very cost effective tool. 

  • As hugh has commented already the dongle's antenna is not that great, it's optimized for size constraints. Anyhow, the sniffer will not track a single device unless it's in a connection, other than that it will listen to the 3 adv channels as best it can, but it can't listen to all 3 at once.

Reply Children
No Data
Related