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

Entering DTM mode to test continuous TX @ fixed frequency for factory testing

Hi

We are trying to get the DTM mode working for the NRF52 2nd BLE for testing BLE TX power and RSSI at the factory.

(1)HW setup is shown

(2Procedure
We have referred to the link below and the example.py scripts. Below are the steps we have followed before we ran the python scripts
(3)BT module was flashed with the DTM firmware “2020_05_08_BLSD_DTM_CT40_V2.hex” along with serial# and MAC addresses.
Please let us know if we are missing any other step/config to put the device into DTM mode as we are reusing the hex files from another project.
What would be the SDK version that must be used for DTM tests in case we don't have the SDK which was originally used to generate the hex files?
(4)We have run the example.py  script on the PC with the DUT com port field updated to COM41.
We did not observe any UART transactions from PC when scripts were run. HW connections for the COM41 port were verified physically by looping TX to RX and it works fine.
(a)Can you please share the example code ( python script ) used in the factory to test constant_carrier-continuous TX power measurement?
(b)What is the value to be updated in ‘'GoldenSerialPortName'’ in the example.py code snippet shared below

Best Regards

Mahesh HM

Parents
  • Hi,

     

    The python script that is supplied with nAN-34 is bluetooth v4.0 only, and written in python 2.7. It is unfortunately not updated in quite some time.

    It requires that you have two kits connected, both programmed with "direct_test_mode" firmware.

    BT module was flashed with the DTM firmware “2020_05_08_BLSD_DTM_CT40_V2.hex” along with serial# and MAC addresses.

     I am not aware of which DTM firmware this is, but you can look at the nRF5 SDK, examples/dtm/direct_test_mode/, for the standalone firmware for the nRF52840 (pca10056 board).

     

    I setup a quick test which sets up the DUT with constant carrier via this script, where it runs for 5 seconds:

    # Copyright (c) 2013 Nordic Semiconductor. All Rights Reserved.
    #
    # The information contained herein is property of Nordic Semiconductor ASA.
    # Terms and conditions of usage are described in detail in NORDIC
    # SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT.
    #
    # Licensees are granted free, non-transferable use of the information. NO
    # WARRANTY of ANY KIND is provided. This heading must NOT be removed from
    # the file.
    
    import dtm
    
    def main():
    	#General setup
    	setup = dict ()
    	setup['TestSerialPortName'] = "COMx"	#DUT (Device Under Test)
    	setup['GoldenSerialPortName'] = "COMy"	#Golden sample
    	setup['Frequency'] = 1					#Frequency the test should be run on
    	setup['Bitpattern'] = dtm.CONSTANT_CARRIER			#The bit pattern used for the test. PRBS9, 11110000 (FOUR_ONE_FOUR_ZERO), 10101010 (ONE_ZERO), CONSTANT_CARRIER
    	setup['Length'] = 20					#Length of the test package
    	setup['Runtime'] = 5000					#How long the Receiver should be receiving. In ms
    	setup['PERLimit'] = 30					#The packet error limit in percent. Default 30
    	
    	#Run tests on a single channel
    	print("Running tests on channel 1")
    	dtmObject = dtm.DTM(setup)
    	try:
    		dtmObject.runTransmitterTest()
    	except dtm.DTMError as error:
    		print(error.errormessage())
    	
    	del dtmObject
    
    if __name__ == '__main__':
        main()
    

     

    This is the current profile of the DUT:

     

    Note that you can also setup your test in nRF connect for desktop -> direct test mode application, and look at the log file to see the raw byte communication going back-and-forth.

     

    You can also look at the radio_test example in nRF5 SDK to evaluate the RF PHY.

     

    Kind regards,

    Håkon

Reply
  • Hi,

     

    The python script that is supplied with nAN-34 is bluetooth v4.0 only, and written in python 2.7. It is unfortunately not updated in quite some time.

    It requires that you have two kits connected, both programmed with "direct_test_mode" firmware.

    BT module was flashed with the DTM firmware “2020_05_08_BLSD_DTM_CT40_V2.hex” along with serial# and MAC addresses.

     I am not aware of which DTM firmware this is, but you can look at the nRF5 SDK, examples/dtm/direct_test_mode/, for the standalone firmware for the nRF52840 (pca10056 board).

     

    I setup a quick test which sets up the DUT with constant carrier via this script, where it runs for 5 seconds:

    # Copyright (c) 2013 Nordic Semiconductor. All Rights Reserved.
    #
    # The information contained herein is property of Nordic Semiconductor ASA.
    # Terms and conditions of usage are described in detail in NORDIC
    # SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT.
    #
    # Licensees are granted free, non-transferable use of the information. NO
    # WARRANTY of ANY KIND is provided. This heading must NOT be removed from
    # the file.
    
    import dtm
    
    def main():
    	#General setup
    	setup = dict ()
    	setup['TestSerialPortName'] = "COMx"	#DUT (Device Under Test)
    	setup['GoldenSerialPortName'] = "COMy"	#Golden sample
    	setup['Frequency'] = 1					#Frequency the test should be run on
    	setup['Bitpattern'] = dtm.CONSTANT_CARRIER			#The bit pattern used for the test. PRBS9, 11110000 (FOUR_ONE_FOUR_ZERO), 10101010 (ONE_ZERO), CONSTANT_CARRIER
    	setup['Length'] = 20					#Length of the test package
    	setup['Runtime'] = 5000					#How long the Receiver should be receiving. In ms
    	setup['PERLimit'] = 30					#The packet error limit in percent. Default 30
    	
    	#Run tests on a single channel
    	print("Running tests on channel 1")
    	dtmObject = dtm.DTM(setup)
    	try:
    		dtmObject.runTransmitterTest()
    	except dtm.DTMError as error:
    		print(error.errormessage())
    	
    	del dtmObject
    
    if __name__ == '__main__':
        main()
    

     

    This is the current profile of the DUT:

     

    Note that you can also setup your test in nRF connect for desktop -> direct test mode application, and look at the log file to see the raw byte communication going back-and-forth.

     

    You can also look at the radio_test example in nRF5 SDK to evaluate the RF PHY.

     

    Kind regards,

    Håkon

Children
No Data
Related