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
iPerf
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.
Probe
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
#define OS_CFG_STAT_TASK_EN DEF_ENABLED
#define OS_CFG_TASK_PROFILE_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_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
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.
Troubleshooting
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.