This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Frequency hopping with S132 v3

Hello! I'd like to know if S132 v3 implements the frequency hopping scheme defined by BLE.

I've read some documentation on Gazell, but from what I understood, that is a completely different protocol, not a superset of BLE. I require BLE communication, so If my understanding is correct, Gazell is not an option.

  • Of course it does implement frequency hopping. You don't have to think about such a low layers - this (among other features) is what softdevice is written for. You can however control which channels are used for advertisements.

    Yes, Gazell is something completely different.

  • Yes, Nordic's "Soft Device" implements so-called BLE stack which manages all lower layers including LL with channel hopping during connection. Note that you don't need to go with Nordic's stack, you can seek some Open Source projects such as Zephyr or Mynewt if you want... however developing your custom stack seems like pretty wasting of energy unless you are sure what and why.

  • @wojtek I'm asking this because the behavior I'm seeing does not match what I expected to happen when frequency hopping is used. I may have the wrong idea though. I have two BLE devices and a strong Wi-Fi signal that overlaps some the of the BLE channels. What I observe is that sometimes I get huge interference from the Wi-Fi signal. This expected when the channels are overlapped. However, I expected the hopping to solve this issue by moving the BLE connection to a different channel, and that doesn't seem to be happening.

  • Well frequency hopping is kind of "dumb" property of BLE link layer on up to 37 channels used for PDU exchange during connection. You have right to exclude some channels if you suspect some interference there but this is not done automatically. Moreover embedded chips such as nRF5x don't have any specific indication of noisy channels so you can only try to observe and then use channel map functions of stack (SD) API... so you see initial channel map and hopping pattern in CONNECT_REQ (from GAP Central = master) and then only channel map can change. In the worst case you leave all 37 channels and during hopping patter some packets will drop but that's nothing serious until this will happen systematically on most of the channels for longer time. More about BLE frequency hopping (and BLE overall) here (slides 65-70 and 126-145).

  • @AmiguelS : S132 is a qualified BLE stack, of course it use the hopping channel algorithm defined by BLE spec.

    We were part of the group who made BLE so actually there are many features in Gazell were brought into BLE, channel hopping was one of them. But channel hopping on Gazell is little simpler compare to BLE legacy channel hopping (the channel hopping was upgraded from BLE v5.0 )

    You can find the channel hopping algorithm in the document pointed by Endnode. Basically each channel is only used for one single connection event. Next connection event we use the next channel, and continue like that. There is no measurement of failure rate on a channel to black list it in our stack.

Related