Wifi Solutions

Introduction

H&D Wireless SDIO solution has been tested on 2.6.30 Linux kernel patched with 2.6.30.exp4 experimental patch.

All other solutions on this Tips and tricks page have been tested on a 2.6.27 Linux kernel patched with the 2.6.27 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

SDIO Wifi solutions

H&D Wireless: SPB104

H&D Wireless provides support of SPB104 Wifi SDIO card for Linux4SAM.
H&D Wireless provides binary demos but also source and patches to rebuild from scratch your distribution.
You can find all necessary information here or you can follow procedure described below.

Pre-built images with WiFi support

The prebuilt image (x.zip) can be applied as described in GettingStarted#Demo9m10g45ek.
The hdwireless-angstrom-at91sam9m10ekes-wifi.zip file contains image files which includes wifi support.

Board Description Binary
AT91SAM9M10G45-EK H&D Wireless Angstrom-at91sam9m10ekes Wifi demo hdwireless-angstrom-at91sam9m10ekes-wifi.zip

Adding Wifi support to Angstrom/OpenEmbedded

When building a kernel and a rootfs using Angstrom/OpenEmbedded, the oe_at91sam-owl-wifi.patch should be applied to the oe_at91sam.tgz overlay tree.
Follow the instructions to setup your build environment described in OpenEmbeddedAngstromBuild#How_to_build_Angstrom_for_AT91 section.

Description Location
H&D Wireless OpenEmbedded patch oe_at91sam-owl-wifi.patch

Once the AT91 OpenEmbedded overlay tree installed, download and apply the owl wifi patch on it:

wget http://www.hd-wireless.se/images/stories/public_pdf/oe_at91sam-owl-wifi.patch
cd oe_at91sam
cp /path/to/oe_at91sam-owl-wifi.patch .
patch -p1 < oe_at91sam-owl-wifi.patch

Adding Wifi support to a "custom" kernel

In "standalone" mode, it is assumed that a custom kernel image is built and used according to LinuxKernel.

During the "Get and patch the Linux kernel", as described in LinuxKernel, apply the 2.6.30-at91-sdio-irq-support.patch after applying the 2.6.30-at91-exp.4.tar.gz patchset:

DescriptionSorted ascending Location
H&D Wireless sdio irq patch 2.6.30-at91-sdio-irq-support.patch

 
wget http://www.hd-wireless.se/images/stories/public_pdf/2.6.30-at91-sdio-irq-support.patch
cd linux-2.6.30
patch -p1 < /path/to/2.6.30-at91-sdio-irq-support.patch

After applying the patch, follow the remaining steps as described in LinuxKernel to configure, build and install the kernel.

See the owl Linux SDK User Guide documentation (pdf), section 3, for information on how to build and install the owl wifi driver kernel module.

Description Location
oWL Linux SDK User Guide owl-linux-pa3.pdf
oWL Linux SDK H&D Wireless Download page

H&D Wireless SPB104 - Performance measurement

 
# TCP:
SAM9      : iperf -c 192.168.2.100
Linux PC  : iperf -s
Result    : 0.0-10.0 sec 22.6 MBytes 18.9 Mbits/sec

SAM9      : iperf -s
Linux PC  : iperf -c 192.168.2.101
Result    : 0.0-10.0 sec  21.3 MBytes  17.9 Mbits/sec

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

USB Wifi solutions

Pointing 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
r6 - 15 May 2013 - 13:40:36 - NicolasFerre
 
Linux & Open Source related information for AT91 Smart ARM Microcontrollers

Copyright © 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. This site is powered by the TWiki collaboration platform

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 siteRSS ATOM