USB無線LANデバイス WLI-USB-KS11Gドライバの構築
2003.01/26
作業の概要
当該USB無線LANデバイスのドライバは、カーネルのローダブルモジュールとしてインストールします。
ネット上にあるドライバのソースをわずかに修正してからコンパイル、インストールすることで利用可能となります。
なお、旧モデルのWLI-USB-S11は、既に組み込まれていますので、そのままコンパイルしてインストールすれば利用できます。
ソースの取得、修正とインストール
WLI-USB-KS11Gは、Intersil社のPRISM2.5というよく知られたチップが使われています。このチップに対応したドライバは既に配布されていますので、それを利用します。
1.ソースのダウンロード
The linux-wlan(tm) CompanyのFTPサイトの、ここから、最新版のソースを取ってきます。私の取得したものは、2002年12月19日リリースで、2003年1月26日現在も最新の、linux-wlan-ng-0.1.16-pre8.tar.gzです。
なお、下記の改修についてはlinux-wlanに報告する予定ですので、将来的には取り込まれてリリースされるはずです。
2.ソースの修正
ソースを任意のディレクトリに展開します。
展開したソースの、linux-wlan-ng-0.1.16-pre8/src/prism2/driver/prism2sta.cを開き、WLI-USB-S11で検索します。このバージョンでは、448行目に、下記のようなコードがあります。
{PRISM_USB_DEVICE(0x0411, 0x0016, "Melco WLI-USB-S11 11Mbps WLAN Adapter")},
このベンダIDとプロダクトIDをWLI-USB-KS11Gに書き換えます。
{PRISM_USB_DEVICE(0x0411, 0x0027, "Melco WLI-USB-KS11G 11Mbps WLAN Adapter")},
WLI-USB-S11と両方使いたい場合などは、エントリの修正でなく追加でいいかもしれませんが、それでいいのかどうか、ソース上で追跡していません。少なくとも上記のようにエントリの書き換えなら問題なく動きます。
3.make
続いて、linux-wlan-ng-0.1.16-pre8/でmake config、続いてmakeを実行します。
ただし、makeの際に参照するため、現在インストールしているカーネルと同じバージョンのカーネルソースが、/usr/src以下に展開されていなければなりません。なければrpm等でインストールしておきます。
make configでは、PCMCIAカードのPrism2.xドライバ、同じくPLX9052ベースのPCIアダプタドライバ、ネイティブPCIドライバ、USBドライバなどの選択を問い合わせて来ます。必要なものをyで答えますが、私の場合はUSB以外さしあたって不要なので、他のものはすべてnと答えました。
続いてカーネルソースのディレクトリやターゲットインストールの代替root、モジュールディレクトリなどを問い合わせて来ますが、通常はすべてディフォルトで構わないはずですので、単にリターンを入力していきます。
makeについては特に考慮する必要はありません。
ここまでの作業はスーパーユーザでなくても構いません。
4.モジュール等のインストール
スーパーユーザに移行し、linux-wlan-ng-0.1.16-pre8/でmake installを実行します。
これにより、オンラインマニュアル、/etcシステム設定ファイル、カーネルモジュールなどがコピーされます。
/etcファイルについては、configの選択に応じて、以下のものがインストールされます。
/etc/pcmcia:
/etc/wlan:
shared wlan.conf wlancfg-DEFAULT
モジュールファイルは、USBドライバのみ選択の場合で、以下のものがインストールされます。
/lib/modules/2.4.xxxx/usb:
/lib/modules/2.4.xxxx/net:
5.動作の確認
インストールが完了したら、動作の確認をします。この段階では、できれば利用可能な無線LANステーションをWEPなしで受け入れ可能としておきます。後述のように、WEP key暗号化での動作は現状、必ずしもすんなり行かないからです。MACアドレスによる制限はつけておいてもよいでしょう。
まず、USB無線LANカードを差し込みます。
続いて、スーパーユーザで以下のコマンドを入力してみます。
modprobe prism2_usb prism2_doreset=1
wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable
wlanctl-ng wlan0 lnxreq_autojoin ssid=<利用ステーションの ssid> authtype=opensystem
/sbin/dhclient wlan0(redhat系は/sbin/dhcpcd wlan0)
最後のDHCPクライアントの起動は、staticに設定する場合は「ifconfigによるIPの設定〜routeコマンドによるディフォルトGatewayの設定〜/etc/resolv.confファイルによるDNSサーバの指定」という手順に置き換えます。
うまくいけば、これでネットに接続できるはずです。うまく行かない場合は、ifconfigによるwlan0の設定状態確認から始まって、いろいろ調査して行きます。初期の可能性として高いものの一つは、/etc/wlan/wlan.confのChannelListフィールドの設定です。ディフォルトではCH1〜11をサーチしますが、ステーションの設定はディフォルトで14である場合が多いのです。この場合は、下記のように修正します。
(修正前) ChannelList="01:02:03:04:05:06:07:08:09:0a:0b:00:00:00"
↓
(修正後) ChannelList="01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e"
メール
neyubacca@yahoo.co.jp