BLE range testing with two nRF5340 DKs: example code for PHY and TX power variation?

Hi everyone,

I'm currently working on a BLE project using two nRF5340 DKs and would like to perform range tests to evaluate the maximum connection distance under different conditions.

My main objectives are:

  • Test BLE connection range using different PHYs (1M, 2M, Coded S=2, Coded S=8).

  • Be able to change the TX power (e.g., from -20 dBm to +3 dBm).

  • If possible, display real-time RSSI and bitrate or throughput from the central device during the connection.

I've tried doing this with different examples from the SDK (such as central_uart / peripheral_uart and hci_rpmsg / hci_pwr_ctrl), but I haven't been able to achieve the setup I need.

If anyone has any example code that does something similar or any tips or suggestions on how to approach this properly,

I would really appreciate the help!

Thanks in advance!

Parents Reply Children
  • Hi SwRa, thanks a lot for your answer!

    I had already checked the throughput sample and related DevZone posts, and they’ve been helpful. However, I believe that most of these examples assume an active BLE connection between the devices.

    What I’m actually looking for is something more like this blog post:
    devzone.nordicsemi.com/.../testing-long-range-coded-phy-with-nordic-solution-it-simply-works-922075585
    In that example, they seem to be testing range with advertising and scanning only, not requiring a full connection.

    My goal is to test and compare the actual coverage distance of all 4 PHYs (1M, 2M, Coded S=2, Coded S=8) using two nRF5340 DK boards. Ideally, I'd like to: Broadcast advertising packets using the selected PHY, measure if and when those packets are received on the other board (scanner), along with RSSI, possibly change TX power (e.g., from -20 dBm to +3 dBm), repeat for all PHYs and log the results for distance comparison...

    Do you know if there’s an example in the nRF Connect SDK for this kind of non-connected, range testing setup using advertising + scanning? Or any guidance on how to modify existing samples (like peripheral_hr and central_hr) to avoid connections but still change PHY and TX power?

    Thanks again for your support!

    Best regards,
    Diego

  • Also, I’ve been using the throughput example you mentioned, and I actually added some logic to print the RSSI in real time and detect disconnections. It works fine most of the time, though once the connection is lost, the RSSI isn't updated anymore — which is expected, and not a big issue for now.

    The main problem I’m facing is that the connection drops very quickly, even when I'm using Coded PHY S=8. In fact, when I move the boards just around 10 meters apart, they already disconnect, which I didn’t expect given that S=8 should provide a much longer range.

    I'm not sure if I'm missing something — maybe a TX power setting, or antenna placement, or something else in the project configuration?

    Any ideas or advice would be very appreciated.

Related