Ralink RT73 USB WiFi Integration
Introduction
This white paper will show how to integrate a wifi dongle with a LeopardBoard DM365. Although the process is given for a specific board and wifi adapter, it is possible to translate it to others boards and wifi adapters.
The wifi dongle used was a BELKIN F5D7050A (shown in Figure 1). Usually no matter the wifi adapter you use, the main characteristic you must know is its chipset model, in the case of BELKIN's adapters discussed there are three chipsets used according with the part number of the dongle:
Part number | Chipset used |
---|---|
F5D7050A | Ralink RT73 |
F5D7050B | Ralink RT73 |
F5D7050C | Zydas 1211B |
For our example it will be used a Belkin F5D7050A which uses a Ralink RT73 chipset.
Hardware configuration
Make sure your hardware is configured in USB host mode. See How to configure DM365 for USB host, device and OTG support for details.
Board's driver configuration
In order to get you board ready to run the driver for the wifi adapter you must install some elements from your SDK. You can follow the next steps:
1. Activate the Ralink rt2500 (USB) support option as a module in
-> Kernel configuration -> Device Drivers -> Network device support (NETDEVICES [=y]) -> Wireless LAN (WLAN [=y]) -> Wireless LAN (IEEE 802.11) (WLAN_80211 [=y]) -> Ralink driver support (RT2X00 [=y])
2. Activate Generic IEEE 802.11 Networking Stack (mac80211) in
-> Kernel configuration -> Networking support (NET [=y]) -> Wireless (WIRELESS [=y])
3. Selects cfg80211 - wireless configuration API in
-> Kernel configuration -> Networking support (NET [=y]) -> Wireless (WIRELESS [=y])
4. Activate Wireless LAN (IEEE 802.11) in
-> Kernel configuration -> Device Drivers -> Network device support (NETDEVICES [=y]) -> Wireless LAN (WLAN [=y])
5. Selects Minstrel in
-> Kernel configuration -> Networking support (NET [=y]) -> Wireless (WIRELESS [=y])
6. Activate the openssl-0.9.8k option in
-> File System Configuration -> Select target's file system software
7. Activate wpa_supplicant-0.6.9 in
-> File System Configuration -> Select target's file system software
8. Activate CRC ITU-T V.41 functions as a module in
-> Kernel configuration -> Library routines
9. Install the wireless_tools 29 from
-> File System Configuration -> Select target's file system software
Once you finish the previous steps you must add the wifi adapter's firmware to your file system, that will let the driver to get access to the firmware necessary to start the hardware. In order to do that you must copy the rt73.bin file into /lib/firmware and the rt73sta.dat file into /etc/Wireless/RT73STA (if the previous folders don't exist you can create them). You can find these files by downloading the wifi dongle's driver, at the time of writing the latest version can be found in [belkin].
Now, your board have been configured in order to detect your wifi dongle, run the make command and install your images into the board. The next step will be to configure and startup the wireless dongle.
Starting up the wireless network
Once you have your wifi dongle's driver installed successfully the next step is to get it up and begin the wireless transmission. If you want to know if your wifi adapter was installed without errors you can type iwconfig and then your wifi interface will be shown
/ # iwconfig lo no wirnet eth0: DaVinci EMAC: ioctl not supported eless extensions. eth0 no wireless extensions. wlan0 IEEE 802.11bg Mode:Managed Access Point: Not-Associated Tx-Power=0 dBm Retry long limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:on
Now you can startup the wireless interface by doing
/ # ifconfig wlan0 up phy0 -> rt2x00lib_request_firmware: Info - Loading firmware file 'rt73.bin'. rt73usb 1-1:1.0: firmware: requesting rt73.bin phy0 -> rt2x00lib_request_firmware: Info - Firmware detected - version: 1.7. phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 3, CWmax: 4, Aifs: 2, TXop: 102. phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 4, CWmax: 5, Aifs: 2, TXop: 188. phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 5, CWmax: 10, Aifs: 3, TXop: 0. phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 5, CWmax: 10, Aifs: 7, TXop: 0.
So, once you type the ifconfig again you will see your wireless interface up. In order to get your wireless interface running automatically each time your board starts with a specific wireless network you can modify the wpa_supplicant.conf and interfaces files as is shown next.
Setting the wpa configuration
The program we will need to connect to the access point is called wpa_supplicant. Supplicant is the IEEE 802.1X/WPA component that is used in the client machines. It implements key negotiation with a WPA Authenticator and it controls the roaming and IEEE 802.11 authentication/association of the wlan driver [1].
You need to configure your wpa supplicant in order to get access into a WPA network which is our case. So, you need to edit the wpa configuration file located in /etc/wpa_supplicant/wpa_supplicant.conf as is shown below
network={ ssid="Network_ID" key_mgmt=WPA-PSK proto=WPA2 psk="Your_network_password" pairwise=CCMP group=CCMP priority=5 }
You only must set the network ssid and the password to access it. You can see the available wireless networks by typing the iwlist scan command, this command will show you all the available networks and their characteristics.
Setting the interface configuration
Finally you must edit your interfaces file in order to get your wireless interface up automatically each time you start you board.
Editing the /etc/network/interfaces file
auto wlan0 iface wlan0 inet dhcp pre-up wpa_supplicant -B -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0 - post-down killall `pidof wpa_supplicant` script /etc/udhcp.script
These code lines will automatically startup your wireless interface (called wlan0), run the wpa supplicant's configuration and get an IP address for the connection.
Once you finish editing the files you can restart your board and the wireless interface will be showed up in the ifconfig prompt and will be ready to start any network transfer.