• Each advertisement is send on 3 channels with up to 10 ms between, and receiver doesn't know which one they received.

    theoretically receiver should know which one they received. Because this reception will happen on a particular channel. I am not sure if that low-level info can be available from the device.
    Also I read that a BLE device can be configured to advertise on particular channels only. For example, you can advertise on 37 if (second % 3) == 0, on 38 it is 1 and on 39 if it is 2. So it will cover all channels and have no inter-channel delay. I hope. The price is - overall latency of receiving time can be up to 3 sec. But this time will be more precise.

    I will try the hack with SoftDevice >=6.1 with updating timestamp in scan response static buffer on the fly

    this is promising approach. I think a checksum needs to be sent as well, because there can be a risk of sending partially updated buffer.

  • BLE device can be configured to advertise on particular channels only

    Yes, I read that also, but the Rust library I'm using doesn't seem to support that. (BlueR - official BlueZ library)

  • Yes, I read that also, but the Rust library I'm using doesn't seem to support that. (BlueR - official BlueZ library

    with the HCI way there is 0x0006 LE Set Advertising Parameters Command with Advertising_Channel_Map parameter with 3 bit array for channels 37,38,39

About

Avatar for malaire @malaire started