Linuxで WLI2-PCI-G54S WLI-UC-G (無縁LAN)

突然 パソコンと NintendoDS をつなぎたくなった

(注) 結局 DSとの接続は確認できませんでした…
検証環境
CPU AMD Turion(tm) 64 Mobile Technology MT-37
OS Linux kernel 2.6.24
GCC 4.1.2 i686
glibc 2.5
ndiswrapper 1.52
DHCP ISC-DHCP 4.1.0a1
無線LAN 接続機器 PC-MV1-C1W(SHARP製ノート)
WILLCOM03(PHS端末)
NintendoDS(ゲーム) Wii(ゲーム)
(NintedoDSだけが目的ではありませんが…) 導入までの流れは以下のとおりです
  • インターフェースユニットの選定
  • ドライバの導入
  • Linux側の MACフィルタリング DHCPの設定
  • 無線LANの設定
  • 他の無線LAN機器との接続

インターフェースユニットの選定

ます インターフェースカードの選定に苦労しました
PCIでパソコン内部に設置できることと
802.11bよりも速い通信方式をサポートしていること
Linuxでの動作実績があること

デスクトップパソコン (PCI)で利用できる 無線LANカードは数が少ないようです (2008年購入)
今回は WLI2-PCI-G54S を購入しました

WLI2-PCI-G54Sイメージ

2009年初には結局 USB接続の無線機も購入しました
DS接続(802.11b + 2Mbpsレート + WEP128bit方式)をサポートしていること
Linux動作実績があるもの

なんだかんだと 安さで衝動購入してしまった WLI-UC-G も結果報告します

WLI-UC-Gイメージ

WLI2-PCI-G54Sドライバの導入

まず カーネルに必要なオプションを設定します

カーネルコンフィグ

Wireless extensionsは必須です (net_device構造体に 無線LAN系の拡張がなされます)
Improved wireless configuration API はもしかしたら不要かもしれません
(いろいろ試して 少なくとも動いたのがこのオプションです)
また iptables により MACフィルタを行うので Networking Options を次のようにします

カーネルコンフィグ

次に ドライバですが Linuxネイティブのドライバが存在せず
NDISwrapper という Windowsのドライバを利用するドライバラッパをかませます

上記サイトから ndiswrapper ソースコードを取得し展開します
インストールされるファイルは数としてはそんなにありません
$ tar -tzvf ndiswrapper-1.52.tar.gz
$ cd ndiswrapper-1.52
$ make
make -C driver
make[1]: Entering directory `/home/admin/ndiswrapper-1.52/driver'
make -C /usr/src/linux-2.6.24 SUBDIRS=/home/admin/ndiswrapper-1.52/driver
make[2]: Entering directory `/usr/src/linux-2.6.24'
  LD      /home/admin/ndiswrapper-1.52/driver/built-in.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/crt.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/hal.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/iw_ndis.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/loader.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/ndis.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/ntoskernel.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/ntoskernel_io.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/pe_linker.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/pnp.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/proc.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/rtl.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/wrapmem.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/wrapndis.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/wrapper.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/usb.o
  CC [M]  /home/admin/ndiswrapper-1.52/driver/divdi3.o
  LD [M]  /home/admin/ndiswrapper-1.52/driver/ndiswrapper.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/admin/ndiswrapper-1.52/driver/ndiswrapper.mod.o
  LD [M]  /home/admin/ndiswrapper-1.52/driver/ndiswrapper.ko
make[2]: Leaving directory `/usr/src/linux-2.6.24'
make[1]: Leaving directory `/home/admin/ndiswrapper-1.52/driver'
make -C utils
make[1]: Entering directory `/home/admin/ndiswrapper-1.52/utils'
gcc -g -Wall -I../driver -o loadndisdriver loadndisdriver.c
make[1]: Leaving directory `/home/admin/ndiswrapper-1.52/utils'

$ su
# make install
make -C driver install
make[1]: Entering directory `/home/admin/ndiswrapper-1.52/driver'
make -C /usr/src/linux-2.6.24 SUBDIRS=/home/admin/ndiswrapper-1.52/driver
make[2]: Entering directory `/usr/src/linux-2.6.24'
  Building modules, stage 2.
  MODPOST 1 modules
make[2]: Leaving directory `/usr/src/linux-2.6.24'
echo /lib/modules/2.6.24/misc
/lib/modules/2.6.24/misc
mkdir -p /lib/modules/2.6.24/misc
install -m 0644 ndiswrapper.ko /lib/modules/2.6.24/misc
/sbin/depmod -a 2.6.24 -b /
make[1]: /sbin/depmod: コマンドが見つかりませんでした
make[1]: [install] エラー 127 (無視されました)
make[1]: Leaving directory `/home/admin/ndiswrapper-1.52/driver'
make -C utils install
make[1]: Entering directory `/home/admin/ndiswrapper-1.52/utils'
install -D -m 755 loadndisdriver /sbin/loadndisdriver
install -D -m 755 ndiswrapper /usr/sbin/ndiswrapper
install -D -m 755 ndiswrapper-buginfo /usr/sbin/ndiswrapper-buginfo

NOTE: Windows driver configuration file format has changed since 1.5. You must re-install Windows drivers if they were installed before.
make[1]: Leaving directory `/home/admin/ndiswrapper-1.52/utils'
mkdir -p -m 0755 /usr/man/man8
install -m 644 ndiswrapper.8 /usr/man/man8
install -m 644 loadndisdriver.8 /usr/man/man8

#

続いて Linuxの設定 MACフィルタの設定を行います
Linuxの ファイアウォール機能である iptablesを用いて セキュリティを確保します
ファイアウォールポリシーとしては 以下のとおりです
「3台(Mebius WILLCOM03 NintendoDS)の MACアドレス以外から通信を受けない」
# iptables -A INPUT -j ACCEPT -i wlan0 -m mac --mac-source **:**:**:**:**:**
# iptables -A INPUT -j ACCEPT -i wlan0 -m mac --mac-source **:**:**:**:**:**
# iptables -A INPUT -j ACCEPT -i wlan0 -m mac --mac-source **:**:**:**:**:**
3台の MACアドレスの部分は伏字にしてます 実際は MACアドレスを調べて登録します
デフォルトポリシーを iptables -P INPUT DROP としているので
上記ポリシー追加により 指定の MACアドレスからの通信のみ許可されることになります

参考のために 自環境の iptables設定を紹介します
# iptables -L -v
Chain INPUT (policy DROP 5920 packets, 1818K bytes)
 pkts bytes target     prot opt in     out     source               destination         
60335 4298K ACCEPT     all  --  lo     any     anywhere             anywhere            
60846   78M ACCEPT     all  --  eth1   any     anywhere             anywhere            
 9122 1621K ACCEPT     all  --  wlan0  any     anywhere             anywhere            MAC **:**:**:**:**:** 
    0     0 ACCEPT     all  --  wlan0  any     anywhere             anywhere            MAC **:**:**:**:**:** 
   14  2472 ACCEPT     all  --  wlan0  any     anywhere             anywhere            MAC **:**:**:**:**:** 
57978   37M ACCEPT    !icmp --  eth0   any     anywhere             anywhere            ctstate RELATED,ESTABLISHED 
    0     0 ACCEPT     icmp --  eth0   any     anywhere             anywhere            icmp echo-reply 
    0     0 ACCEPT     icmp --  eth0   any     anywhere             anywhere            icmp echo-request 
    3   200 ACCEPT     icmp --  eth0   any     anywhere             anywhere            icmp destination-unreachable 
    1    63 ACCEPT     udp  --  eth0   any     anywhere             anywhere            udp spt:domain 

Chain FORWARD (policy ACCEPT 261K packets, 225M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 197K packets, 18M bytes)
 pkts bytes target     prot opt in     out     source               destination         
#
# iptables -L -v -t nat
Chain PREROUTING (policy ACCEPT 8397 packets, 2224K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 7665 packets, 592K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  173  8316 MASQUERADE  all  --  any    any     192.168.0.0/23      !192.168.0.0/23      

Chain OUTPUT (policy ACCEPT 7660 packets, 592K bytes)
 pkts bytes target     prot opt in     out     source               destination         
#
自マシンが LAN/無縁LAN/インターネット のGWを兼ねていて NIC構成は以下の通りです
(eth0) インターネット向け
(eth1) LAN (192.168.0/24)
(wlan0) 無線LAN (192.168.1/24)

ファイアウォールの設定はなるべく簡素にしています (不要な通信が外に抜けないか警戒する必要があります)
  • INPUTチェインのみ デフォルト DROP とし 必要な通信のみ許可設定を入れる
  • FORWARDING OUTPUT チェインは設定しない デフォルト ACCEPT
  • 外部(192.168.0.0/23以外)への通信は NATするように設定
では 次の設定です DHCP です 無線LAN用に dhcpd.wlan0.conf を用意しました
option domain-name "local";
option domain-name-servers 192.168.1.1;

default-lease-time 600;
max-lease-time 7200;

ddns-update-style none;
authoritative;

log-facility daemon;

subnet 192.168.1.0 netmask 255.255.255.0 {
  option routers 192.168.1.1;
  option broadcast-address 192.168.1.255;
  host mebius {
    hardware ethernet **:**:**:**:**:**;
    fixed-address 192.168.1.2;
  }
  host ds {
    hardware ethernet **:**:**:**:**:**;
    fixed-address 192.168.1.3;
  }
  host w03 {
    hardware ethernet **:**:**:**:**:**;
    fixed-address 192.168.1.4;
  }
}
MACアドレスは伏字です
各自 無線LANのネットワーク環境にあわせて設定します
以降に紹介する手順では省略しますが 無線LANのインターフェースである wlan0 が有効化したときに
# dhcpd -q -pf /var/run/dhcpd.wlan0.pid -cf /usr/local/etc/dhcpd.wlan0.conf wlan0
のコマンドをいれて wlan0 用の dhcpd を常駐させるようにしましょう

WLI2-PCI-G54S の Windowsドライバが動作するか検証します
手順としては
1. Windowsドライバをダウンロードして一時的なディレクトリの中に展開
2. 適切な .infファイルを ndiswrapperに読み込ませる

ftp.dell.com にある network/R81433.EXE (unzipで解凍可能)での動作実績が
他のホームページでも紹介されていましたが 私の環境では動作しませんでした

同じ dell.com の ドライバダウンロードサイトから
R140747.EXE を使いました 以下の手順で .infファイルを ndiswrapperに読み込ませます
$ mkdir r140747
$ cd r140747
$ unzip R140747.EXE
Archive:  /home/admin/WLI2-PCI-G54S/r140747.exe
  inflating: msvcr71.DLL             
  inflating: preflib.dll             
  inflating: README.rtf              
  inflating: setup.exe               
  inflating: setup.inx               
  inflating: Setup.ini               
  inflating: setup.iss               
  inflating: WLBCGCBPRO731.DLL       
  inflating: wltray.exe              
〜
〜
  inflating: is.exe                  
 extracting: launcher.ini            
  inflating: layout.bin              
  inflating: MFC71.DLL               
  inflating: msvcp71.DLL             
  inflating: Version.txt
$ cd DRIVER
$ ls
bcm43xx.cat  bcm43xx64.cat  bcmwl5.inf  bcmwl5.sys  bcmwl564.sys

$ ndiswrapper -i bcmwl5.inf
installing bcmwl5 ...

$ ndiswrapper -l
bcmwl5 : driver installed
最後の ndiswrapper -l でドライバの一覧を確認しています
一般ユーザ権限でドライバを導入できることに ある意味ビックリしましたが
モジュールのロードには root権限が必要です
$ su
# modprobe ndiswrapper
# lsmod
Module                  Size  Used by
ndiswrapper           145084  0 
nvidia               4702512  22 

# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr **:**:**:**:**:**  
          unspec addr:[NONE SET]  Bcast:[NONE SET]  Mask:[NONE SET]
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          Interrupt:21 Memory:ef010000-ef012000
HWaddr の部分は伏字としてますが 16進数の MACアドレスが見えてればOKです
dmesgの出力は
ndiswrapper version 1.52 loaded (smp=no, preempt=no)
ndiswrapper: driver bcmwl5 (Broadcom,10/12/2006, 4.100.15.5) loaded
ACPI: PCI Interrupt 0000:00:08.0[A] -> GSI 16 (level, low) -> IRQ 21
ndiswrapper: using IRQ 21
wlan0: ethernet device **:**:**:**:**:** using NDIS driver: bcmwl5, version: 0x4
640f05, NDIS version: 0x501, vendor: 'NDIS Network Adapter', 14E4:4318.5.conf
wlan0: encryption modes supported: WEP; TKIP with WPA, WPA2, WPA2PSK; AES/CCMP with WPA, WPA2, WPA2PSK
usbcore: registered new interface driver ndiswrapper
ACPI: PCI Interrupt 0000:01:00.0[A] -> GSI 16 (level, low) -> IRQ 21
最後に iwconfig でのインターフェース設定を行います
# iwconfig wlan0 mode ad-hoc essid '****' key s:'*****' commit
# iwconfig wlan0
wlan0     IEEE 802.11b  ESSID:"****"  
          Mode:Ad-Hoc  Frequency:2.462 GHz  Cell: **:**:**:**:**:**   
          Bit Rate=11 Mb/s   Tx-Power:32 dBm   
          RTS thr:2347 B   Fragment thr:2346 B   
          Encryption key:7368-696B-61   Security mode:restricted
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
まず essid ですが任意のアクセスポイント名(英数字)を決めて設定します(一応伏字)
key ですがこれは WEPキー(暗号化)を表します s: に続けて文字列で設定します
WEPキーは 5文字(40/64bit) もしくは 13文字(128bit) で指定します

設定は完了ですが iwconfig の画面で疑問点があります IEEE802.11b(11Mbps)の規格なのです
ハードウェアとしては もっと速い IEEE802.11g(54Mbps)に対応してるはずなのですが

では Mebiusノートの接続から 検証開始します
PC-MV1-C1W
(↑の写真は SHARP の製品ページ からのパクリものです)
PC-MV1-C1W ランプ
まず 内蔵無線LAN を使用開始にします タッチパッド左手前の無線LANランプが点灯していることを確認します
(ランプが消灯していれば Fnキー + F1キー で無線LANを有効にします)
PC-MV1-C1W 無線LAN設定
無線LAN設定ツールを開いて設定します 設定箇所は 赤枠の2箇所です
まず ESSIDを 先ほど Linux側で設定した ESSIDに合わせます
(もしくは スキャンボタンを押して アクセスポイントとして検出されることを確認します)
次に WEPキーを入力します これも先ほどアクセスポイントで設定した 5文字/13文字 です

ノートパソコンと Linux側で DHCPの設定が正しければ ノートパソコンでインターネットが見れるようになります
私の環境では動作OKでした

WILLCOM03の設定です
WILLCOM03 TOP画面
赤↑の箇所をタッチして 無線デバイスの設定を呼び出します
WILLCOM03 無線デバイス設定
無線LANデバイスを有効にします 赤↑の箇所をタッチするとデバイスが有効になり MACアドレスが表示されます
WILLCOM03 設定
無線LANの設定を行います 左上のスタートメニューから「設定」を開いて
「接続」タブを選択します 「ネットワークカード」が設定ツールです
WILLCOM03 ネットワーク
アクセスポイントが検出されると 絵のように ESSIDが見えます
これに対して必要な登録を行います
WILLCOM03 アクセスポイント設定1
まず ネットワーク名 として ESSIDが表示されているので正しいことを確認して「次へ」
WILLCOM03 アクセスポイント設定2
次が設定のキモの部分です 「データ暗号化」に WEP を指定して
「ネットワークキー」の部分に WEPキー を入力します
WILLCOM03 アクセスポイント設定3
IEEE802.1xというのは 端末とアクセスポイントの認証方式で
WILLCOM03 はこの機構をサポートしているようです
WLI2-PCI-G54Sは この機構をサポートしてないためか何も設定できません
最後に「完了」を押して設定完了です
WILLCOM03 ネットワーク
DHCPの設定等が正しければ そのうち「接続済」のステータスとなり
めでたくインターネットにつながります WILLCOM03 もうまく接続できました

次に NintendoDS の検証です
ちょうど ファイナルファンタジー3 のソフトに Wi-Fi の設定ツールが付属しているので
それを使ってみます
DS Wi-Fi設定
Wi-Fi設定のトップ画面です 青いパネルをタッチして設定開始します
DS アクセスポイント設定
3箇所まで設定できます 1箇所目の設定をタッチして
「アクセスポイントの検索」をタッチします
DS アクセスポイント選択
ESSID名が表示されアクセスポイントが認識されました これを選択します
続いて WEPキーの入力画面に移りますので WEPキー を入力します
そのまま 接続テスト の画面に移行した後…
DS アクセスポイント設定
こんな画面で 接続失敗となってしまいます
接続確認でエラー 51300 について ネットを検索してみましたが解決には至りませんでした

wlan0 に対して tcpdump を実施しましたが 通信自体が流れていないことが分かりました
無線LAN物理層の設定が悪いのか 任天堂独自プロトコル?? WEPキーの設定のミスでしょうか

後から調べて分かった話ですが
DSでは WEP 128bit/40bit 802.11b 2Mbps で接続しているようです
今回の WLI2-PCI-G54S は 11Mbps(固定?) だったので通信速度が合わなかったと思われます

ちなみに Buffalo社の AOSSという接続の規格がありますが
これは IPで言うところの DHCP に近い機能で WEPの ESSID と キー を自動設定するものです
今回の失敗の件とは直接関係がないと思われます

別の WLI2-PCI-G54S のドライバを試してみます
いろいろ検索して 他のドライバもあたってみましたが 次に紹介するものが私の環境で動作しました
bcmwl5a.inf
bcmwl5.sys
直リンクです(ごめんなさい) 2つのファイルを同じディレクトリにダウンロードして
# rmmod ndiswrapper
# ndiswrapper -r bcmwl5
# ndiswrapper -i bcmwl5a.inf
installing bcmwl5a ...
forcing parameter IBSSGMode from 0 to 2
forcing parameter IBSSGMode from 0 to 2
#
一旦古いドライバを ndiswrapper -r で削除して入れ直しました
# modprobe ndiswrapper
# dmesg
〜
usbcore: deregistering interface driver ndiswrapper
ndiswrapper version 1.52 loaded (smp=no, preempt=no)
ndiswrapper: driver bcmwl5a (Broadcom,12/22/2004, 3.100.46.0) loaded
ACPI: PCI Interrupt 0000:00:08.0[A] -> GSI 16 (level, low) -> IRQ 21
ndiswrapper: using IRQ 21
wlan0: ethernet device **:**:**:**:**:** using NDIS driver: bcmwl5a, version: 0x3642e00, NDIS version: 0x501, vendor: 'NDIS Network Adapter', 14E4:4318.5.conf
wlan0: encryption modes supported: WEP; TKIP with WPA, WPA2, WPA2PSK; AES/CCMP with WPA, WPA2, WPA2PSK
usbcore: registered new interface driver ndiswrapper
とりあえず ドライバはロードできたみたいです
# ifconfig wlan0 192.168.1.1 netmask 255.255.255.0 up
# iwconfig wlan0 mode ad-hoc essid '*******' key s:'*****' commit
# iwconfig wlan0
wlan0     IEEE 802.11g  ESSID:"*******"  
          Mode:Ad-Hoc  Frequency:2.462 GHz  Cell: **:**:**:**:**:**
          Bit Rate=54 Mb/s   Tx-Power:25 dBm   
          RTS thr:2347 B   Fragment thr:2346 B   
          Encryption key:****-****-****-****-****-****-**   Security mode:restricted
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
#
お IEEE802.11gで認識されているではありませんか
ドライバを入れ換えることで 通信規格が選択できるかも(面倒くさいが)
で これは期待できます NitendoDS と通信できるかも で試した結果
Mebius(PC-MV1-C1W) 通信OK
WILLCOM03 つながらない
NintendoDS つながらない アクセスポイントは発見できる
で WILLCOM03 がつながらなかった分さっきよりも結果は悪くなってしまいました
でも確か WILLCOM03は IEEE802.11g サポートされてるはず… ??
結果的に NintendoDS が相変わらず無反応でしたが
とりあえず Linuxで無線LANが使える環境になりました

WILLCOM03の無線機能を ONにしていると明らかに端末が熱をおび
バッテリーを消費してるんだなぁ と分かります 使わない場合は無線機能は OFF にしましょう

WLI-UC-Gドライバの導入

ものの情報によれば
この USBデバイスは Linuxの rt2x00 rt73 ドライバで動作するとのこと
まず Linuxのソースツリーに このドライバがあるか確認してみました
$ cd /usr/src/linux 
$ find . -name '*rt73*'
./drivers/net/wireless/rt2x00/rt73usb.c
./drivers/net/wireless/rt2x00/rt73usb.h
$
$ less drivers/net/wireless/rt2x00/Kconfig

config RT2X00
        tristate "Ralink driver support"
        depends on MAC80211 && WLAN_80211 && EXPERIMENTAL
        ---help---
          This will enable the experimental support for the Ralink drivers,
          developed in the rt2x00 project  http://rt2x00.serialmonkey.com.

          These drivers will make use of the Devicescape ieee80211 stack.

          When building one of the individual drivers, the rt2x00 library
          will also be created. That library (when the driver is built as
          a module) will be called "rt2x00lib.ko".

〜

config RT73USB
        tristate "Ralink rt73 usb support"
        depends on RT2X00 && USB
        select RT2X00_LIB_USB
        select RT2X00_LIB_FIRMWARE
        ---help---
          This is an experimental driver for the Ralink rt73 wireless chip.

          When compiled as a module, this driver will be called "rt73usb.ko".

〜
$
以下の内容が読み取れます
rt73 は rt2x00 に依存している
rt2x00 は MAC80211 と WLAN_80211 と EXPERIMENTAL に依存している

従って カーネルのコンフィグ設定画面では
“Prompt for development and/or incomplete code/drivers” を有効にした上で

カーネルコンフィグ

WLAN_80211 は WLI2-PCI-G54Sの作業のときに有効にしていたので
次は rt73 を有効にします

カーネルコンフィグ

今回の WLI-UC-G の USB上での ベンダID, 製品ID はそれぞれ 0x0411, 0x0137 でした
rt73ドライバが この IDを認識するように追加する必要があります
カーネルソースの drivers/net/wireless/rt2x00/rt73usb.c を書き換えます
2033         /* Billionton */
2034         { USB_DEVICE(0x1631, 0xc019), USB_DEVICE_DATA(&rt73usb_ops) },
2035         /* Buffalo */
2036         { USB_DEVICE(0x0411, 0x00f4), USB_DEVICE_DATA(&rt73usb_ops) },
2037         { USB_DEVICE(0x0411, 0x0137), USB_DEVICE_DATA(&rt73usb_ops) },
2038         /* CNet */
2039         { USB_DEVICE(0x1371, 0x9022), USB_DEVICE_DATA(&rt73usb_ops) },
2040         { USB_DEVICE(0x1371, 0x9032), USB_DEVICE_DATA(&rt73usb_ops) },
2041         /* Conceptronic */
2042         { USB_DEVICE(0x14b2, 0x3c22), USB_DEVICE_DATA(&rt73usb_ops) },
2037行目が今回追加した行です
結果ですが これをビルドしたカーネルで再起動しても 無線LANデバイスは動作しませんでした
(wlan1 として認識はされましたが iwconfig や ifconfig を一切受け付けない)
rt73がうまくいってないのか Linuxカーネルバージョンが古いのが原因なのか
結局 Linuxネイティブ動作はしませんでした
結局 ndiswrapper + Windowsドライバ でまずデバイスが動作するかどうかを試してみます
ドライバCD上 DRIVER/U2SG54HP/Win2000/ にて
# ndiswrapper -i netsg54.inf
# ndiswrapper -l
bcmwl5 : driver installed
netsg54 : driver installed
# 
では もう一度ドライバを読み込みます
# modprobe ndiswrapper
# iwconfig wlan1
wlan1     IEEE 802.11g  ESSID:"WARPSTAR-075A43"  
          Mode:Managed  Frequency:2.432 GHz  Access Point: **:**:**:**:**:**
          Bit Rate=11 Mb/s   Tx-Power:20 dBm   Sensitivity=-121 dBm  
          RTS thr=2347 B   Fragment thr=2346 B   
          Encryption key:off
          Power Management:off
          Link Quality:21/100  Signal level:-82 dBm  Noise level:-96 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
#