How to test in production ?
This document is intended to guide the Device Maker's during Sigfox Device production tests with following features :
- No specific Sigfox equipement required.
- Fast and simple tests : device tests less than 15seconds.
- No need to register any device on SIGFOX backend.
General concerns :
- Module manufacturing tests
- Conducted tests only
- If TX path is different than RX path : make both
- Use optional Faraday cage to put device inside
- End product
- If no access to antenna connector : add coupler with calibrated radiated loss
- If connector accessible : conducted tests
Production TX RF tests
TX RF test are dedicated to check the output RF level of the device. This will ensure that there is no issue between RF IC and RF output.
Test Setup with Litepoint
Test Setup with standard Equipements
Test Descriptions
Carrier Frequency Calibration
This test is dedicated to calibrate the center operational frequency of the device. Frequency offset must be stored in the device in non volatile memory.
A spectrum analyser can be used for this measurement
This test can be executed with the AT command if the modem contains these commands or with the Sigfox Library API
AT$CW : This command activates the continuous mode at a specified frequency.
Description | Device ( with AT cmd ) in continuous wave | Device ( with Sigfox Lib API ) in modulated wave | Spectrum Analyzer |
---|---|---|---|
Activate the RF output | AT$CW=Tx_frequency ,1 | SIGFOX_API_open(RCx) SIGFOX_API_test_mode( TX_BPSK, 1 ) SIGFOX_API_close() | Read frequency : offset = frequency_read - frequency_set |
Disable RF output | AT$CW=Tx_frequency ,0 | ||
Update the TX Frequency TX frequency = Tx_frequency + offset | AT$IF= Tx_frequency | Update the TX calibration offset | |
Activate the RF output | AT$CW=Tx_frequency ,1 | SIGFOX_API_open(RCx ) SIGFOX_API_test_mode( TX_BPSK, 1 ) SIGFOX_API_close() | Read frequency : offset must be 0 |
Disable RF output | AT$CW=Tx_frequency ,0 |
TX modulated Ouput RF power
A Power meter can be used for this measurement
Description | Device ( with AT cmd ) | Device ( with Sigfox Lib API ) | Spectrum Analyzer |
---|---|---|---|
Send 5 TX pseudo random BPSK frames without pause | AT$TM=0, 133 | SIGFOX_API_open(RCx) SIGFOX_API_test_mode(TX_BPSK, 0x85) SIGFOX_API_close() | Read power: should be 14dBm or 22dBm depending on your Radio Configuration |
Production RX RF tests
Test Setup with Litepoint
Test Setup with standard Equipements
Test Descriptions
RX sensitivity
The aim of this test is to check that your end product is has no issue in the RX path. Demodulation is a 600bps GFSK.
This test takes only few seconds to measure/detect a loss of power in the RX path.
PER (packet Error Rate) is computed with number of packet sent by the generator and received by the device.
Description | Device ( with AT cmd ) | Device ( with Sigfox Lib API ) | 600bps GFSK Signal Generator |
---|---|---|---|
Enter in RX mode during 30 seconds | AT$IF=RX_frequency AT$TM=3,30 | SIGFOX_API_open(RCx) SIGFOX_API_test_mode(RX_GFSK,30) [ Ensure theMANUF_API_report_test_result(res), implements a display of the res parameter ] * | |
Send frames with the Signal Generator | Loop on 10 TX Send GFSK frame AAAAB2271F2041843268C5BA53AE79E7F6DD9B at RX_frequency at level -120dBm | ||
Get the RX level of the received frames | Displayed on the AT console +RX= RSSI=-120 | SIGFOX_API_close() | End Loop |
*if not available, you can also 'display' the result on Radio link following the pseudo code for the MANUF_API_report_result function :
MANUF_API_report_result(result)
Begin
Config Radio in CW
if (result == TRUE)
CW_frequency = TX_frequency - 30KHz
if (result == FALSE)
CW_frequency = TX_frequency +30KHz
End
In this configuration, you have to plug in parallel the Signal Generator and a Spectrum Analyzer
If you need to report the test result with a connected link like the UART : follow the pseudo code for the MANUF_API_report_test() function :
MANUF_API_report_result(result)
Begin
Config UART
if (result == TRUE)
print_uart(“TRUE”)
if (result == FALSE)
print_uart(“FALSE”)
End
If you need to report the test result with a visual way : follow the pseudo code for the MANUF_API_report_test() function :
MANUF_API_report_result(result)
Begin
Config UART
if (result == TRUE)
LED = TRUE
if (result == FALSE)
LED = FALSE
End
RX RSSI Calibration
The aim of this test is to program the RSSI level value offset to allow device to give a calibrated RX RSSI level value.
Signal Generator is connected to the device and must send GFSK frame at Sentivity Level + 10dBm ( Level1)and Sensitivity Level + 30dBm.( Level2)
According the device RSSI level, program the offset in the device non volatile memory.
Description | Device ( with AT cmd ) | Device ( with Sigfox Lib API ) | 600bps GFSK Signal Generator |
---|---|---|---|
Enter in RX mode during 5 seconds | AT$TM=3,5 | SIGFOX_API_open(RCx) SIGFOX_API_test_mode(RX_GFSK, 5 ) [ Ensure theMANUF_API_report_test_result(res), implements a display of the res parameter with the RSSI] * | |
Send frames with the Signal Generator | Send GFSK frame AAAAB2271F2041843268C5BA53AE79E7F6DD9B at RX_frequency at level Level1 dBm | ||
Get the RX level of the received frames | Displayed on the AT console +RX= RSSI=xx dBm ( compare it to the level of the frame sent with the Signal Generator ) => Program the RX offset ( see module maker's datasheet) | SIGFOX_API_close() rssi_device = MANUF_API_get_rssi() rssi_offset = rssi_device - Level1 | End Loop |
Execute the whole test again with Level2 to check the level of the RSSI |
*If you need to report the test result with a connected link like UART : follow the pseudo code for the MANUF_API_report_test() function :
MANUF_API_report_result(result)
Begin
Config UART
if (result == TRUE)
print_uart(“TRUE : rssi=%d ”,MANUF_API_get_rssi())
if (result == FALSE)
print_uart(“FALSE”)
End
Get ID/PAC from modem with UART
During production, if you need to get ID and PAC from product, you can use the following UART link if available.
Description | Device ( with AT cmd ) | Device ( with Sigfox Lib API ) | 600bps GFSK Signal Generator |
---|---|---|---|
Get ID and PAC of the device | AT$ID? AT$PAC? Or any command provided by the modem manufacturer. See modem datasheet. | SIGFOX_API_open(RCx) SIGFOX_API_get_device_id(&id) SIGFOX_API_get_initial_pac(&pac) |
Get ID/PAC from modem with RF
In production , if you have access to test mode though UART on your device under test, you can use the following setup :
Device 1 | Device 2 |
---|---|
| |
| |
|
Example :ONSemi RF IC : you can use local loop mode
Device 1 | Device 2 |
---|---|
AT$RL : listening the local loop | |
AT$I=10 12345678 AT$I=11 1122334455667788 Get the result of these 2 AT commands and put them into a frame buffer AT$SL=123456781122334455667788 ( default frame is 0x84,0x32,0x68,0xC5,0xBA,0x53,0xAE,0x79,0xE7,0xF6, 0xDD, 0x9B.) | |
Should receive : 123456781122334455667788 |
Example : using a built in test mode when starting at the first time
If your device has no physical interface like UART or I/O, you can code as following :
Device 1 | Device 2 |
---|---|
Configure device in RX GFSK 600bps Start RX | |
If (First_startup_flag = FALSE )
else
| |
Receive packet from device 1 and decode ID/PAC |
Send a modulated signal with PN values
Description | Device ( with AT cmd ) | Device ( with Sigfox Lib API ) |
---|---|---|
Set the TX frequency | AT$IF=TX_center_frequency_in hertz | |
Send modulation number is a 8bit length value where bit[0-6] is the number of PN frames to send. Bit[7] indicated if pause is done or not between each PN frames sending | AT$TM=0,number | SIGFOX_API_open(RCx) SIGFOX_API_test_mode(TX_BPSK,number) SIGFOX_API_close() |