802.11n (Draft2.0) 対応の USB 無線 LAN モジュール(GW-USMicroN)を Armadillo で使用する方法を説明します。60 Mbps ほどの転送速度(Armadillo-500 の場合)が必要な場合は、ぜひお試しください。
おおまかな手順は下記のようになります。
- Linux カーネルのフレームバッファドライバーの削除とコンパイル
- 無線 LAN ドライバーのコンパイル
- 無線 LAN ドライバーのインストール
- 無線 LAN の設定
- 無線 LAN ドライバーの登録
- ネットワークの設定
Armadillo-220, Armadillo-240 で利用した環境は以下となります。
- ユーザーランド : Atmark dist v20100603
- Linux カーネル : linux-2.6.12.3-a9-17
- USB 無線 LAN モジュール : Planex 社 GW-USMicroN
- USB 無線 LAN モジュールドライバー :2008_0925_RT2870_Linux_STA_v1.4.0.0
- 開発環境 : atde2
Armadillo-420, Armadillo-440 で利用した環境は以下となります。
- ユーザーランド : Atmark dist v20100603
- Linux カーネル : linux-2.6.26-at9
- USB 無線 LAN モジュール : Planex 社 GW-USMicroN
- USB 無線 LAN モジュールドライバー :2008_0925_RT2870_Linux_STA_v1.4.0.0
- 開発環境 : atde3
Armadillo-500 開発ポート で利用した環境は以下となります。
- ユーザーランド : Atmark dist v20090318
- Linux カーネル : linux-2.6.26-at6
- USB 無線 LAN モジュール : Planex 社 GW-USMicroN
- USB 無線 LAN モジュールドライバー :2008_0925_RT2870_Linux_STA_v1.4.0.0
- 開発環境 : atde2
2010年07月01日現在では、Ralink 社の Web サイトからダウンロードできる USB 無線 LAN モジュールドライバーの最新バージョンは v2.4.0.0 となっています。ですが、最新バージョンでは、GW-USMicroN のチップセット用のソースコードが削除されているため使用できません。そのため、この Howto ではバージョン v1.4.0.0 を使用しました。
以降の説明では、USB 無線 LAN モジュールドライバーを無線 LAN ドライバーと表記します。
この Howto で作成したファイルは、Appendix B. ファイルからダウンロードできます。
1. Linux カーネルのフレームバッファドライバーの削除とコンパイル
Armadillo-240 の標準イメージでは、無線 LAN ドライバーが必要とする連続したメモリ領域が不足するため、GW-USMicroN を使用できません。 連続したメモリ領域を多く使用するフレームバッファドライバーを削除することで、GW-USMicroN を使えるようになります。
フレームバッファドライバーを削除した Linux カーネルイメージを作成する方法を以下に示します。
まずは、Armadillo-200 シリーズ ソフトウェアマニュアルの8.1.1. ソースコードの準備と8.1.2. コンフィグレーションの手順を行います。
次に、make menuconfig を実行します。
[PC ~/atmark-dist/]$ make menuconfig
Main Menu では以下のように選択します。
Main Menu
Kernel/Library/Defaults Selection --->
--- Kernel is linux-2.6.x
(default) Cross-dev
(None) Libc Version
[ ] Default all settings
[*] Customize Kernel Settings ←チェックを入れる
[ ] Customize Vendor/User Settings
[ ] Update Default Vendor Settings
Linux Kernel Configuration では以下のように設定します。
Linux Kernel Configuration
Device Drivers --->
Graphics support --->
< > Support for frame buffer devices ←チェックを外す
make を実行し、新しい Linux カーネルイメージを作成します。
[PC ~/atmark-dist/]$ make
ソフトウェアマニュアルを参照し、新しい Linux カーネルイメージを Armadillo に書き込んでください。
2. 無線 LAN ドライバーのコンパイル
この章では、無線 LAN ドライバーのソースコードの修正内容とコンパイル方法について説明します。
2.1. 無線 LAN ドライバーの修正
無線 LAN ドライバーのソースコードをダウンロードし、修正します。
[PC ~/]$ wget http://download.atmark-techno.com/sample/11n-wlan-usb-module/2008_0925_RT2870_Linux_STA_v1.4.0.0.tar.bz2
[PC ~/]$ tar jxvf 2008_0925_RT2870_Linux_STA_v1.4.0.0.tar.bz2
[PC ~/]$ cd 2008_0925_RT2870_Linux_STA_v1.4.0.0/
Makefile を以下のように変更します。
#PLATFORM=PC ←コメントアウト
[...]
#PLATFORM = CAVM_OCTEON
PLATFORM = ARMADILLO ←追加
ifeq ($(PLATFORM),ARMADILLO) ←追加
LINUX_SRC = /home/atmark/atmark-dist/linux-2.6.x ←追加
CROSS_COMPILE = /usr/bin/arm-linux- ←追加
endif ←追加
[...]
# cp -f $(RT28xx_DIR)/os/linux/rt$(CHIPSET)sta.ko /tftpboot ←コメントアウト
(*)LINUX_SRC のパスはご使用の環境に合わせて読み替えてください。
(*)Armadillo-420, 440 をお使いの場合はCROSS_COMPILE = /usr/bin/arm-linux-gnueabi- に読み替えてください。
os/linux/config.mk を以下のように変更します。
# move to Makefile outside LINUX_SRC := /opt/star/kernel/linux-2.4.27-star
ifeq ($(PLATFORM),ARMADILLO) ←追加
EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include -O3 ←追加
endif ←追加
include/rt2870.h に GW-USMicroN の Vendor/Product 情報を追加します。
#define RT2870_USB_DEVICES \
[...]
{USB_DEVICE(0x2019,0xED06)}, /* Planex Communications, Inc. */ \
{USB_DEVICE(0x2019,0xAB25)}, /* Planex Communications, Inc. RT3070 */ \
{USB_DEVICE(0x2019,0xed14)}, /* Planex GW-USMicroN */ \ ←追加
上記の変更のパッチをダウンロードできます。
2.2. 無線 LAN ドライバーのデバッグメッセージの抑制
Armadillo-220, 240 をご使用の場合は、ネットワークインターフェースを有効にした時に、ドライバーのデバッグメッセージ("#"の文字)がコンソールに非常に多く出力されます。 このため、デバッグメッセージを抑制するためのソースコードの変更が必要です。
Armadillo-420, 440, 500 をご使用の場合は、この章の手順は必要ありません。
include/rt2870.h の以下の行を変更します。この変更はデバッグメッセージを抑制するための変更で、デバッグメッセージが出力されないことを保証するものではありません。
#define CONTROL_TIMEOUT_JIFFIES ( (100 * HZ) / 1000 * 2) ←変更
上記の変更のパッチをダウンロードできます。
2.3. 無線 LAN ドライバーのコンパイル
make を実行し、無線 LAN ドライバーを作成します。
[PC ~/]$ make
3. 無線 LAN ドライバーのインストール
コンパイル済みの無線 LAN ドライバー(os/linux/rt2870sta.ko)と設定ファイルテンプレート(RT2870STA.dat)を Armadillo の以下のディレクトリに配置します。
ホスト上のファイル | Armadillo 上のディレクトリ |
---|---|
os/linux/rt2870sta.ko | /lib/module/[kernel_verion]/net/ |
RT2870STA.dat | /etc/Wireless/RT2870STA/ |
[kernel_version] には Linux カーネルのバージョンを入れてください。Linux カーネルのバージョンは "uname -r" コマンドで確認できます。
コンパイル済みの無線 LAN ドライバーと設定ファイルテンプレートは Appendix B.2. コンパイル済み無線 LAN ドライバー、設定ファイルテンプレートからダウンロードできます。
4. 無線 LAN の設定
この章からは、Armadillo 上での作業になります。
/etc/Wireless/RT2870STA/RT2870STA.dat を無線 LAN ネットワーク環境に合わせて設定します。WPA-PSK を利用する場合の設定例は以下の通りです。
SSID=my-essid
AuthMode=WPAPSK
EncrypType=AES
WPAPSK=my-preshared-key
RT2870STA.dat の設定項目の詳細については、README_STA をご参照ください。
5. 無線 LAN ドライバーの登録
無線 LAN ドライバーを Linux カーネルに登録します。
[armadillo ~]# insmod /lib/modules/$(uname -r)/net/rt2870sta.ko
Using rt2870sta.ko
rtusb init --->
usbcore: registered new interface driver rt2870
[armadillo ~]# usb 1-1: new high speed USB device using fsl-ehci and address 2
usb 1-1: configuration #1 chosen from 1 choice
[...]
6. ネットワークの設定
GW-USMicroN のネットワークインターフェースを有効にします。
[armadillo ~]# ifconfig ra0 up
以降は、通常のネットワークデバイスと同様に IP アドレスの設定などを行います。また、iwconfig や iwscan コマンドを利用して無線 LAN 接続の状態確認や管理ができます。
以上で、Armadillo で GW-USMicroN を使う手順は終了です。
Appendix A. スループット
NPtcp を使用して転送速度を測定したところ、結果は以下のようになりました。 測定には、無線 LAN 接続の環境として1メートル程度離れている 802.11n 対応アクセスポイント(BUFFALO エアステーション エヌフィニティ Giga[WZR-AGL300NH])を使用しました。
ポート | 受信最大転送速度 | 送信最大転送速度 |
---|---|---|
Armadillo-220 USB Full-Speed | 約 3.69 Mbps | 約 3.70 Mbps |
Armadillo-240 USB Full-Speed | 約 3.70 Mbps | 約 3.71 Mbps |
Armadillo-420 USB Hi-Speed | 約 37.2 Mbps | 約 37.05 Mbps |
Armadillo-420 USB Full-Speed | 約 5.79 Mbps | 約 5.80 Mbps |
Armadillo-440 USB Hi-Speed | 約 38.04 Mbps | 約 37.04 Mbps |
Armadillo-440 USB Full-Speed | 約 5.75 Mbps | 約 5.72 Mbps |
Armadillo-500 USB Hi-Speed | 約 58.63 Mbps | 約 59.23 Mbps |
Armadillo-500 USB Full-Speed | 約 5.54 Mbps | 約 5.54 Mbps |
Appendix B. ファイル
Appendix B.1. Linux カーネルイメージ、ユーザーランドイメージ
この Howto の内容を簡単に試すことができるように、3. 無線 LAN ドライバーのインストールまでの手順で作成したファイルを含んだイメージを作成しました。作成した Linux カーネルイメージとユーザーランドイメージは以下からダウンロードできます。
以下のイメージを使用する場合は、4. 無線 LAN の設定からの手順を行います。
Armadillo-220
- Armadillo-220 Linux カーネルイメージ : linux-a220-1.10.bin.gz
- Armadillo-220.Base ユーザーランドイメージ : romfs-a220-base-rt2870sta.img.gz
Armadillo-240
- Armadillo-240 Linux カーネルイメージ : linux-a240-1.09-nofb.bin.gz
- Armadillo-240.Base ユーザーランドイメージ : romfs-a240-base-rt2870sta.img.gz
Armadillo-420, Armadillo-440
- Armadillo-400 Linux カーネルイメージ : linux-a400-1.02.bin.gz
- Armadillo-420 ユーザーランドイメージ : romfs-a420-rt2870sta.img.gz
- Armadillo-440 ユーザーランドイメージ : romfs-a440-rt2870sta.img.gz
Armadillo-500
- Armadillo-500 Linux カーネルイメージ : linux-a500-2.02.bin.gz
- Armadillo-500 ユーザーランドイメージ : romfs-a500-rt2870sta.img.gz
ユーザランドには以下のファイルが組み込まれています。
- RT2870STA.dat (/etc/Wireless/RT2870STAに配置)
- rt2870sta.ko (/lib/modules/[kernel_version]/netに配置)
Appendix B.2. コンパイル済み無線 LAN ドライバー、設定ファイルテンプレート
コンパイル済みの無線 LAN ドライバー、設定ファイルテンプレートは以下からダウンロードできます。
- Armadillo-220、Armadillo-240 無線 LAN ドライバー :rt2870sta.ko
- Armadillo-420、Armadillo-440 無線 LAN ドライバー :rt2870sta.ko
- Armadillo-500 無線 LAN ドライバー :rt2870sta.ko
- 設定ファイルテンプレート :RT2870STA.dat