BLE radio testing (TX continuous modulated)

We are preparing for all of our radio compliance testing. Our board is inspired from the nrf9160dk design using the nrf9160 chip as the main controller and an nrf52840 flashed with hci_lpuart to function as the BLE passthrough controller.

For our testing we need to be able to put the unit into the following modes:

  • Receive Mode (RX)
  • Transmit Mode (TX continuous, modulated)
    • 3 channels (2402MHz, 2440MHz, 2480MHz)
    • Various data rates 125kbps, 500 kbps, 1Mbps, 2Mbps

I would like to support these tests from the nrf9160 firmware. I have no problem coding the ways to interact and set the different test modes. I am just unsure how instruct the nrf52840 BLE chip to run these settings.

I found the "radio_test" sample but from what I can tell it would take some serious modifications to make that work from the nrf9160 firmware.

I'm thinking this is achievable with "CONFIG_BT_EXT_ADV=y" and using the extended BLE capabilities. This would allow me to specify the channel/tx_power/etc... I'm not clear how to start a modulated transmission though. Are there any resources or pointers that could help with this? Am I on the right path going down the ext adv route?

Thanks.

  • Hi,

    I tested the configuration I shared yesterday so that shoudl work. Can you revert your changes and use the radio test example with only the changes I suggested there?

    Also, if you use RTT Viewer note that the cursor must be in the input field in order to input data. That is highlighted with red here:

  • Thank you!

    I think I just needed  fresh day. I deleted everything (for the 15th time), started from scratch, and grabbed a different J-link probe. Built the project and now it works with the shell over RTT.


    Full steps to reproduce it:
    Copied the sample project from: "nrf/samples/peripheral/radio_test"

    Added this to the default proj.conf

    CONFIG_USE_SEGGER_RTT=y
    CONFIG_SHELL_BACKEND_RTT=y

    Created new file "boards/myboard.overlay" with the following contents:

    / {
    	chosen {
    		zephyr,shell = &rtt0;
    		zephyr,console = &rtt0;
    	};
    
    	rtt0: rtt_chan0 {
    		compatible = "segger,rtt-uart";
    		status = "okay";
    	};
    };

    • Build (My board is nrf9160dk_nrf52840), added proj.conf and boards/myboard.overlay
    • Flash
    • Open J-Link RTT Viewer (v7.96f)
    • Connect via SWD 4000khz target (NRF52840_XAA)
    • Then you see the shell log printed to the console and can send cli commands to the console.
Related