Discovery count from single advertising channel

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
hachc_2137126
Level 5
Level 5
10 likes given 5 likes given First like received

Hi,

  According to the Bluetooth specification, limiting controller to advertise via specific channel, i.e. channel #37 only, means to disable 2 (#38, #39) out of 3 in one advertising event. This won't change the count of event in a period of time.

  So, I expect to have following evidence from my experiment:

  1. Advertising interval 83 ms (a.k.a 12 adv. event / per seconds)

  2. Advertising channel with all (#37, #38, #39) and only #37.

  3. To expect the same count of discovery from scanning of central role.

  But, weird thing that I faced is that I can't get same count of discovery from central device, now I'm using 20737 EVB.

  I only got ~ 4 event when the advertising channel is only at #37 with 100% scanning window.

  I've confirmed that total count of advertising event is the same at all channels which is enabled for advertising.

  Does anyone know the reason for this phenomenon?

0 Likes
1 Solution

hardy.chen, your understanding is correct.  If you limit advertisement channel map the number of advertisement events shall not change, meanwhile there is a bigger chance that one of the advertisement events will not be seen by the peer due to the interference.  Only over the air trace in the RF chamber will show real results.

View solution in original post

22 Replies
hachc_2137126
Level 5
Level 5
10 likes given 5 likes given First like received

Hi,

  Could anyone comment on this?

0 Likes

So you are asking whether or not one should see 12 advertisements when limiting the number of advertising channels to 1, as opposed to 3 by default.

What you are seeing is that when you limit channels, 1 at a time, 4 advertisements within the same period are removed from the total as each channel is eliminated.

I will need to ask one of the developers to respond as I'm not familiar with how the advertising behavior is changed as channels are eliminated.

victorz

0 Likes

hardy.chen, your understanding is correct.  If you limit advertisement channel map the number of advertisement events shall not change, meanwhile there is a bigger chance that one of the advertisement events will not be seen by the peer due to the interference.  Only over the air trace in the RF chamber will show real results.

Hi victorz,

  I've tried to test it in basement (B3), but it still had 1/3 portion ratio between single and all channels while doing advertising. Though it was still having some 2.4G noise from my RF meter, around -85 dbm spreading from 2400 - 2482 MHz. But I was pretty sure that there is no any WiFi or other BLE signals in this basement.

  From the spec (see 4.4.3 of Part B of Volume 6) as below, would you try to elaborate bit more about the design of scanning logic inside 20737?

There are no strict timing or advertising channel index selection rules for scan-ning.

During scanning, the Link Layer listens on an advertising channel index for the duration of the scan window, scanWindow. The scan interval, scanInterval, is defined as the interval between the start of two consecutive scan windows.

The Link Layer should listen for the complete scanWindow every scanInterval as directed by the Host unless there is a scheduling conflict. In each scan win-dow, the Link Layer should scan on a different advertising channel index. The Link Layer shall use all the advertising channel indices.

0 Likes

Unfortunately we can not disclose publicly details on low level functionality within the chip (i.e  Scanning logic). 

0 Likes

Hi mwf_mmfae,


  Okay, I understood.

  But would you comment if the RF interference is the only reason that might impact the count out from scanning/discovery?

  If possible we might need to enter a shielding room for proving it.

0 Likes
Anonymous
Not applicable

Can you try different advertising channels and see if the behavior changes?

Only #38 and only #39

Ideally RF chamber is the best, but if there is interference you wouldn't lose 100% of the other slots

Hi nsankar,

  I did. But it behaves the same no matter which channel is chosen.

0 Likes
Anonymous
Not applicable

So if you disable two channels you only get 4 events v/s 12 no matter which two you disable - correct?

0 Likes

Yes. only 1/3 of events is discovered when advertising at only one channel, no matter which one is selected.

0 Likes

Hi nsankar,


  Is there any update from your side?

0 Likes

Please check Bluetooth Core 4.1 Vol 6, section 4.4.3.  While in scanning state every scan window controller opens the receiver for the interval duration and listens on 1 channel.  For example if scan window is 1 second and interval is 10msec, the scanner listens for 10 msec on channel 37 and goes to sleep.  In 990 msecs scanner wakes up and listens on channel 38 for 10 msec.  In 990 msecs it wakes up and listens on channel 39.  Considering that there is no interference if your application is monitoring performing scan for 3 seconds and advertiser uses channels 37, 38 and 39 the application will receive 3 advertisement reports.  If advertiser uses channels 38 and 39 the scanner will receive 2 reports over 3 seconds.  I advertiser uses only 1 channel, the application will receive 1 event over 3 seconds of scanning. 


Hi victorz

  Thanks for your care on this topic. But I don't have same understanding as you from specification.

  According to the statement of section 4.4.3, the link layer should scan on different advertising channel index in each scanning window and shall use all advertising channel indices, which means that the we should have same count of advertising event no matter how many channel is used for advertising.

  Correct me, if you have different understanding from this specification.


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 advertising channel indices. There are two types of scanning, determined by the Host: passive and active.

There are no strict timing or advertising channel index selection rules for scanning.

During scanning, the Link Layer listens on an advertising channel index for the duration of the scan window, scanWindow. The scan interval, scanInterval, is defined as the interval between the start of two consecutive scan windows.

The Link Layer should listen for the complete scanWindow every scanInterval as directed by the Host unless there is a scheduling conflict. In each scan window, the Link Layer should scan on a different advertising channel index. The Link Layer shall use all the advertising channel indices.

0 Likes

I am really sorry that your understanding does not much mine.  "the Link Layer listens on an advertising channel index for the duration of the scan window" cannot be interpreted that Link Layer should listen on 3 indexes every scan window.  That means that if advertiser uses 1 channel the scanner will see 1 advertisement every 3 intervals.  If you want to advertise on one channel and want to receive the same results you will need to decrease interval 3 times. 

0 Likes

Hi Victorz,

  Did you check this statement?

The Link Layer should listen for the complete scanWindow every scanInterval as directed by the Host unless there is a scheduling conflict. In each scan window, the Link Layer should scan on a different advertising channel index. The Link Layer shall use all the advertising channel indices.

0 Likes

Absolutely. “The scan interval, scanInterval, is defined as the interval between the start of two consecutive scan windows.”. Each window controller will listen on different channel.

0 Likes

Hi Victorz,

  Great thanks for your kindly explanation. I finally realized this part from specification.

  BTW, is there any way to force controller (20737) to listen to ONE advertising index?

0 Likes

This would be a violation of the spec, right?

0 Likes

Yes, it did violate the spec. But it will help a lot on our application for simplify the variation of RSSI reading from scanning.

Or is there any way to know which channel index is used when advertising call back is called?

0 Likes

Sorry Hardy. This is outside of the current chip functionality. If you can specify what your product needs to do, we might recommend some spec compliant solution.

0 Likes

Hi Victorz,

  We're trying to improve the accuracy of range calculation from RSSI. And also we would like to keep the same power saving ability while also retain the latency as we wished.

  So, if we need to get same level of latency between single/multiple channel for advertising, then what we can do is to have channel information for our calculation at back-end.

0 Likes
hachc_2137126
Level 5
Level 5
10 likes given 5 likes given First like received

Hi,

  Is there any update from anyone?

0 Likes