The Project board is for sharing projects based on Silicon Labs' component with other community members. View Projects Guidelines ›

This project describes an easy way to evaluate the link budget of the Wireless Gecko EFR32 devices using Silicon Labs’ Radio Abstraction Interface Layer (RAIL) to perform a range test between two nodes.

Range Test is a standalone test application that creates a radio link between two evaluation kits and sends predefined amount of packets from the transmitter side to the receiver. The range test demo implements packet error rate (PER) measurement. PER is a commonly-used technique for measuring the quality of RF links in wireless systems under particular conditions.

First, Simplicity Studio has to be run. Once the required software is installed, the EFR32 development kit can be connected to the PC using a mini-USB cable. This should be done before running the RAIL test. Make sure the 3-way power switch in the bottom left is set to AEM. If you want to connect to your WSTK over Ethernet, you should also plug in an Ethernet cable at this time. The IP address will be printed to the LCD screen during startup of the WSTK but may be lost when the app starts. To see this again, reboot the WSTK and press the reset button for several seconds to prevent the EFR32 from loading its application.


range test-1.png

Fig:  EFR32FG Radio Board with Main Board

The steps included in this stage are a selection of the Range Test application, generating and building the application, loading the binary onto your device/flash programming. 

Second, some basics of the Range Test application must be noted. Range Test creates a radio link between two evaluation kits and sends predefined amount of packets from the transmitter side to the
receiver. The application can be configured through the on-screen menu system of the board and does not require a PC connection. The receiver calculates packet error rate (PER). It also displays the current RSSI level in dBm units and draws a chart of the RSSI historical data. For long tests, the transmitter can be set up to transmit continuously. It is not necessary to start both sides synchronously.

Next, the menu system can be examined. After starting the demo, the first screen is the Welcome Screen, which shows Silicon Labs logo, the carrier frequency and the RF power level. This is followed by a menu which allows the user to see important information about the settings and change them. All the RF settings of the radio, as data rate, modulation, frequency settings and output power are listed in the menu.

range test-2.png

Fig 1: Radio Board Welcome Screen


Fig 2: RF Configuration Menu

Finally, the range test can be performed. This test can be performed inside a building if indoor propagation is tested. The steps are as follows:

  1. Connect the radio boards to the two WSTK base boards.
  2. Connect the two WSTK base boards to the Simplicity Studio, select the [Range Test Sample Application] project and configure your custom settings on the [Radio Configuration → Profile Options] tab. Build your project and flash your device.
  3. In case the UART communication is not used, unplug the devices from the PC, put batteries into the WSTKs and switch them on
  4. Configure the devices: one to be in RX and the other to be in TX mode. The range test is performed as a one-way radio communication. Transmission can be initiated by selecting [TX] and [RX] in the [MODE] menu item.
  5. Configure the range test through the menu items, and start Start Range Test on both of the devices. It is important to set the self- and remote-IDs of the participants correctly

Fig 3: TX mode

6. The test needs to be started at the transmit side by pressing [START].

7. Confirm that the transmitter sends packets and the receiver answers

8. If PER<1%, reset the PER on the boards and try to walk further in the area. Propagation conditions usually improve if the user distances himself from a possibly faded area.

Fig 4: RX mode


  • It is advised to perform the test outside the building, line-of-sight, to get the best possible range result, as well as the best comparable results to different settings.
  • It is also recommended that the antennas be located at least 1.5 m above the ground.
  • If you are going to use the WSTK as a mobile device to run the range test, it is recommended to connect an external AA battery pack or an USB power bank to the WSTK board since the coin cell battery will not have enough power to do long-term testing.



  • Enable UART mode in the onscreen menu
  • Status message can be observed on the UART TX line
  • Serial port can be accessed via USB
  • Status message is formatted in a human readable format 


Materials Used:

  • Two EFR32 development kits (radio boards with mainboards)
  • Mini USB cable
  • AA battery pack 


Source Files:

Demo is available in Simplicity Studio - Software Examples - Silicon Labs Flex SDK Examples - RAIL: Range Test

To read the complete, detailed user guide click here.

  • Wireless
  • Projects
  • A couple questions: how bad is it if I can't put my antennas 1.5m above the ground? Say, more like 5cm?

    Second, can I power the WSTK directly using 18650 batteries? They are 3.7v. Can the onboard voltage regulator handle 3.7? That is what the USB power packs use anyway, except they go through a boost converter to 5v (which you turn around and step down again).
  • Hi mapleleafs,


    I realize your post is a bit old but I figured I'd comment anyhow in case someone chances upon it at a later time.


    Having done some range test stuff myself I can tell you that the height of the antenna can certainly make a difference, performance wise.


    Some of it has to do with the wavelength of the band you're operating on, in this case the 2.4-2.5GHz range of the ISM band.


    The formula for wavelength is:
    λ = c / f



    c = speed of light in vacuum, a constant ~ 300,000,000 meters/sec
    f = frequency = 2.4 gHz
    λ = wavelength in meters

    So the wavelength at 2.4GHz is:
    λ = 0.3 / 2.4GHz = 0.125 meter = 12.5 cm


    It's usually a good idea to keep your antenna at least 1.5X to 2X times the wavelength above ground or your photons are going to do all sorts of silly things.


    1.5 meters is a nice number because it gives a standard baseline of comparison that is easy for most humans to manage (it's about 5 feet) without an antenna mast.


    Some of it also has to do with radiation patterns:



    With sufficient height, you're less likely to be bouncing the strongest part of your "lobes" off of the ground in a way that would interfere with ideal operation.


    For the most part, any obstruction will tend to reduce ideal performance, some more so than others.


    Will your module explode if it's 5cm above the ground?

    Probably not, but it's certainly not ideal and you won't see optimal performance.


    As for your second question, I think I recall that the WSTK uses something like an LP3878 regulator, so I would suspect you should be fine with a single cell Li-ion.

    Just be careful, those 18650s can often source a LOT of current (some up to 40A), so don't short it out!

  • Hi,

    I am using two EFR32FG14 ic in my PCB. In one PCB it is configured as transmitter and in the other it is configured as receiver. I debug using EFR  eval board. I would like to get the RSSI value in dBm for the receiver. When i try to use the function x = getRssi , x(float) gives value -512. 

    1. How to get the RSSI value in dBm?

    Any help will be greatly appreciated



  • Rekha,

    See the RAIL API reference:
    int16_t RAIL_GetRssi (RAIL_Handle_t railHandle, bool wait)
    Returns RAIL_RSSI_INVALID if the receiver is disabled and an RSSI value can't be obtained. Otherwise, return the RSSI in quarter dBm, dbm*4

    So to get it in dBm you need to divide the result by 4. Note that the function returns int16_t, not float. The value depends on the current PHY and the PCB and has part-to-part variation. You need to characterize the RSSI values on your hardware to get accurate results.