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

scan BLE ADV in single channel

i use nrf 52832 for scan BLE adv,  sdk 12.3  , 

for reduce the missing scan signal, I use three ble_central BLE to scan,  so i want set one ble_central to scan one fixed single channel,   then three ble_central scan three diiferent fixed single channel,  is it passble?  how to set "\examples\ble_central\ble_app_uart_c" to scan one fixed single channel?

Parents Reply Children
  • Assuming the advertisers are advertising on all three channels, and are doing non connectable advertising, the likelihood of a collision is the same over all channels. i.e. if you have a collision on channel 37, the same advertisers will also collide on channel 38 and 39. So not sure if scanning on all three channels would actually improve the likelihood of receiving an advertisement. It will help in case there are wifi blockers on one of the advertisement channels.

    How many advertisers do you have?

    There is an older observer broadcaster project here. https://github.com/NordicPlayground/nRF51-multi-role-conn-observer-advertiser. It is not an official project, but could help you getting started.

  • About 100 advertiser in a same time. i set their advertise every 1.5s.  we need scan them during 6s.  if use one scaner , sometimes would miss some advertiser ,  so we want use three scaner scan in same time. i think it's would better for every scaner scan in one fixed channel.

  • Yes, having more scanners could improve the probability of receiving an advertisement package from all advertisers within a given time. The way I see it you have two options.

    1. Create a custom scanner, based on the observer code in the previously linked project.

    2. Try to coordinate the scanners. i.e. start scanner 1. Wait until it is done scanning on channel 37, then start scanner 2. wait until scanner 1 finishes scanning on channel 38, then start the 3. scanner. There could be clock drift etc that causes them to scew over time. For signaling you could use ppi and gpiote to toggle gpio's on radio events. it is also possible to read the radio registers from the application to see what channel the scanner is on. But this will be a fairly complex solution.

Related