Simultaneous BLE Peripheral for mobile phone, BLE Central for 1M PHY and Coded PHY beacons, 1M PHY beacons distance measurement

Hello,

I'm trying to evaluate a FW development for several features of BLE used simultaneously. I need a BLE Peripheral for mobile phone connection (advertise only once during device provisioning), BLE Central for 1M PHY and Coded PHY beacons to scan for them and (which is very important) be able to measure the distance to the 1M PHY beacons using Nordic Distance Toolbox (NDT). I would like to know the limitations of this approach (to design the system accordingly). Is it viable? What could be a good starting point (any examples, tutorials, etc.)

Parents
  • Hello,

    To get started with developing I recommend our dev academy:
    https://academy.nordicsemi.com/

    As to your requirement, the functionality can be performed if they are multiplexed in time. There is only one radio, and the radio can only perform one operation at a time, it will be needed to divide in time. It's possible to scan, then advertise, then in a connection, then scan again etc. The BLE softdevice controller can handle multiple operations, but it will be divided over time. So there will be trade-off you will need to consider as you develop your project. For new development you may consider checking out the nRF54L15 instead, which have a new feature in BLE called channel sounding, that for instance can be used for distance measurements:
    https://docs.nordicsemi.com/bundle/ncs-latest/page/nrfxlib/softdevice_controller/doc/channel_sounding.html 

    Kenneth

  • Kenneth,

    Thank you for you response. Now in my solution I have 1M PHY beacons scan enabled, Coded PHY beacons scan enabled and a peripheral role for GATT data transfer. I would like to understand how the BLE scan time and peripheral role GATT data transfer time scheduler works. I have the next scan settings now:

    struct bt_le_scan_param scan_param = {
    		.type     = BT_LE_SCAN_TYPE_PASSIVE,
    		.options  = BT_LE_SCAN_OPT_CODED,
    		.interval = BT_GAP_SCAN_FAST_INTERVAL,
    		.window   = BT_GAP_SCAN_FAST_WINDOW,
    	};

    I understand how it is related to the time in case the only one PHY is enabled. But how the time is allocated for several PHYs enabled? What time SoftDevice is used for peripheral role when GATT data transfer is active? Any mechanism that I can use to tune 1M and Coded PHYs scan time separately? 

    The issue I' facing now is that I see many Coded PHY adv packets loss.

  • I don't know the interval and window you are using to scan coded phy, but the time on air is 8x with coded phy, which means an advertisement packet takes up to 3ms, if it also support scan request, you need to double that. Also, due to the time on-air, the risk of collision and interference is much higher, so I am not surprised if the number of received packets are much less with coded phy.

    Kenneth

Reply
  • I don't know the interval and window you are using to scan coded phy, but the time on air is 8x with coded phy, which means an advertisement packet takes up to 3ms, if it also support scan request, you need to double that. Also, due to the time on-air, the risk of collision and interference is much higher, so I am not surprised if the number of received packets are much less with coded phy.

    Kenneth

Children
No Data
Related