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.
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.
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.
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.
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.
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.
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:
- For PCs, install iPerf on your machine. Once installed, call the command below:
iperf -c 10.10.0.1
You simply need to issue this command as illustrated in the following image:
- For Android smartphones, install Magic iPerf using the Google Play Store. Open the application and enter the command above without the 'iperf'. Make sure [iPerf2] is selected. You can start the test by using the [Stopped] switch.
- For IOS smartphones, install HE.NET Network Tools using the Apple Store. Open the application and open the side menu to click on 'iperf'. Make sure 'TCP' is selected. Enter the number of bytes you want to send (e.g., 100 M) and finally enter the IP address in the upper text box (e.g., 10.10.0.1). The iPerf test starts.
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
#define OS_CFG_DBG_EN DEF_ENABLED #define OS_CFG_STAT_TASK_EN DEF_ENABLED #define OS_CFG_TASK_PROFILE_EN DEF_ENABLED
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
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
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_ASSERT_DBG_ARG_CHK_EXT_MASK RTOS_CFG_MODULE_NONE #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
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.