Further Steps

Wi-Fi Commissioning Logs

The image below illustrates the debug messages displayed in the serial console during a Wi-Fi commissioning process.

Change the Default Settings

Use the UART Command Line Interface

If you want to change the default settings used by the demonstration, a first solution is to press Enter within the 5 seconds after the microcontroller boot to start the UART command line interface. You can either select to start as a SoftAP or as a station. You are then prompted to provide the required information.

Recompile the Project

You can change the default settings by recompiling the project. Go to the demo_config.h file and change the settings to suit your needs. Use your preferred IDE to recompile the project and flash your board.

Build Configurations

The most common configurations are included in the IDE project files. These build configurations can for instance enable the Low Power feature.

Low-Power Configuration

With this configuration, the demonstration allows the host to put the Wi-Fi solution in power save mode and put the host itself in deep sleep. Note that this feature is enabled in station mode only. It is automatically disabled when the SoftAP interface is started.

To test the Low Power Configuration, download the related binary available in the project or select the configuration in Simplicity Studio, rebuild the project and flash your product. Once done, make sure the application only starts in station mode (using the UART CLI for example).

You can refer to the AN1219: Power Consumption Measurement Setup and Results on WF(M)200 document to perform measurements on the WF(M)200.

Optimization Considerations

This section describes steps to increase the throughput while keeping a minimum footprint necessary for your application. The first portion of this section describes the recommended tools. The second portion describes the firmware changes necessary to tweak the performance.

Optimization Tools


This example starts a TCP Server for iPerf testing by default. When enabled, the TCP Server for iPerf will be listening for incoming connections at any time. The method to start an iPerf test is dependent on the platform you are using to run the iPerf client:

iperf -c

You simply need to issue this command as illustrated in the following image:


This project comes with Micrium OS run-time statistics disabled. To enable them, open the file os_cfg.h in the /cfg folder and set the following macros to DEF_ENABLED:

#define OS_CFG_DBG_EN             DEF_ENABLED


Optimization Settings

Compiler Optimization

Open the Project’s Compiler Settings and set the Compiler Optimization level to: [Optimize More (-O2)] as shown in the following image:

Number of Buffers Configuration

Open the file lwipopts.h and change the number of buffers according to your application’s runtime behavior, as illustrated in the following code listing:

#define  PBUF_POOL_SIZE          10

Heap Configuration

After modifying the buffers and sockets configuration, the size of the Heap needs to be adjusted accordingly. To do so, first open the file common_cfg.h and configure the Heap to a large value to ensure the application can run:

#define  LIB_MEM_CFG_HEAP_SIZE  (200*1024)

Rebuild the Project, run the Embedded Application, issue the command mem_info from the serial console to obtain the actual heap usage and finally readjust the size of the heap in the file common_cfg.h

Debugging Configuration

Open the configuration file rtos_cfg.h and disable the API argument check assertions and error logging by setting the following options:


#define  RTOS_CFG_LOG_EN                                 DEF_DISABLED

Open the configuration file rtos_err_cfg.h and disable the error code extended debugging information by setting the following options:

#define  RTOS_ERR_CFG_EXT_EN                             DEF_DISABLED

#define  RTOS_ERR_CFG_STR_EN                             DEF_DISABLED

Runtime Statistics

Open the configuration file os_cfg.h and disable the kernel runtime statistics as follows:

#define  OS_CFG_STAT_TASK EN                             DEF_DISABLED

#define  OS_CFG_TASK_PROFILE_EN                          DEF_DISABLED

For more information about other compile time settings that you may be able to modify to optimize for size or speed, see the following documentation: https://lwip.fandom.com/wiki/Maximizing_throughput.

Wi-Fi FMAC Driver Documentation

For your own application development or for more information about the Wi-Fi FMAC Driver, please refer to the documentation.


Connecting the WGM160P Wi-Fi Module Radio Board to your Wireless Network is a complex process. If any of the steps in the process is not done correctly, failure can occur. This section describes a few basic steps you can take to troubleshoot this demo.

Check the Debugging Messages from a Serial Terminal

Open a serial terminal as described in the third step of the section Start the Example.

Check the Hardware Connections

Check the boards connection to ensure that the WGM160P Wi-Fi Module Radio Board is inserted tightly into the Silicon Labs Wireless STK baseboard and make sure that the power source switche of the Silicon Labs Wireless STK baseboard is in the correct position, as described in section Setup your Kit.

Verify Wi-Fi Access Point Settings

Use your Wi-Fi router’s (i.e., AP) administrative GUI to verify network settings for the wireless network Service Set Identifier (SSID) to which your WGM160P Wi-Fi Module is trying to connect. Locate the SSID that you are troubleshooting. On a basic Wi-Fi router, there may be just one SSID, or one for each radio band (2.4 GHz and 5 GHz). Identify the IP subnet assigned to that SSID. Upon successful connection, your WGM160P Wi-Fi Module should receive a local IP address from this subnet. Identify the Wi-Fi router’s local IP address that should be reachable through this subnet. Check your Wi-Fi router's events log or status GUI to verify that an IP address from this subnet is assigned to your WGM160P Wi-Fi Module when it connects. After you have all the above information, ensure that it matches the settings in your embedded application, as described in the section Change the Default Settings.

Verify Network Connection with Ping

After your WGM160P Wi-Fi Module has a valid IP address, use ping to verify network connectivity. Ping your WGM160P Wi-Fi Module from another station or from your Wi-Fi router.

Check Wireless-Specific Issues

If your WGM160P Wi-Fi Module still can't connect, get a valid IP address or ping your Wi-Fi router. Then, it's time to consider wireless-specific problems. The Wi-Fi AP or router and WGM160P Wi-Fi Module must use compatible 802.11 standards and the same network name (SSID). Use your AP or router's admin GUI to view WLAN settings and compare them to your embedded application's wireless connection parameters. Run the scan command in the Serial Console and verify that your Wi-Fi AP or Router is displayed in the list. If your SSID does not appear in the WF200's Available Networks list, enable SSID broadcasts on your AP or router. Be sure to match the SSID exactly, including capitalization.

Look for a Security Mismatch

If your WGM160P Wi-Fi Module and Wi-Fi AP or router can hear each other but still cannot connect or exchange traffic, look for a security mismatch.

Configure the Wi-Fi AP or Router to one of the security modes the WF200 supports: Open, WEP, WPA or WPA2. Compare your Wi-Fi AP or router's WLAN security settings to your embedded application's Wi-Fi connection properties to match them, as described in the section Change the Default Settings.

Check Intermittent Network Connectivity Issues

Finally, if your WGM160P Wi-Fi Module connects and pings successfully, but encounters intermittent network connectivity problems (e.g., some pings work, some fail), you may be experiencing poor signal strength, RF interference, or if the demo has been modified, a software-related problem.

If the demo has been modified, such as by adding an additional task or modifying task priorities, see the Micrium OS Kernel Troubleshooting Guide at: https://doc.micrium.com/display/OSUM50700/Kernel+Troubleshooting

Otherwise, disconnect your Wi-Fi AP or router from power and wait at least 30 seconds before restoring power.