01 December 2009

Ubuntu 9.10で無線LANアダプタWLI-CB-AMG54を使う

20091201-ubuntu-wlan.png

WLI-CB-AMG54をPCMCIAスロットに差し込むと、/var/log/messages や /var/log/dmesg にログが書き込まれる間もなく、フリーズする。標準のカーネルドライバでうまくいかない場合の対処方法メモ。

この無線LANアダプタはAtheros AR5212チップを用いているので、まず、Atheros用のカーネルモジュールの読み込みを阻止する。

/etc/modprobe.d/blacklist-ath_pci.conf

blacklist ath_pci
blacklist ath5k ← この行を追加
blacklist ath9k ← この行を追加

ここで、PCを再起動。

無線LANアダプタをPCMCIAスロットに差し込んで、ハードウエアの認識状況を確認。標準のカーネルモジュールはath5kとなっている。


root@p1w:~# lspci -v

~ 他のデバイスの表示を省略 ~

0a:00.0 Ethernet controller: Atheros Communications Inc. Atheros AR5001X+ Wireless Network Adapter (rev 01)
Subsystem: Melco Inc Device 033b
Flags: medium devsel, IRQ 20
Memory at 50000000 (32-bit, non-prefetchable) [disabled] [size=64K]
Capabilities: [44] Power Management version 2
Kernel modules: ath5k

ndiswrapperのインストール


root@p1w:~# apt-cache search ndiswrapper

linux-image-2.6.31-14-generic - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-14-generic-pae - Linux kernel image for version 2.6.31 on x86
linux-image-2.6.31-302-ec2 - Linux kernel image for version 2.6.31 on x86/x86_64
ndisgtk - graphical frontend for ndiswrapper (installation of Windows WiFi drivers)
ndiswrapper-common - ndiswrapper 用ユーティリティの利用に必要な共通スクリプト
ndiswrapper-utils-1.9 - Userspace utilities for the ndiswrapper Linux kernel module

root@p1w:~# apt-get install ndiswrapper-common

root@p1w:~# apt-get install ndiswrapper-utils-1.9

無線LANアダプタ製造メーカのホームページ『 BUFFALO Wireless LAN Driver Disk Ver.10.52(2008年8月5日掲載)』より、Windows用ドライバをダウンロードして解凍。(個人的にこのサイト内にバックアップ(wli-cb-amg-win2kdrv.tar.gz)を保管)

Windows2000用ドライバをインストールする。


root@p1w:~# wget http://buffalo.jp/php/ldl.php?to=secure%2Flan%2Fwdrv-1052.exe....

root@p1w:~# lha x wdrv-1052.exe.....exe

root@p1w:~# cd wdrv-1052/cbamg54/win2000/

root@p1w: win2000# ndiswrapper -i netamg54.inf ← ドライバのインストール

root@p1w: win2000# ndiswrapper -l ← インストール状況の確認
netamg54 : driver installed
device (168C:0013) present (alternate driver: ath5k)

ドライバのファイルは、/etc/ndiswrapper/netamg54/ にコピーされる。

(再起動を行わないで) この状態で、無線LANアダプタが機能するか、確認してみる。


root@p1w:~# depmod -a

root@p1w:~# modprobe ndiswrapper

root@p1w:~# lsmod|grep -e ndiswrapper
ndiswrapper 185404 0

この状態でPCを再起動すれば、モジュールを再び手動で読み込む ( modprobe ndiswrapper ) 必要がある。起動時に自動的にモジュールを読み込ませるために、自動起動ファイルを作成する。


root@p1w:~# ndiswrapper -m
adding "alias wlan0 ndiswrapper" to /etc/modprobe.d/ndiswrapper ...

root@p1w:~# cat /etc/modprobe.d/ndiswrapper ← 念のため、内容を見てみる
alias wlan0 ndiswrapper

さらに、/etc/modulesに起動時ロードの設定を行う
/etc/modules

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

lp
ndiswrapper ← この行を追加する

■ WPA認証エラーが起こる場合

WPA認証でエラーが起こり、/var/log/messages に次のようなメッセージが延々と吐き出されて、接続できない場合…


Dec 3 07:19:17 p1w kernel: [ 258.950199] ndiswrapper (iw_set_auth:1602): invalid cmd 12
Dec 3 07:19:31 p1w kernel: [ 273.187877] ndiswrapper (iw_set_auth:1602): invalid cmd 12
Dec 3 07:20:33 p1w kernel: [ 334.379670] ndiswrapper (iw_set_auth:1602): invalid cmd 12
Dec 3 07:21:06 p1w kernel: [ 367.670826] ndiswrapper (iw_set_auth:1602): invalid cmd 12
Dec 3 07:21:49 p1w kernel: [ 411.235245] ndiswrapper (iw_set_auth:1602): invalid cmd 12

いまのところ、この問題を回避できるndiswrapperは提供されていないため、自分でソースコードにパッチを当てる必要があるようだ。
詳しくは…
Ubuntu Bug #459716 : encrypted modes don't work on ndiswrapper wireless adapters
Ubuntu [SOLVED] Fixing ndiswrapper invalid cmd 12


■ 参考資料
@IT:LinuxでWindows用無線LANドライバを利用するには
Ubuntu Document - WifiDocs Driver Ndiswrapper
Ubuntu日本語フォーラム : 初心者サポート WLI-PCM-L11GPで無線LAN接続はできます
Ubuntu日本語フォーラム : 初心者サポート madwifiについて
Ubuntu Tips/ハードウェア/Ralink RT2500系の WLANカードを使うには(ndiswrapper の使用例)

■ 過去の記事
Fedoraで無線LANカード WLI-CB-AMG54を使う設定