Ubuntu Weekly Recipe

第23回 無線LAN関連のTips:wavemon・ndiswrapper

この記事を読むのに必要な時間:およそ 3 分

NDISドライバの利用

WLANを利用する場合,場合によってはUbuntuからネットワークカードが認識されず,利用できない場合があります。このような場合,ndiswrapperを用いてWindows用(厳密にはNDIS仕様)のドライバを利用すると良いでしょう。筆者が個人的に所有している,Corega CG-WLCB144GN(チップはAtheros AR5416)の場合の手順を以下に示します。NDISドライバが提供されているなら,ほとんどのカードで同じ手順で利用できるでしょう注2)。

注2)
当たり前の話ですが,メーカー・編集部・筆者ともに,このカードがUbuntu上で利用できることを保証するものではありません。

ndiswrapperのインストール

NDIS仕様のドライバを利用する場合,ndiswrapperパッケージをインストールし,既存のNDISドライバのバイナリを読み込ませる,といった作業が必要になります。このような操作をGUIから行える,ndisgtkパッケージをインストールするのが良いでしょう。ndisgtkパッケージを導入することで,必要な他のパッケージも自動的に導入されます。次のコマンドを用いるか,Synapticでndisgtkパッケージをインストールしてください。

$ sudo apt-get install ndisgtk

Windows向けドライバの入手(Windowsの自己展開形式アーカイブの展開)

次に,NDIS仕様のWindows向けドライバを入手します。CG-WLCB144GNの場合,コレガのWebページから入手することができます。ドライバファイル(wlcb144gn_111.exe)をダウンロードすると困るのが,拡張子がexeであることです。このような場合,fileコマンドで圧縮形式を識別することができます。

$ file wlcb144gn_111.exe 
wlcb144gn_111.exe: MS-DOS executable PE  for MS Windows (GUI) Intel 80386 32-bit, LHa self-extracting archive

LHaの自己展開形式であることが分かりましたから,通常通り展開することでドライバファイルを得ることができます。展開にはlha-sjisパッケージが必要です。

$ lha x wlcb144gn_111.exe

このように,自己展開形式であっても通常のアーカイブと同じように扱うことができます注3)。

また,ファイルを展開した時点で,ドライバの実体が存在するディレクトリを確認しておきましょう。Windowsのドライバは,一般には1つのinfファイルと,1つ以上の.sysファイルで構成されています。このようなドライバパッケージを利用する場合,以下のように.infファイルを検索することで,ドライバが格納されたディレクトリを知ることができるでしょう。

$ find . -name "*.inf"        
./autorun.inf
./installer/driver/cg-wlcb144gn/vista_x64/netathrx.inf
./installer/driver/cg-wlcb144gn/vista_x86/netathr.inf
./installer/driver/cg-wlcb144gn/xp2000/net5416.inf
注3)
ただし,一部のインストーラは,既存のアーカイブと異なる形式を利用しており,展開できないこともあります。Install Shiled形式の自己展開アーカイブなどが該当します。このような場合はWineをインストールし,Wine環境上で実行することで展開できるでしょう。

ndisgtkによる設定

Corega CG-WLCB144GNはUbuntu 8.04では認識されませんので,そのままPCカードスロットに装着しても,次のようなdmesgが出力されるだけです。当然このままでは動作しません。

[ 1284.334307] pccard: CardBus card inserted into slot 0

この状態でndiswrapperの設定を行います。ndisgtkをインストールすると,[システム][システム管理][Windows Wireless Driver]に設定メニューが追加されます。起動すると図7のようなウインドウが開きますので,[Install New Driver]を選択し,さきほどfindコマンドで検索したinfファイルを指定します。

図7 起動直後のndisgtk

図7 起動直後のndisgtk

今回は「xp2000/net5416.inf」を指定し,Windows 2000/XP用ドライバをインストールしました。インストール指定が終わると,図8のようにドライバが認識され,利用できるようになります。以降は再起動後も自動的に認識されるようになります。

図8 ドライバが認識された状態

図8 ドライバが認識された状態

起動後にカードを装着すると,次のようにドライバが認識され,デバイスが設定されるのが見て取れるでしょう注4)。

[  120.455506] pccard: CardBus card inserted into slot 0
[  120.517236] ndiswrapper version 1.52 loaded (smp=yes, preempt=no)
[  120.594869] ndiswrapper: driver net5416 (Corega K.K.,2/13/2007,6.0.2.75) loaded
[  120.595227] PCI: Enabling device 0000:16:00.0 (0000 -> 0002)
[  120.595243] ACPI: PCI Interrupt 0000:16:00.0[A] -> GSI 16 (level, low) -> IRQ 20
[  120.595727] PCI: Setting latency timer of device 0000:16:00.0 to 64
[  121.028725] ndiswrapper: using IRQ 20
[  121.227362] wlan1: ethernet device 00:0a:79:**:**:** using serialized NDIS driver: net5416, version: 0x60000, NDIS version: 0x501, vendor: 'NDIS Network Adapter', 168C:0023.5.conf
[  121.239611] wlan1: encryption modes supported: WEP; TKIP with WPA, WPA2, WPA2PSK; AES/CCMP with WPA, WPA2, WPA2PSK
[  121.242130] usbcore: registered new interface driver ndiswrapper
[  121.274184] ADDRCONF(NETDEV_UP): wlan1: link is not ready
注4)
ただし,ndiswrapperで設定したドライバの多くは,ホットアンプラグ(電源を入れたままのデバイスの取り外し)が行えません。筆者の環境でホットアンプラグを行うと,Kernel Panicが発生します。ホットアンプラグの前に「sudo modprobe -r ndiswrapper」を実行し,ドライバをアンロードしてください。
参考になるドキュメント

著者プロフィール

吉田史(よしだふみひと)

Ubuntu Japanese Team Member株式会社創夢所属。システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。

コメント

コメントの記入