FedoraやubuntuなどのLinuxで無線LANカードが認識しなくて困っていませんか?

Linuxのカーネルkernelや"Fedora"や"ubuntu"が対応していなくても大丈夫です。
LANカード、無線LANカードをWindowsドライバで動作させるndiswrapperというツールがあります。

Fedora 11 12 でndiswrapperを使って無線LANを使う方法を紹介します。
Ubuntuでも、カーネルのインストールの部分だけUbuntu用の
インストールをすれば、動作しますので参考にしてください。


この文書を見て分からない部分、
間違いなどありましたら、質問してください。


最新のndiswrapperとFedora14 Ubuntu 10.10の場合は、以下のリンクを参照の事。
ndiswrapper-1.56がコンパイルエラーになる。を解消する。on Fedora 14 (kernel-2.6.35以降)




この文書では、Fedora 11 12 LiveCDのインストール時に
アプリケーションの
インストールをデフォルトのままでで
インストールした場合を想定しています。

無線LANを設定しているときは、

ネットに接続できない可能性もあるので、
このファイルを保存しておくことをお薦めします。


結論を先に書くと、Fedora 7の場合と違って、
そのまま使用しても
ndiswrapperが動作するように進化していました。


ndiswrapperとは?



ndiswrapperとは、


LinuxからNDISの技術を使用できるようにした
モジュール(簡単に言えば部品)です。

NDISとは、ネットワークドライバのインターフェイスです。
(規格と思ったら良いのかな?)

このndiswrapperを使用すると、
Linuxで対応していないネットワークカードでも、
Windowsのドライバを使用して、
Linuxでも該当するネットワークカードを
利用できるようにするツールです。

参考:Ascii IT用語時点 NDIS

1. 準備



使用した無線LANカードと接続環境は以下の通りです。
とりあえず、接続できるようにするため、
暗号化していません。
必要な場合は、

$ su
# /etc/init.d/NetworkManager start

として、NetworkManagerをお使い下さい。
(起動時にNetworkMangerを起動したい場合は、

$ su
# chkconfig NetworkManager on

)

無線LANカード:WLCB-54GT
接続方法:DHCP or 固定IPアドレス(後述)
ESSID:corega
WEP:なし










2. ndiswrapperの導入


2.1 ndiswrapperのダウンロード



ndiswrapperをndiswrapperダウンロードサイトから最新のversionをダウンロードします。

2009年 10月 14日 水曜日 現在、ndiswrapper-1.55.tar.gzです。
2010年 5月 22日 土曜日 現在、ndiswrapper-1.56.tar.gzが最新です。



2.2 ndiswrapperのインストール



2.2.1 開発環境のインストール



ndiswrapperをインストールするための環境を整えます。
ndiswrapperは、ソースコードからコンパイルする必要があるので、
"開発ツール"をインストールします。


$ su
# yum groupinstall "開発ツール"

として、コンパイルができるようにします。

ちなみにこの作業をする事によって、
ndiswrapper以外のアプリケーションをソースコードから
インストールする事が可能になります。

2.2.2 ndiswrapperのインストール



ndiswrapperをインストールします。

手順は、
1. ダウンロードしたファイルを解凍
2. 以前のバージョンのndiswrapperをアンインストール
3. ソースコードをコンパイル
です。


$ cd ~/Download
$ tar xvzf ndiswrapper-1.56
$ cd ndiswrapper-1.56
$ su
# rmmod ndiswrapper
# mkdir -p /root/ndis_old
# mv /etc/ndiswrapper /root/ndis_old
# make distclean
# make distclean
# make distclean
# make uninstall
# make uninstall
# make uninstall


この作業後、
念のためシャットダウン(再起動ではなく!!)して下さい。

(前のバージョンのndiswrapperをインストールしてある場合、
モジュールを外す必要があるが、
ndiswrawpperがクラッシュした場合は外せないため。)

電源が切れたら、
PCの電源をつけてFedoraを起動させます。
ndiswrapperのフォルダに移動し、

$ cd ~/Download/ndiswrapper-1.56
# make install

とすればインストールできます。

途中で
make distcleanmake uninstallを複数回実行している理由は、
アンインストールを確実にするためです。

このアンインストールを完了させておかないと、
ndiswrapperを使用したときにカーネルがクラッシュする場合が
あるので必ず実行しておくこと。


3. ndiswrapperの利用



ndiswrapperのインストールができたので、
Windowsドライバーを使って、ドライバをインストールします。

今回使用したカードの情報

無線LANカード:corega WLCB-54GT
corega サイトhttp://corega.jp/
corega WLCB-54GT のドライバのサイト:http://corega.jp/support/download/wl_adp.htm#wlcb54gt

3.1 Windowsドライバのダウンロード



使用している無線LANカードのドライバをダウンロードします。
Windows98系とWindows2000/XP系とがある場合、
Windows2000/XP系をダウンロードして下さい。

$wget http://corega.jp/support/download/driver/wlcb54gt_202.exe



3.2 lhaのインストール



ndiswrapperをインストールできたので、
Windowsドライバをインストールします。
そのためには、Windowsドライバを解凍する必要があります。

(Windows上で解凍してもいいですが・・・)

大抵のソフトは.lhaか.zipか.exeで配布されています。
.exeはほとんどの場合、zipかlhaで解凍できます。

lhaを使う場合は(使わなくてもインストールした方がいいですが^^; )、
Fedora 11 12では、yumにlhaは含まれていないので
ソースからコンパイルします。


(古いバージョンのFedora Core用のlhaを
インストールできますが、
ライセンス違反なのでやめておきましょう。)


lha本家サイト



3.2.1 ダウンロード


lha本家サイト
から"ダウンロード"をクリック

"lha-1.14i-ac20050924p1.tar.gz"をクリック

もしくは、

$ cd ~/Desktop
$ wget http://keihanna.dl.sourceforge.jp/lha/22231/lha-1.14i-ac20050924p1.tar.gz



3.2.2 lhaのインストール


lhaをインストールするには、

$ cd ~/Desktop
$ tar xvzf lha-1.14i-ac20050924p1.tar.gz
$ cd lha-1.14i-ac20050924p1
$ ./configure
$ make
# make install

とします。


3.3 Windowsドライバの解凍

Windowsドライバを解凍します。
上でも述べたようにドライバのファイルは、
自己解凍ソフトですが、
大抵はlhaなので(それかzip)Linuxでも解凍できます。

3.3.1 lhaで解凍する場合


lhaで解凍する場合は、

$ lha -x wlcb54gt_202.exe
$ lha -x setup.exe
$ ls
setup.exe version.txt wl54cb.sys wlcb54gt_202.exe
utility wl54cb.inf wl54cb5.sys wlsetup.exe

として、解凍します。
今回の無線LANカードでは、
lhaで解凍できました。

3.3.2 zipで解凍する場合


念のため、
zipで解凍する方法を説明しておきます。

$ unzip wlcb54gt_202.exe
$ unzip setup.exe
$ls
setup.exe version.txt wl54cb.sys wlcb54gt_202.exe
utility wl54cb.inf wl54cb5.sys wlsetup.exe

として、解凍します。



3.4 ドライバのインストール


3.4.1 ドライバのインストール手順


ndiswrapperを使って、ドライバをインストールします。
Windows98系とWindows2000/XP用のドライバがある場合は、
Windows2000/XP用のドライバを使用しましょう。

$ su
# /usr/sbin/ndiswrapper -i wl54cb.inf
# /usr/sbin/ndiswrapper -l
Installed drivers:
wl54cb driver installed, hardware present


3.4.2 alternateと表示される



3.4.1でndiswrapper -lとした時に下のように(alternate driver: ドライバ名)
となる場合があります。

$ su
# /usr/sbin/ndiswrapper -l
wl54cb : driver installed
device ((1260:3890) present (alternate driver: prism54)

これは、Linuxカーネルが自動で組み込んだドライバ名です。
つまり、ndiswrapperを使ってカードを認識したのではなく、
他のドライバ(この例の場合はprism54)を使ったという事です。

これを防ぐには、
/etc/modprobe.d/
の以下にndiswrapper_blacklist.conf(名前は任意だが、.confを付けるように)

blacklist prism54

とします。
その上で、4.ndiswrapperをモジュールとして読み込むへお進み下さい。

参考:ndiswrapper本家サイトWiki: Troubleshooting


4. ndiswrapperをモジュールとして読み込む



4.1 起動時に読み込むための設定


起動時にndiswrapperを読み込むために、
以下のコマンドを実行します。

# ndiswrapper -ma

4.2 確認


上でのコマンドが成功しているか確認します。

# cat /etc/modprobe.d/ndiswrapper
alias pci:v00001260d00003890sv00000000sd00001260bc*sc*i* ndiswrapper
alias pci:v00001260d00003890sv0000C104sd00001259bc*sc*i* ndiswrapper
alias pci:v00001260d00003890sv*sd*bc*sc*i* ndiswrapper

上記のように表示されたら、
起動時に読み込むための設定が完了しています。
内容は無線LANカードの種類によって異なります。


4.3 ndiswrapperモジュールの読み込み



モジュールを読み込むために、以下のコマンドを実行します。

# /sbin/depmod -a
# /sbin/modprobe ndiswrapper


ドライバの認識に成功していれば、LEDランプが付いてまた消えます。
Fedora Core ndiswrapper インストール解説サイト


4.4 カードの認識


ファームウェアのバージョンが合っていれば、
ドライバの認識に成功していれば、LEDランプが付いてまた消えます。
さらに、iwconfigを実行すると、

# iwconfig wlan0
wlan0 IEEE 802.11g ESSID:"corega" Nickname:"localhost.localdomain"
Mode:Managed Frequency:2.437 GHz Access Point: 00:0A:79:52:65:40
Bit Rate=54 Mb/s
RTS thr=2432 B Fragment thr=2432 B
Encryption key:off
Power Management:off
Link Quality:100/100 Signal level:-59 dBm Noise level:-256 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0


また、/var/log/messagesには、

# tail /var/log/messages
Mar 20 19:52:20 localhost kernel: pccard: \
CardBus card inserted into slot 0
Mar 20 19:52:20 localhost kernel: ndiswrapper: \
driver wl54cb (corega,10/09/2003, 2.1.15.0) loaded
Mar 20 19:52:20 localhost kernel: PCI:\
Enabling device 0000:02:00.0 (0000 -> 0002)
Mar 20 19:52:20 localhost kernel: ndiswrapper: using irq 9
Mar 20 19:52:22 localhost kernel: wlan0: vendor: 'CG-WLCB54GT'
Mar 20 19:52:22 localhost kernel: wlan0: \
ndiswrapper ethernet device 00:0a:79:5a:30:8b \
using driver wl54cb, 1260:3890:1259:C104.5.conf
Mar 20 19:52:22 localhost kernel:
wlan0: encryption modes supported: WEP; TKIP with WPA; AES/CCMP with WPA


このように、無線LANカードが認識されていて、
ethernet device 00:0a:79:5a:30:8b using driver wl54cb, \
1260:3890:1259:C104.5.confのように、
イーサネットアドレス00:01:79:5a:30:8bが取得できていれば成功である。


5. 接続



右上のPCのアイコンをクリックして、
自分の無線LANのBSIDを選び、
各種セキュリティーに対応した、暗号化されたパスワードを入力してください。


デバイスが認識されたら、普通にネットに接続する設定をするだけです。
一番簡単な方法は、[デスクトップ]→[システム設定]→[ネットワーク]からの設定でしょう。


################### ここまででOK ###############################

念のため、手動で設定する場合を以下に説明します。
DHCPで接続したい場合は、"7.1 DHCP"を、
固定IPアドレスで接続したい場合は、"7.2 固定IPアドレス"
参照してください。
それぞれ、コマンドで接続する方法と設定ファイルによる接続方法を
解説しています。

参考:Fedora ビギナー用

5.1 DHCP


5.1.1 DHCP接続(コマンド編)



接続に、DHCPを使う場合は、

# service NetworkManager stop
# chkconfig NetworkManager off
# chkconfig network on
# service network start
# iwconfig wlan0 essid corega
# dhclient wlan0
Copyright 2004 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/products/DHCP

Listening on LPF/wlan0/00:0a:79:5a:30:8b
Sending on LPF/wlan0/00:0a:79:5a:30:8b
Sending on Socket/fallback
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.11 -- renewal in 103296 seconds.


5.1.2 DHCP接続(設定編)



起動時にDHCP接続されるようにするためには、
/etc/sysconfig/networking/device/if-wlan0に、

DEVICE=wlan0 #無線LANカードの認識カード
ONBOOT=yes
BOOTPROTO=dhcp #DHCP接続なら
TYPE=Wireless
MODE=Managed
ESSID=corega
CHANNEL=6
DOMAIN=
USERCTL=no
PEERDNS=no
IPV6INIT=no
RATE=Auto
HWADDR=00:0a:79:5a:30:8b #イーサネットアドレス
DHCP_HOSTNAME=


DHCPの場合には、BOOTPROTOをdhcpに設定します。
HWADDRには、イーサネットアドレスを登録します。
イーサネットアドレスは、dmesgから取得します。

もし、再起動せずに接続したい場合は、

# ifup wlan0

とします。


5.2 固定IPアドレス


5.2.1 固定IPアドレス(コマンド編)



接続環境は、
IPアドレス:192.168.1.11
ゲートウェイ:192.168.1.1
ネームサーバー192.168.1.1


DNSを設定するために、/etc/resolv.confに、
(resolve.confではなく、resolv.conf)

nameserver 192.168.1.1

とし、

IPアドレスと、ゲートウェイを設定するためには、

# service NetworkManager stop
# chkconfig NetworkManager off
# chkconfig network on
# service network start

# iwconfig wlan0 essid corega
# ifconfig wlan0 192.168.1.11 netmask 255.255.255.0
# route add default 192.168.1.1


で接続可能になります。

5.2.2 固定IPアドレス(設定編)



DNSの登録をするために、
/etc/resolv.confに

nameserver 192.168.1.1

が記述してあるかを確認すること。

起動時に固定IPアドレスで接続されるようにするには、
/etc/sysconfig/networking/device/if-wlan0に、

GATEWAY=192.168.1.1
TYPE=Wireless
DEVICE=wlan0:1
HWADDR=00:0a:79:5a:30:8b
BOOTPROTO=none
NETMASK=255.255.255.0
DHCP_HOSTNAME=
IPADDR=192.168.1.11
DOMAIN=
IPV6INIT=no
ONBOOT=no
USERCTL=no
PEERDNS=yes
ESSID=corega
CHANNEL=1
MODE=Managed


もし、再起動せずに接続したい場合は、
DHCPを使った接続と同様に、

# ifup wlan0

とします。

6. エラーの対処方法



wlan0のカードが他にある場合は、
if-wlan0をif-corega0など、他の名前にし、
ifup if-corega0などとすればOKです。


さらに、wlan0のカードがこの無線LANカードの他にある場合は、
場合によっては、起動時に接続に失敗します。
(僕の環境では)
その場合は、カードを一度抜いて挿入しなおすと、
接続できるます。
コマンドでする場合は、

# ifdown 使用しないカードの設定ファイル
# ifup 使用するカードの設定ファイル

とすれば接続できます。


また、

# ifup wlan0
wlan0 のIP情報を検出中...dhclient(11346) is already running - exiting.
exiting.
失敗

というエラーが出たら、


# killall dhclient
# ifup wlan0

とすれば接続できます。