Wireless Products
smxWiFi™
smxWiFi is a robust 802.11 Media Access Control (MAC) stack specifically designed and developed for embedded systems. It supports 802.11ac, 802.11n, and 802.11a/b/g. It is written in C, and can run on any hardware platform. While optimized for SMX®, smxWiFi can be ported to another RTOS or to another hardware platform to support a different Wi-Fi chipset.
An 802.11 network is a wireless local area network (WLAN) that conforms to the 802.11 standards. smxWiFi provides the necessary software to add wireless connectivity to an embedded system.
New: 802.11ac, Dynamic Rate Switching (DRS), and MT7612 driver.
Learn how protocols supported by smxWiFi correspond to the certification programs of Wi-Fi Alliance, such as Wi-Fi Direct™, Wi-Fi Protected Setup™, Wi-Fi Protected Access®, WPA™, and WPA2™.
Layers
- Network Interface Layer Provides the interface to a TCP/IP stack.
- Application Interface Layer Provides the interface to the application to manage the networking connection, retrieve the signal and link quality information, and do a site survey.
- MLME Layer Provides services for the MAC Layer Management Entity, such as scan, authentication,
association, and synchronization.
- Chipset Driver Layer Provides a unique interface for different Wi-Fi MAC and RF chipsets such as the Ralink RT3572.
- Porting Layer Provides service functions related to the hardware, OS, and compiler.
Due to the complexities of the 802.11 protocol, smxWiFi requires a multitasking RTOS environment. It is integrated with SMX® RTOS. A TCP/IP stack is also required, and smxWiFi has been integrated with smxNS. To support USB dongles, a USB host stack is required, such as smxUSBH (strongly recommended).
Features
- Country/Region support
- BSS scanning
- MAC Layer Management Entity (MLME)
- Start connection
- Maintain connection
- Dynamic rate switching (DRS)
- Transmit power adjust
- Radar detection
- Antenna diversity evaluation
For dynamic rate switching, smxWiFi has substantial logic to adjust the transmit rate according to the packet error ratio. This is documented in detail in the manual.
Optional Features
SoftAP provides simple Access Point functionality to allow connection of Wi-Fi devices.
Wi-Fi Peer-to-Peer (P2P) allows easy, direct connection among Wi-Fi devices, anywhere. There is no need for an Access Point. It is a protocol designed to replace the legacy ad-hoc (IBSS) protocol. Improvements over ad-hoc include easier connection and the latest security, 802.11i. As with any Wi-Fi device, the range is up to 200m, making connection convenient even when devices are not in immediate proximity to one another. When used with SoftAP, it allows the device to be the Group Owner, else only a client.
Wi-Fi Simple Configuration simplifies connection to an AP or other device. It is required by P2P.
Types of Security
There are two parameters for security. One is the Authentication Type and the other is the Encryption Algorithm/Protocol.
Authentication Types include:
Open System: There is no special authentication. Any Wi-Fi stations can connect to each other.
Shared Key: An old Authentication type, only used with WEP.
WPA™: Wi-Fi Protected Access®. This is a working standard put together by the Wi-Fi Alliance. It is based on 802.11i draft version.
WPA-PSK: WPA Personal. Based on 802.11i pre-shared key authentication.
WPA-EAP: WPA Enterprise. Uses the authenticated key mode that derives keys from 802.1X.
WPA2™: WPA version 2. It is the same as 802.11i.
WPA2-PSK: Same as WPA-PSK but for WPA version 2 (802.11i)
WPA2-EAP: Same as WPA-EAP but for WPA version 2 (802.11i).
(Wi-Fi Protected Access®, WPA™, and WPA2™ are trademarks for certification programs of Wi-Fi Alliance. The actual protocol is 802.11i, as indicated in the comments above. Click this link for more information.)
Encryption Protocols include:
WEP: Wired Equivalent Privacy. This is the first Wi-Fi encryption algorithm, based on RC4. There are two key lengths, 64-bit and 128-bit. (Obsolete)
TKIP: Temporal Key Integrity Protocol. This encryption protocol is still based on RC4 but some improvements were made, such as adding message integrity check (MIC). (Not recommended.)
AES: Advanced Encryption Standard, also called Counter Mode with CBC-MAC Protocol (CCMP).
When discussing Wi-Fi security, we combine these two components together. For example:
WEP64 means we use shared key authentication and WEP 64-bit encryption.
WEP128 means we use shared key authentication and WEP 128-bit encryption.
WPA-PSK/AES means we use WPA-PSK authentication and AES encryption protocol.
Code Size
Component |
ARM Th2 IAR (KB) |
ARM ARM IAR (KB) |
CF
CW (KB) |
Core Stack 802.11abg |
30.5 |
47.5 |
53.0 |
802.11n |
4.0 |
7.5 |
7.5 |
802.11ac |
2.0 |
3.5 |
|
Security (WEP+WPA) |
21.5 |
27.5 |
25.0 |
Enterprise |
58.0 |
92.5 |
106 |
Peer-to-Peer (P2P) |
57.0 |
82.0 |
|
Simple Config (WSC) |
24.0 |
38.0 |
49.0 |
SoftAP |
12.0 |
20.0 |
|
MediaTek MT7601 |
76.0 |
90.0 |
|
MediaTek MT7612 |
115.0 |
190.0 |
|
Ralink RT2573 |
20.5 |
23.0 |
31.0 |
Ralink RT2870 |
31.5 |
37.0 |
44.0 |
Ralink RT3070 |
34.5 |
40.0 |
49.0 |
Ralink RT3572 |
32.5 |
39.0 |
47.0 |
Ralink RT5370 |
43.5 |
50.0 |
61.0 |
Ralink RT5572 |
36.0 |
46.0 |
55.0 |
Data Size
Component |
Size (KB) |
Core Stack 802.11abg |
9 |
802.11n |
3 |
802.11ac |
0.5 |
Security (WEP+WPA) |
4 |
Enterprise |
5 |
Peer-to-Peer (P2P) |
6 |
Simple Config (WSC) |
4 |
SoftAP |
2+2*ncli |
MediaTek MT7601 |
12 |
MediaTek MT7612 |
20 |
Ralink RT2573 |
8 |
Ralink RT2870 |
12 |
Ralink RT3070 |
12 |
Ralink RT3572 |
12 |
Ralink RT5370 |
12 |
Ralink RT5572 |
12 |
Performance
For performance testing, UDP/TCP packets are sent from the AT91SAM9M10G45-EK board. Instruction and data cache of the processor are enabled. iPerf was running at the Windows host side to measure the performance.
Wi-Fi performance highly depends on the environment and the device being used. The AP used was Linksys E4200, which works for 11n only and uses 5GHz Channel 44. There were no other APs using any 5GHz channel during the testing. An RT3572 dual band USB dongle was used as the Wi-Fi device.
The payload size of the UDP packet is 1472. TCP packet size is 64KB. Code is in wifidemo.c.
Board |
UDP send |
TCP send |
AT91SAM9M10 (400MHz EHCI) |
11900 KB/s (95Mbps) |
6300 KB/s (50Mbps) |
Porting
smxBase has definitions,
macros, and functions to port smxWiFi to a particular target, such as another compiler and RTOS.
In addition, if the Wi-Fi chipset is not already supported, a new driver will need to be written.
smxWiFi was developed for use with SMX® and smxNS, but it can be ported to another RTOS and TCP/IP stack. Use of smxUSBH is recommended, since porting to another USB host stack is challenging.
smxWiFi API
swf_Init()
swf_Open()
swf_Close()
swf_Release()
swf_RegisterNotify()
swf_GetNodeID()
swf_SendPacket()
swf_GetLinkStatus()
swf_Connect()
swf_Disconnect()
swf_IsConnected()
swf_IsInserted()
swf_IsOpen()
swf_ScanBss()
swf_GetBssNum()
swf_GetBssInfo()
swf_SetBssType()
swf_SetAdhocChannel()
swf_SetPowerSaveMode()
swf_SetAuthMode()
swf_SetWepDefaultKeyID()
swf_SetWepSharedKey()
swf_GenerateWPAKey()
swf_SetWPAKey()
swf_SetEAPCredentials()
swf_WPSStartPBC()
swf_WPSStartPIN()
swf_WPSGeneratePIN()
Tested Devices
Wi-Fi Dongles/Cards
- AmbiCom M600N-USB (RT2870)
- AmbiCom WL150N-nUSB (RT3070)
- AmbiCom WL150N-USBx (RT3070)
- Asus USB-N13 (RT3072)
- Belkin F5D7050 v3002 (RT2573)
- Belkin F5D8053 v3001 (RT2870)
- Buffalo WLI-UC-G300N (RT2870)
- D-Link DWA-140 (RT2870)
- D-Link DWA-160B2 (RT5572)
- D-Link EWUGRL2700 (RT2573)
- Linksys AE1000 (RT3572)
- Linksys WUSB54GC (RT2573)
- Linksys WUSB54GC v3 (RT3070)
- Linksys WUSB600N ver.2 (RT3572)
- MediaTek 7601 (MT7601)
- NETGEAR A6210 AC1200 (MT7612)
- Ralink 2070 (RT2573)
- Ralink 3070 WS-WNU682N (RT3070)
- Ralink 5370 OEM dongle (RT5370)
- Samsung, WIS09ABGN LinkStick USB Adapter (RT2870)
- SparkLAN WUBM-273ACN dongle (MT7612)
- SparkLAN WUBR-170GN dongle (RT3370)
- SparkLAN WUBR-507N dongle (RT3572)
- SparkLAN WUBR-508N dongle (RT5572)
- W483 802.11n PCI Card (RT2860)
Access Points
- Apple AirPort Extreme A1034 Router
- Apple AirPort Extreme A1354 802.11n Router
- ASUS RT-AX58U Wireless-AX Dual-Band Wi-Fi Router
- Belkin N150 Wireless Router
- Cisco 861W Router
- Cisco AIR-AP1262N-A-K9
- D-Link DIR-601 Router
- D-Link DIR-615 Router
- D-Link DIR-625 RangeBooster N Router
- D-Link DIR-655 Extreme N Router
- FRITZ!Box Fon WLAN 7270
- Linksys E1200 Wireless-N Router
- Linksys E4200 Wireless-N Router
- Linksys E4500 Wireless-N Router
- Linksys E5400 Dual-Band WiFi 5 Router
- Linksys WRT54G Wireless Router
- Linksys WRT160N Wireless-N Router
- Linksys WRT320N Dual-Band Wireless-N Router
- Linksys WRT400N Dual-Band Wireless-N Router
- NETGEAR WGR614 v6 Wireless Router
- NETGEAR WNDR3300 RangeMax Dual Band Wireless-N Router
- NETGEAR WNR2000 N300 Wireless Router
- Pakedge WA-2200 802.11ac Wave 2 AP
- Pakedge WR-1 802.11ac Wave 2 Router
- TP-Link Archer A6 MU-MIMO Router
- TP-Link TL-WR841ND Wireless N Router
- TRENDnet TEW-432BRP 11g Wireless Router
RADIUS Servers
- Cisco ACS v5.2
- FreeRadius Server on Fedora 13 version 2.1.10
- ZyXEL NWA3160-N Built-In Radius Server
Wi-Fi Peer-to-Peer (P2P) Devices
- Android 4.0.4, 4.1, and 4.2.2 Samsung Note Tablet and Phone
- Android 4.2.2 Asus Memo 7 HD Tablet
- Android 9.0 Samsung Tablet 2 (2017)
- Netgear Push2TV3000
Clients for SoftAP
- Android 4.0.4, 4.1, and 4.2.2 Samsung Note Tablet and Phone
- Android 4.2.2 Asus Memo 7 HD Tablet
- Android 9.0 Samsung Tablet 2 (2017)
- Apple iBook G4 laptop OS X 10.5.8
- Apple iPad 2nd Generation iOS 9.0
- Apple MacBook Pro 2017 version
- Linux with with Ralink Wi-Fi chipset driver
- Microsoft Windows with Ralink, Realtek, and Atheros Wi-Fi chipset driver
- Microsoft Windows 10 with Intel Ax200, Broadcom WiFi chipset driver
|