2018-01-30 08:41 AM
Hello,
I am currently working with STEVAL-IDB007V1 evaluation board along with BlueNRG GUI, to scan/debug Bluetooth device.
For development purposes, I have advertisement packet broadcasting on a single channel only (Ch37).
Is there a way to adjust the scanner to listen only on a single channel? I read on Bluetooth documents that there is no specific rule on scanning, but I would like to check on interval of advertisement packet right now.
Thank you for looking into my question!
#channel #bluetooth-le #steval-idb007v1 #scanningSolved! Go to Solution.
2018-01-31 09:29 PM
Hi KC,
Actually, the spec says that
the Link Layer shall use all the primary advertising channel indices.
The followed is from Bluetooth core spec, Vol 6, Part B, 4.4.3
4.4.3 Scanning State
The Link Layer shall enter the Scanning State when directed by the Host.When scanning, the Link Layer shall listen on the primary advertising channel.There are two types of scanning, determined by the Host: passive and active.There are no strict timing or advertising channel index selection rules forscanning.During scanning, the Link Layer listens on a primary advertising channel indexfor the duration of the scan window, scanWindow. The scan interval,scanInterval, is defined as the interval between the start of two consecutivescan windows.The Link Layer should listen for the complete scanWindow every scanIntervalas directed by the Host unless there is a scheduling conflict. In each scanwindow, the Link Layer should scan on a different primary advertising channelindex. The Link Layer shall use all the primary advertising channel indices.Thank you.
Regards,
Winfred
2018-01-31 06:55 AM
Hi,
According to the standard, you can select the channel map when you start advertising, but there is no such primitive for scanning.
In our implementation, we followed the primitives as specified by the Bluetooth SIG, so the BlueNRG-1 stack will scan on all of the three advertising channels (37, 38, 39).
Unfortunately, these primitives are asymmetrical and don't enable the use case that you have described. For the time being, there is no way to specify a single channel for scanning.
Best regards,
Antonio
2018-01-31 09:29 PM
Hi KC,
Actually, the spec says that
the Link Layer shall use all the primary advertising channel indices.
The followed is from Bluetooth core spec, Vol 6, Part B, 4.4.3
4.4.3 Scanning State
The Link Layer shall enter the Scanning State when directed by the Host.When scanning, the Link Layer shall listen on the primary advertising channel.There are two types of scanning, determined by the Host: passive and active.There are no strict timing or advertising channel index selection rules forscanning.During scanning, the Link Layer listens on a primary advertising channel indexfor the duration of the scan window, scanWindow. The scan interval,scanInterval, is defined as the interval between the start of two consecutivescan windows.The Link Layer should listen for the complete scanWindow every scanIntervalas directed by the Host unless there is a scheduling conflict. In each scanwindow, the Link Layer should scan on a different primary advertising channelindex. The Link Layer shall use all the primary advertising channel indices.Thank you.
Regards,
Winfred
2018-01-31 10:34 PM
If a scanner can scan only single channel,
chances are a scanner will never see an advertiser which only advertises on another channel.
2018-02-01 08:51 AM
Hi Winfred,
thanks for this clarification. In my previous post I was referring to the GAP (Generic Access Profile) and not to the Link Layer. As you correctly pointed out, the Link Layer must be able to scan on a single channel.
Even if supported by the Link Layer, scanning on a single channel is not supported by GAP, though. This means that users can't specify the channel when using the ACI_GAP_START_OBSERVATION_PROC and ACI_GAP_START_GENERAL_DISCOVER_PROC command.
As you already mentioned, scanning on a single channel poses the risk to miss advertisements on the other two channels. That's why it's safer to let the GAP handle all of the three advertising channels automatically.
Best regards,
Antonio
2018-02-01 08:51 PM
Hi Antonio,
Indeed. Link layer keeps the data flow and
in BLE it provides interfaces for upper layer's usage but not for application directly.
As you mentioned, the idea is also shown in ST ACI commands.
Thank you so much for making it more clear.
Best Regards,
Winfred
2018-02-06 11:24 AM
Thank you for clear answer + discussion!