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

Section not applicable to the SDK Example which only provides one configuration using the SPI bus.

The most common configurations are included in the IDE project files. These build configurations can for instance select the bus interface (SPI / SDIO) to use to communicate with the WF(M)200 chip or enable the Low Power feature.

SPI Configuration

With this configuration, the host uses the SPI bus to communicate with the Wi-Fi solution. Remember to put the bus switch of the WF200 Expansion Board accordingly.

SDIO Configuration

With this configuration, the host uses the SDIO bus to communicate with the Wi-Fi solution. Remember to put the bus switch of the WF200 Expansion Board accordingly.

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 document 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 EFM32 MCU Starter Kit 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 WF200 Expansion Board is inserted tightly into the 20-pin expansion header of the EFM32 GG11 Starter Kit, as described in section Setup your Kit. Make sure that all the switches are 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 WF200 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 WF200 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 WF200 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 WF200 has a valid IP address, use ping to verify network connectivity. Ping your WF200 from another station or from your Wi-Fi router.

Check Wireless-Specific Issues

If your WF200 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 WF200 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 WF200 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 WF200 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.