無線LAN−USBアダプターGW−US54Min2の組込み


 以前動かしたことのある無線LANアダプターPLANEXのGW-US54Min2であるが、このところのiptablesの組込みなどから何故か動かなくなっていたので、再度一から組み込んで見ることとした。

 手順は、
  1. sargeで立ち上げたDebianをetcにアップする。 
  2. カーネルをソースから再構築
  3. GW-US54Min2に使用しているチップのドライバーrt73をインストール
  4. ネットワークの起動設定。
の順番である。

1.etchへのアップ
  これは前に書いたことがあり、ここを参照頂きたい。

2.カーネルの再構築
  • カーネルの再構築に必要なツールをインストールする。
autoconf automake binutils gcc gettext kernel-package libncurses5-dev libtool linux-kernel-headers make module-init-tools
   test:/usr/src# tar zxvf linux-2.6.16_lsp.1.7.8.tar.gz
  • u-boot用のイメージ作成ツールmkimageを準備する
u-bootプロジェクトのページから u-boot-1.1.4.tar.bz2を頂いてくる。
# tar jxvf u-boot-1.1.4.tar.bz2 で展開する。
# cd u-boot-1.1.4 で移動し、
# TOPDIR=`pwd`
# export TOPDIR
# cd tools/
# make mkimage
で完成した mkimage をパスの通った例えば/usr/bin にコピーする。
確認は
# mkimage -l /boot/uImage.buffalo
Image Name:   Linux-2.6.16.16-arm1
Created:      Sat Jun  7 18:13:49 2008
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    1822980 Bytes = 1780.25 kB = 1.74 MB
Load Address: 0x00008000
Entry Point:  0x00008000
  • クロスコンパイル指定を解除する。(コメント化)
Makefile の180行目当たりにあるクロスコンパイル指定の
#CROSS_COMPILE  ?= arm-none-linux-gnueabi- をコメント化
  • /usr/src/linux-2.6.16_lsp.1.7.8/buffaloにあるbuffalo_lsgl_arm_110.config をコピー
# cp buffalo_lsgl_arm_110.config  ../.configure
  • # make menuconfig でカーネルの諸元設定
今回は無線LANを使用出来るようにすることであるので以下の個所を変更する。他は必要により変更。結果は自己責任
Device Drivers --->
  Network device support --->
   Wireless LAN (non-hamradio) --->
     [*] Wireless LAN drivers (non-hamradio) & Wireless Extensions
これを忘れるとrt73コンパイル時に以下の警告が出る。
*** Warning: "wireless_send_event" [/usr/src/rt73/Module/rt73.ko] undefined!
  • # make uImage でコンパイル
1時間半程かかる。気長に待つこと。
警告は色々出るが、最終的にエラーが出なければOKのようである。当初mkimageが無いといわれて完了しなかった。これまでに示した条件が整っていれば問題無いはずである。
正常終了した後は、
# mkimage -l arch/arm/boot/uImage とする。mkimage作成のところで示したメッセージが出る
この操作はコンパイルの最後でやっているようなので意味は良く分らない。
  • # make modules でモジュールのコンパイル、# make modules_installでインストール
問題は無く終了はずである。Makefileの中でdepmodへのパスが違っておりmodules_install の最初で"module-init-toolsをインストールするように"なるエラーメッセージが出るが、影響はないようである。
気になる方は
DEPMOD          = /kernel26tool/sbin/depmod
/sbin/depmodなど実態にあわせて修正してください。
  • uImage を /boot ディレクトリーにコピー
最悪の場合に備え/boot/uImage.buffaloを/boot/uImage.buffalo.orgなどとして保存しておき、今回作成したものをコピー
# cp arch/arm/boot/uImage /boot/uImage.buffalo
  • 再起動で立ち上がれば終了である。
3.GW-US54Min2に使用しているチップのドライバーrt73をインストール
  • rt73のソースを取得
# apt-get install cvs でcvsをインストール
/usr/src に移動して
# cvs -z3 -d:pserver:anonymous@rt2400.cvs.sourceforge.net:/cvsroot/rt2400 co -P -d rt73 source/rt73

でrt73/以下にソースが展開される。
  • # make でコンパイル、# make installでインストール
コンパイルの前に
# mkdir /lib/modules/2.6.16.16-arm1/build
# ln -s /usr/src/linux-2.6.16_lsp.1.7.8 /lib/modules/2.6.16.16-arm1/build
でリンクを張っておく。rt73のソースは/lib/modules/2.6.16.16-arm1/buildにカーネルのソースを要求している。
# cd /usr/src/rt73/Module に移動し
# make
エラー、警告が出ずに
*** Module rt73.ko built successfully
となれば終了。
# make install
*** Update /etc/modprobe.d/ralink alias for wlan*
*** Install firmware in /lib/firmware ...
*** Check old config ...
などと表示される。
ドライバーのrt73.koが
/usr/src/linux-2.6.16_lsp.1.7.8/binaries/lib/module/2.6.16.16-arm1/extra/に
ファームのrt73.binが
/lib/firmware にインストールされる。
私は、rt73.koのパスが長すぎるので他のDebianを参考に
/lib/modules/2.6.16.16-arm1/extra/ディレクトリーを作成してここにコピーした。
  • rt73 の動作確認
ドライバーモジュールの組込みはmodprobeコマンドを使うことが一般的のようであるが、このケースでは認識していないと叱られるので、insmod を使う。
# insmod /lib/modules/2.6.16.16-arm1/extra/rt73.ko
でdmesgなどで確認すると組み込めたようではある。
しかし、GW-US54Min2をUSBソケットに挿すと、
idVendor = 0x2019, idProduct = 0xab50
rt73: Failed to request_firmware. Check your firmware file location
rt73: probe of 2-1:1.0 failed with error -2
ファームが読み込めないとのエラーが出て動作しない。
ネットで調べている内にそれらしき事を書いている海外のネットに行きあたる。
udevがどうとかとあるので、このケースではhotplugではないかと思い、
# apt-get install hotplug
でインストールしたところエラーも出なくなり無事動かすことが出来た。

4.ネットワークの起動設定
使用条件によって違うと思うが、私の場合は、
起動時に有線LANか無線LANのうち繋がっているほうで起動すれば良いので、

/etc/network/interface
***************************
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp

allow-hotplug wlan0

auto wlan0

/etc/hotplug/usb/rt73
***************************
#!/bin/sh
ifconfig wlan0 up
iwconfig wlan0 mode managed
iwconfig wlan0 essid xxxxxxxxxxx
iwconfig wlan0 channel x
/sbin/dhclient wlan0
if [ $? = 0 ]; then
                ln -s /etc/hotplug/usb/rt73.off $REMOVER
fi

/etc/hotplug/usb/rt73.off
***************************
#!/bin/sh
ifconfig wlan0 down

 同じ操作に対してコマンドの種類が多く、どのファイルにどのコマンドを使うのが正解なのか良く分らなかったが、カットアンドトライで動いたものを示す。


ホームページトップ  LinkStationトップ