Ubuntu Weekly Recipe

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

近年のノートPCを利用する場合、無線LAN(Wireless LAN; WLAN)は欠かせないものになりつつあります。UbuntuでももちろんWLANを利用することができます。今回はUbuntuで無線LANを利用する場合に役立つレシピを紹介します。

nm-editor

Ubuntuの標準状態では、通知領域に表示されているネットワークアイコン図1の左端)から、WLANの基本的な設定を行うことができるようになっています。

図1 ネットワークアイコン
図1 ネットワークアイコン

通常はネットワークアイコンを左クリックし、図2のようなアクセスポイントリストを表示させ、接続したいアクセスポイントを選択、ネットワークキーを入力して接続、といった流れで利用することになります[1]⁠。現在ではWEPによる暗号化はほとんど意味がありませんから、通常はWPAを利用することになるでしょう

図2 アクセスポイントのリスト
図2 アクセスポイントのリスト

ネットワークアイコンにはWLAN専用の設定画面が用意されています。ネットワークアイコンを右クリックして表示されるメニューからアクセスできる、⁠Edit Wireless Networks..]⁠nm-editor)がそれです図3⁠。

図3 nm-editorの起動
図3 nm-editorの起動

この設定画面を起動すると、図4のように、過去に接続したことのあるアクセスポイントと、そのBSSID・セキュリティ情報・ネットワークキー(パスワード)を一覧することができます。

図4 nm-editor
図4 nm-editor

ターミナル上で無線LANの状態を確認する(wavemon)

時にはターミナル経由でWLANの動作状況を知りたくなること(何らかの事情でSSHでリモートログインしているマシンでWLAN周りの障害が起きている場合や、あるいはウィジェットとしてWLANの情報を表示するウインドウを作りたい場合などが該当するでしょう)や、より詳細なリンク状況を知りたくなることがあります。

このような場合、wavemonパッケージを利用するのが便利でしょう。wavemonはターミナル上で動作するアプリケーションで、ifconfig・iwconfigで表示される各種情報をリアルタイムで表示することができます。次のコマンドを用いるか、Synapticでwavemonパッケージをインストールしてください。

$ sudo apt-get update
$ sudo apt-get install wavemon

インストール後、⁠アプリケーション⁠⁠→⁠アクセサリ⁠⁠→⁠端末]上でwavemonを実行することで起動できます。wavemonの基本画面は図5のようなもので、WLANのリンク状況・ノイズ情報や入出力の統計、通信状況などを包括的に表示することができます。

図5 wavemonによる各種数値の表示
図5 wavemonによる各種数値の表示

デフォルト設定では画面の更新頻度が100msに設定されていますので、⁠F7]を押し、設定画面で⁠Statistics updates⁠の数値を50ms程度にし、⁠ Save configuration ]しておくと良いでしょう。

再度初期画面(info画面)に戻すには、操作として[F1]を押す必要がありますが、標準の端末(gnome-terminal)を利用している場合、⁠F1]を押すとgnome-terminalのヘルプが起動してしまうはずです。gnome-termianlの[編集⁠⁠→⁠キーボード・ショートカット]を開き、リストの最下部にある「ヘルプ」「目次」への[F1]キーの割り当てを削除してから操作してください(クリックして[BackSpace]を押します⁠⁠。また、⁠F2]を押すことでこれまでの動作のヒストグラムを確認することもできます図6⁠。

図6 wavemonによるヒストグラム
図6 wavemonによるヒストグラム

NDISドライバの利用

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

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

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
参考になるドキュメント

おすすめ記事

記事・ニュース一覧