Linux & Open Source related information for AT91 Smart ARM Microcontrollers
Search: 

Wifi Solutions

Introduction

All solutions on this Tips and tricks page have been tested on a 2.6.27 Linux kernel patched with the experimental patch : follow procedure on the LinuxKernel page.

For simplicity purpose those tests have been led in a basic configuration :

  • Rootfs from OpenEmbedded / Angstrom (the one you will find OpenEmbeddedAngstrom page & GettingStarted demos)
  • AP : LinkSys WRT54G v2.2
  • No encryption (no wep, no WMA)
  • short link distance : ~1m

USB Wifi solutions

hand Note that with OHCI host available currently on at91sam products, you will have an USB full speed connectivity. This range of the USB interface does not allow to reach a full 802.11a/g bandwidth.

ZyDAS: ZD1211B

A "no-name" USB dongle based on ZyDAS chipset ZD1211B has been tested.

ZyDAS was acquired by Atheros, and the ZD1211 is now known as Atheros AR5007UG.

Driver:
You have drivers outside the kernel (although GPL) and inside the kernel starting from 2.6.23.
The zd1211rw with UW2453 RF support mainline Linux kernel is used.

ZD1211 Setup

  • firmware found here : http://zd1211.ath.cx/get-firmware
  • firmware files (zd1211*) have to be copied in /lib/firmware/zd1211/ directory on the target
  • 2.6.27-exp kernel configuration. Here is the added entries in kernel configuration :
CONFIG_CFG80211=y
CONFIG_NL80211=y
CONFIG_WIRELESS_EXT=y
CONFIG_WIRELESS_EXT_SYSFS=y
CONFIG_MAC80211=y

CONFIG_MAC80211_RC_PID=y
CONFIG_MAC80211_RC_DEFAULT_PID=y
CONFIG_MAC80211_RC_DEFAULT="pid"

CONFIG_WLAN_80211=y

CONFIG_ZD1211RW=m

CONFIG_CRYPTO=y

CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_ARC4=y
CONFIG_CRYPTO_HW=y

  • reboot with the newly generated kernel
  • insmod zd1211rw.ko
  • insert your usb dongle
  • iwconfig wlan0 essid <YOURSSID>
  • ifconfig wlan0 <YOURIPADDR>

ZD1211 usage log

usbcore: registered new interface driver zd1211rw
usb 1-1: new full speed USB device using at91_ohci and address 2
usb 1-1: configuration #1 chosen from 1 choice
usb 1-1: reset full speed USB device using at91_ohci and address 2
phy0: Selected rate control algorithm 'pid'
zd1211rw 1-1:1.0: phy0
firmware: requesting zd1211/zd1211b_ub
firmware: requesting zd1211/zd1211b_uphr
zd1211rw 1-1:1.0: firmware version 4725
zd1211rw 1-1:1.0: zd1211b chip 0ace:1215 v4810 full 00-17-31 UW2453_RF pa0 g7---
wlan0: authenticate with AP 00:13:10:8b:0a:d3
wlan0: authenticated
wlan0: associate with AP 00:13:10:8b:0a:d3
wlan0: RX AssocResp from 00:13:10:8b:0a:d3 (capab=0x401 status=0 aid=1)
wlan0: associated
[..]

ZD1211 Performance measurement

  • tests on at91sam9263ek/2.6.27-exp

Iperf
# TCP:
SAM9      : iperf -s -i2
Linux PC  : iperf -c 192.168.1.10
Result    : 0.0-10.0 sec  5.22 MBytes  4.38 Mbits/sec

SAM9      : iperf -c 192.168.1.20
Linux PC  : iperf -s -i2
Result    : 0.0-10.0 sec  7.17 MBytes  6.00 Mbits/sec

Ralink: RT73

A Belkin USB dongle based on Ralink chipset RT73 (Belkin F5D7050 Ver 3) has been tested.

Driver:
You have drivers outside the kernel (although GPL) and inside the kernel starting from 2.6.24.
The mainline linux rt73.ko driver is used.

RT73 Setup

  • firmware found here : Ralink Linux support page and take the RT2571 firmware
  • firmware file rt73.bin have to be copied in /lib/firmware/ directory on the target
  • 2.6.27-exp kernel configuration. Here is the added entries in kernel configuration :
CONFIG_CFG80211=y
CONFIG_NL80211=y
CONFIG_WIRELESS_EXT=y
CONFIG_WIRELESS_EXT_SYSFS=y
CONFIG_MAC80211=y

CONFIG_MAC80211_RC_PID=y
CONFIG_MAC80211_RC_DEFAULT_PID=y
CONFIG_MAC80211_RC_DEFAULT="pid"

CONFIG_WLAN_80211=y

CONFIG_RT2X00=m
CONFIG_RT2X00_LIB=m
CONFIG_RT2X00_LIB_USB=m
CONFIG_RT2X00_LIB_FIRMWARE=y
CONFIG_RT2X00_LIB_LEDS=y

CONFIG_RT73USB=m
CONFIG_RT73USB_LEDS=y

CONFIG_CRYPTO=y

CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_MANAGER=y

CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_ARC4=y
CONFIG_CRYPTO_HW=y

CONFIG_CRC_ITU_T=y

  • reboot with the newly generated kernel
  • insmod rt2x00lib.ko, insmod rt2x00usb.ko, insmod rt73usb.ko
  • insert your usb dongle
  • iwconfig wlan0 essid <YOURSSID>
  • ifconfig wlan0 <YOURIPADDR>

RT73 usage log

Registered led device: rt73usb-phy0:radio
Registered led device: rt73usb-phy0:assoc
Registered led device: rt73usb-phy0:quality
usbcore: registered new interface driver rt73usb
firmware: requesting rt73.bin

RT73 Performance measurement

  • tests on at91sam9263ek/2.6.27-exp

Iperf
# TCP:
SAM9      : iperf -s
Linux PC  : iperf -c 192.168.1.10
Result    : 0.0-10.1 sec  8.98 MBytes  7.49 Mbits/sec

SAM9      : iperf -c 192.168.1.20
Linux PC  : iperf -s
Result    : 0.0-10.0 sec  7.02 MBytes  5.89 Mbits/sec

SDIO Wifi solutions

Marvell 88w8686

An evaluation SDIO card has been used : http://www.embeddedworks.net/wlan/oem_sdio_80211g.html

The libertas sdio driver is included in mainline Linux kernel from 2.6.24.

88w8686 Setup

  • Ask the firmware from your hardware provider. Firmware revision fw 8.73.7p3 has been tested
  • firmware files helper_sd.bin and sd8686.bin have to be copied in /lib/firmware/ directory on the target
  • 2.6.27-exp kernel configuration. Here is the added entries in kernel configuration :
CONFIG_WIRELESS_EXT=y
CONFIG_WIRELESS_EXT_SYSFS=y

CONFIG_NETDEVICES=y

CONFIG_WLAN_80211=y
CONFIG_LIBERTAS=m
CONFIG_LIBERTAS_SDIO=m

  • insert your SDIO card
  • reboot with the newly generated kernel
  • sdio card is recognized during bootup with the following line or equivalent:
mmc0: new SDIO card at address 0001
  • load kernel modules running insmod libertas.ko and insmod libertas_sdio.ko (ALERT! specify also fw name if needed : insmod libertas_sdio.ko helper_name="helper_sd.bin")
  • iwconfig eth0 essid <YOURSSID> (can be eth1 depending on your configuration)
  • ifconfig eth0 <YOURIPADDR> (can be eth1 depending on your configuration)

88w8686 usage log

libertas_sdio: Libertas SDIO driver
libertas_sdio: Copyright Pierre Ossman
firmware: requesting helper_sd.bin
firmware: requesting sd8686.bin
libertas: 00:1a:6b:93:33:27, fw 8.73.7p3, cap 0x00000303
libertas: PREP_CMD: command 0x00a3 failed: 2
libertas: PREP_CMD: command 0x00a3 failed: 2
libertas: eth0: Marvell WLAN 802.11 adapter

88w8686 Performance measurement

  • tests on at91sam9rlek/2.6.27-exp

Iperf
# TCP:
SAM9      : iperf -s -i2
Linux PC  : iperf -c 192.168.1.10
Result    : 0.0-10.1 sec  9.73 MBytes  8.10 Mbits/sec

SAM9      : iperf -c 192.168.1.20
Linux PC  : iperf -s -i2
Result    : 0.0-10.0 sec  9.55 MBytes  8.01 Mbits/sec

  • bigger TCP window size...

# TCP:
SAM9      : iperf -s -w10M
Linux PC  : iperf -c 192.168.1.20 -t 120 -w10M
Result    : 0.0-120.1 sec    121 MBytes  8.43 Mbits/sec

SAM9      : iperf -c 192.168.1.10 -t 120 -w10M
Linux PC  : iperf -s -w10M
Result    : 0.0-120.0 sec    118 MBytes  8.27 Mbits/sec

r2 - 19 May 2009 - 14:16:59 - NicolasFerre
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries.
Atmel® and others, are registered trademarks or trademarks of Atmel Corporation or its subsidiaries.
ARM® and others are registered trademarks or trademarks of ARM Ltd. Other terms and product names may be trademarks of others.
Ideas, requests, contributions ? Connect to LinksToCommunities page.
Syndicate this site RSSATOM