2
\$\begingroup\$

I captured an in-process asymmetric connectionless Bluetooth LE link from one device to another. It is a steady flow of data from the remote to the central.

See the screenshot below, where I've added some red lines showing periodicity of the messages:

Wireshark screenshot

There are 6 packets all transmitted within ~30 ms, followed by a gap of ~90ms, and then it repeats. Therefore, each cycle of packets+gap is 120 ms.

For various reasons, I do not seem to be able to capture "Connection Parameter Update Request" packets, so I do not have direct access to the "connection interval" being used. I'm trying to infer the "connection interval" only from the information shown.

Can I assume that the connection interval is 120 ms?

Or could it be much less less than that, with some "slave latency" applied?

Is it common for 6 packets to be transmitted in such quick succession like this?

A colleague was guessing that the connection interval is 120ms/6 = 20 ms. I didn't think so, but could he be right?

\$\endgroup\$
3
  • \$\begingroup\$ What do you mean by "connection interval"? As in it's disconnecting and reconnecting? All I see are notifications in your screenshot, they could be sent one right after the other, you can send 6 like you see or you could send 20, it doesn't really matter. The ~90ms until it repeats could be anything, depending on what the application is doing. \$\endgroup\$ Commented Aug 7, 2015 at 21:35
  • \$\begingroup\$ "Connection interval" is one of the standard Bluetooth LE parameters. It quantifies how "frequently" (actually, the reciprocal of how frequently) two devices transmit packets. See devzone.nordicsemi.com/question/60/… . \$\endgroup\$
    – Chris C
    Commented Aug 9, 2015 at 1:32
  • \$\begingroup\$ Okay, I forgot about that. I set that to a min and max value which I shared with the "central". I've never looked twice at that parameter, it hasn't really mattered for me because I've only given data when "central" asked for it (UI) or when it became available on the "peripheral" end. \$\endgroup\$ Commented Aug 10, 2015 at 16:10

1 Answer 1

3
\$\begingroup\$

Can I assume that the connection interval is 120 ms?

No, the connection interval is 30 ms, but the device generates data in 120ms steps. You will see a Handle value notification only if there is new data.

Is it common for 6 packets to be transmitted in such quick succession like this?

Look closer: It is 4 packets in rapid succession following by 2 more in the next interval. This is quite normal for BT LE connections. For example, Nordic semi NRF51 can transfer up to 6 packets in one connection interval (peripherial mode).

\$\endgroup\$
3
  • \$\begingroup\$ Thanks. I missed the fact that the fifth packet started after 30 ms had gone by. But it looks like no data comes in at the 60 ms and 90 ms points. Is this because there is a slave latency? \$\endgroup\$
    – Chris C
    Commented Aug 9, 2015 at 1:26
  • \$\begingroup\$ No, that is because the slave has no new data (generated or processed yet) at this point. \$\endgroup\$
    – Turbo J
    Commented Aug 9, 2015 at 3:32
  • \$\begingroup\$ Thanks for your help. Is there link-layer data being transmitted during connection intervals at 60 ms and 90 ms that I cannot see in my packet screenshot? I would think that something must be transmitted because the connection interval dictates that communication occurs every 30 ms, and slave latency 0 means that the slave isn't allowed to skip any connection intervals. \$\endgroup\$
    – Chris C
    Commented Aug 10, 2015 at 12:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.