« K100D 手ブレ補正実験2 | Main | ASAKUSA »

October 11, 2006

FC5地獄の一丁目:無線LANの罠

00

 てなわけでFedora Core 5をWindows並に使えるようにするため、試行錯誤中です。今回は特にLANを内蔵していないThinkpad i1124のためにも無線LANカードを使いたいと思い、FC5にBUFFALOのメジャーな無線LANカードWLI-CB-G54を認識させる事に挑戦。これが思った以上に大変でした。今後はFCも様々な無線LANカードを標準で使えるようにするとは思いますが、現状のFC5ではLinux初心者にはものすごく高いハードルなのでした。(一応、ノートPC内蔵でBIOSからドライバが仕込まれる無線LANには対応しているみたいですが、ようわからんです。)

 Googleで色々調べるとWLI-CB-G54の接続方法が結構見付かり、ndiswrapperというソフトでWindows用のLANカードドライバを動かすのが一般的との事。ここからが苦悩の日々の始まりでした。結局無線LANカードが使えるようになるまで5日以上かかりました。備忘録の意味も込めて自分のようなLinux初心者でもわかるように細かく手順をまとめてみます。(今回は色々試して成功したndiswrapper-1.23を使用しています。動かない場合は色々なバージョンを試してみることも必要でしょう)

 一応、今回接続が成功した環境を確認しておきます。
Fedora Core5 バージョン:2.6.17-1.2187_FC5
ndiswrapper-1.23
無線LANカード:BUFFALO WLI-CB-G54、同WLI-CB-AG54
Windows用ドライバ:BUFFALO wdrv_830.exe中のnetcbg54.inf
動作確認機種:Thinkpad 240Z,X24,A20p等

注1)ndiswrapperのコンパイルが必要になるので事前に開発ツールのパッケージをインストールしておくこと(FC5のインストール時に選択しておくのが望ましい)
注2)事前にyum -y updateなどでシステムをアップデートしておくこと。これをしないとバージョンの問題でndiswrapperがコンパイルできないようです。(10月18日付記)

1.ndiswrapperのソースのダウンロード

 インターネットに接続できる状態でブラウザを起動してndiswrapperの開発ページでstableの1.23を開き、ndiswrapper-1.23.tar.gz をクリック。

01_3
▲ndiswrapper-1.23は下のほうにあるので、スクロールダウンして表示

 縁起物なのでIshikawa,JapanのDownloadをクリック。少し待つとダイアログが出るのでアプリケーションで開く:書庫マネージャ(既定)を選んでOKを押す。

02_3
▲ダウンロードマネージャでダウンロード

 ダウンロードマネージャのダイアログに続いてndiswrapper-1.23.tar.gzのダイアログが出るので、上のほうにある展開ボタンをクリック。ダイアログが出るので、右下の展開ボタンを押す。

03_2
▲そのまま展開

 これで/tmp上にndiswrapper-1.23というフォルダが生成されて、そこに中身が展開されます。


2.ndiswrapperのコンパイル

 初心者泣かせの第一の難関。カーネルのソースはKFCのカーネル・サンダースが作ったオリジナルソースではありませんなどとブリザード級の寒い親父ギャグをかましたくなるくらい最初、困った。Googleで色々検索して、以下の手順でクリアしました。

 まずGNOME端末を起動してrootになり、ndiswrapper-1.23のディレクトリに行く。

[xx@localhost ~]$ su -
パスワード(P):(パスワード入力)
[root@localhost tmp]# cd /tmp/ndiswrapper-1.23

 FedoraCoreを普通にインストールしたままの状態だと、ここでmakeしてもソースが無いと怒られます
[root@localhost ndiswrapper-1.23]# make distclean
[root@localhost ndiswrapper-1.23]# make
(中略)
Can't find kernel build files in /lib/modules/2.6.17-1.2187_FC5/build;
give the path to kernel build directory with
KBUILD= argument to make
(後略)

 ここで yum -y install kernel-develと入力。使用しているバージョンのカーネルのソースが勝手にダウンロード・インストールされる(らしい)
[root@localhost ndiswrapper-1.23]# yum -y install kernel-devel
 しばらくするとダウンロード・インストールが完了するので、もう一度同ディレクトリ上でmakeし、make installします。

[root@localhost ndiswrapper-1.23]# make distclean
[root@localhost ndiswrapper-1.23]# make
[root@localhost ndiswrapper-1.23]# make install

 今度は目出度くコンパイルが始まります。
途中で、ndiswrapperを使おうとする誰もがハマるらしい、有名な警告が出ますが、コンパイルはできます。
*** WARNING: This kernel seems to use 4K stack size option (CONFIG_4KSTACKS); many Windows drivers will not work with this option enabled. Disable CONFIG_4KSTACKS option, recompile and install kernel
 この警告が出た場合、カーネルの再構築をやらなければならないそうですが、なんか難しそう&面倒くさそうなんで今回はパス。結論を言うとカーネルの再構築をしなくてもndiswrapperで無線LANが使えました。情報源は大変有り難いこちらのページです。

 ここでndiswrapperが生成、インストールされているかどうかを確認。ndiswrapperと入力するとオプションのリストが出てきます。ちなみに、このバージョンではドライバーをはずすのに-eを使いますが、1.24以降は-rを使うように変更されたようです。
[root@localhost ndiswrapper-1.23]# ndiswrapper
Usage: ndiswrapper OPTION
Manage ndis drivers for ndiswrapper.
-i inffile Install driver described by 'inffile'
-d devid driver Use installed 'driver' for 'devid'
-e driver Remove 'driver'
-l List installed drivers
-m Write configuration for modprobe
-da Write module alias configuration for all devices
-di Write module install configuration for all devices
-v Report version information
where 'devid' is either PCIID or USBID of the form XXXX:XXXX


3.LANカードのWindows用ドライバをダウンロード、解凍

 Linuxを使う日本人ならまず見るだろう、大変役立つ記事満載の@IT のLinux Tipsのこの記事に従い、バッファローのWLI-CB-G54のドライバを使用して、bwcdrv.sysを削除して使うという方針で行きます。

 とりあえず下記ページから最新ドライバーファイルをダウンロード。
http://buffalo.jp/download/driver/lan/wdrv.html
(↓ドライバー直リン)
http://www2.melcoinc.co.jp/pub/lan/wdrv_830.exe

05_1

 ダウンロード先にディレクトリを移し、lhaで解凍します。今回はデスクトップ上にダウンロードされているので、/home/ユーザー名/Desktopに移動。
[root@localhost tmp]# cd /home/ユーザー名/Desktop
 ここでlha xでwdrv_830.exeを実行、解凍したいのだが、lhaをインストールしていない場合は当然実行できないので、インストールしておく。自分の場合はGNOMEに追加したyum extenderからインストールをクリックしてlhaを検索、キューに入れてキューを処理でインストールしました。

06_1
▲lhaがインストールされていない場合はインストールする

[root@localhost Desktop]# lha x wdrv_830.exe
で中身が解凍され、ディレクトリwdrv_830ができるので、目的のドライバ情報netcbg54.infがあるディレクトリまで移動しておきます。
[root@localhost Desktop]# cd wdrv_830/cbg54/win2000
 一応、lsで中身を確認しておきましょう。
[root@localhost win2000]# ls
bcm43xx.cat bwcdrv.cat bwcinst.dll mdriver netbwc2k.inf netg54s.inf
bcmwl5.sys bwcdrv.sys bwcsrv.exe net2pg54.inf netcbg54.inf


4.ドライバのインストール

 いよいよ初心者にとって最大の難関、ndiswrapperによるドライバインストールです。まず無線LANカードWLI-CB-G54をPCIスロットに差し込み、念のため認識チェック。
[root@localhost win2000]# lspci
(中略)
01:00.0 Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03)

 とりあえず、インストールを試みる。
[root@localhost win2000]# ndiswrapper -i netcbg54.inf
Installing netcbg54
Forcing parameter IBSSGMode|0 to IBSSGMode|2
Forcing parameter IBSSGMode|0 to IBSSGMode|2
[root@localhost win2000]# ndiswrapper -l
Installed drivers:
netcbg54 driver installed, hardware present

 次に@ITのLinux Tipsの記事に従い、
[root@localhost ~]# rm /etc/ndiswrapper/netcbg54/bwcdrv.sys
rm: remove 通常ファイル `/etc/ndiswrapper/netcbg54/bwcdrv.sys'? でyを押してリターン、bwcdrv.sysを削除します。

 と、ここまではうまく行っているようですが・・・
[root@localhost win2000]# modprobe ndiswrapper
とモジュールを組み込んでもLANカードのランプはつきません。(成功すると、ここでPOWERランプが点きます。)
 とりあえず、一回組込みを解除します。
[root@localhost win2000]# modprobe -r ndiswrapper

 ここで、これが最大のキモですが、前出のページに従い、起動時にインストールされている、bcm43xxというモジュールをはずします。

[root@localhost win2000]# rmmod bcm43xx
[root@localhost win2000]# modprobe ndiswrapper

06b

 ここで無線LANカードのPOWERランプが点けば成功です。あとは次回以降の起動用に以下のコマンドを打っておきます。
[root@localhost win2000]# ndiswrapper -m


5.GUI上でネットワークの設定

 無線LANカードのPOWER LEDさえ点いてくれたら、もうこっちのもんです。最初、GNOME端末からiwconfigを使ってキー等を設定してみたのですが、途中で間違えたのかどうもうまくいかず、GNOMEのメニューからデスクトップ→管理→ネットワークと選んで、rootのパスワードを入力し、LANの設定をしました。
 ダイアログの新規ボタンをクリックして、デバイスタイプの選択でワイヤレス接続を選び、SSIDと鍵(キー)をセット。デバイスタブでwlan0にチェックを入れて選択した状態で右上の起動ボタンをクリック。これで無事にwlan0が起動すればOKです。

07_1
▲新規ボタンをクリック

08_1
▲ワイヤレス接続を選択

09_1
▲そのまま進む

10_1
▲無線ルータで設定しているSSIDとキーを設定

11_1
▲そのまま進む

12
▲wlan0が作成されたのを確認したらプロファイルにチェックを入れて起動ボタンを押す

 そしてこれが非常に重要なのですが、デバイスタブに表示されているwlan0をダブルクリック(または選択状態で編集ボタン)で表示されるワイヤレスデバイス設定ダイアログで
□全般タブのコンピュータの起動時にデバイスを起動
□全てのユーザにデバイスの有効化と無効化を許可
□このインターフェイス用にIPv6の設定を有効にします

のチェックボックスにチェックを入れておきます。(3つめの奴だけでもいいのかもしれませんが)これにチェックを入れておかないと、次回起動時以降、LANカードを入れるとハングアップ(フリーズ)するようになります。(カードを抜けば動きだします)

13
▲先ほどの画面でwlan0をダブルクリックまたは選択して編集ボタンを押してワイヤレスデバイス設定ダイアログを出し、上の3つの項目にチェックを入れる

これ、結構はまりました(^^;起動時にWlan0のチェックが失敗し、そのまま次のチェックに行けば正常です。
 最初、全部にチェックを入れないでも起動できたんですが、カードを抜き差しするとフリーズするようになりました。結局チェックを入れておくほうが無難なようです。

6.起動時に認識するようにスクリプトを追加

 /etc/rc.d/のrc.localというファイルが起動時に実行されるスクリプトファイルらしいので、これをエディタで開き、コマンドを追加。これで次回起動時より、LANカードがささっていれば自動的にLANに継ります。

[root@localhost ~]# cd /etc/rc.d
[root@localhost rc.d]# vim rc.local

とvimでrc.localを開き、iを押してインサートモードにして、最後の行に
/sbin/rmmod bcm43xx
modprobe -r ndiswrapper
modprobe ndiswrapper
の3行を追加、エスケープキーを押して:wqと入力してエディタvimを終了。
(このファイルには一字一句正確に書かないとトラブルの素になるので、慎重に)
2行目はもしかするといらないかもしれませんが、縁起物ということで一応いれておきました。

(自信が無い場合は上記のファイルを変更しないで、再起動後に手入力で上の3行を打って動作を確認してからのほうが良いかもしれません。)
 あとは最初にささっていたLANケーブル(インターネットに接続していた環境)を外し、無線LANカードを挿したまま再起動して、LAN上の他のパソコンに繋いでみたり、LAN経由でインターネット接続している場合はFireFoxブラウザでWEB上のホームページが表示されるかどうか確認してみましょう。

なお、起動時、wlan0の活性化に失敗してすぐに次のチェックに行けば成功です。もし、そこで止まったままになったらLANカードを引き抜けばとりあえず続行します。FC5が起動したら再度root権限でGNOMEメニューからネットワーク設定を選んでwlan0の行をダブルクリックし、「□全般タブのコンピュータの起動時にデバイスを起動、□全てのユーザにデバイスの有効化と無効化を許可、□このインターフェイス用にIPv6の設定を有効にします」の3つにチェックが入っているかどうか確認します。入っていない場合はカードを挿した時のみフリーズするようになりますので、必ずチェックを入れるようにします。

 以上でなんとかFC5でWLI-CB-G54が使えるようになりました。はぁ、疲れた。このあたりはやはり最初からドライバが用意されているWindowsに比べて鬼のように大変です。今後は最初からLinux対応を謳っている無線LANカード(Corega等が対応しているらしい)を買うのも一つの手ですね。

 ちなみに上の動作環境でも書きましたが、WLI-CB-G54だけでなく、WLI-CB-AG54もこのままで動きます。AG54は情報を探すとDELLのR74092us.EXEというパッケージに含まれるbcmwl5aというドライバが使えるとの事だったので、試してみたのですが、エラーが出て組み込めませんでした。だめもとでG54のドライバを組み込んだ状態でそのまま挿して再起動してみたら普通に動いたのでかなり嬉しかったです。

【10月14日追記】
 うーん、なぜかノートPCのバッテリーのみで起動するとネットワークのところでフリーズしますね。その状態だとLANカードを挿すと必ずフリーズ。(Thinkpad 240Zで確認)
 とりあえず電源ケーブルを付けて起動しさえすればあとはケーブルを抜いてバッテリー稼働だけでも大丈夫なので、解決方法が見付かるまではこの方法でしのぐことにしますか_| ̄|○

|

« K100D 手ブレ補正実験2 | Main | ASAKUSA »

Comments

まとめていただいた情報で無事無線LANを使えるようになりました!!
わたしの場合、Fedora Core 6に、WLI3-CB-G54Lです。
これに、ndiswrapperの1.41で実行しました。
ドライバは、Acerのものを下記サイトを参考に入れました。
http://kmuto.jp/open.cgi?%CC%B5%C0%FELAN%C6%B0%BA%EE%BE%F5%B6%B7
これで眠れます :-)

Posted by: ぞの | June 10, 2007 at 03:35 AM

>ぞの さん

コメント、ありがとうございます。
お役にたてたようで、とても嬉しいです。
また、貴重な情報、ありがとうございました。

FedoraCoreも将来バージョンが進んで、どんなカードでも自動認識してくれるといいんですが、現状ではなかなか難しいですね。とにかくカーネルのバージョンが上がっただけで再コンパイル……というプロセスだけはなんとかならんものかと(^^;

 また、GNOME等XWINDOWは3次元表示なんてどうでもいいので、VISTAと逆に軽く速い方向に進んでくれると嬉しいです。あとFireFoxも……。現状、XPより重いですから……

Posted by: いしだ | June 10, 2007 at 06:35 AM

ここで yum -y install kernel-develと入力。使用しているバージョンのカーネルのソースが勝手にダウンロード・インストールされる(らしい)
[root@localhost ndiswrapper-1.23]# yum -y install kernel-devel
 しばらくするとダウンロード・インストールが完了するので、もう一度同ディレクトリ上でmakeし、make installします。

[root@localhost ndiswrapper-1.23]# make distclean
[root@localhost ndiswrapper-1.23]# make
[root@localhost ndiswrapper-1.23]# make install

make あたりで、エラー1とかが出て先へ行けません。
わかりやすい語りでそこまですいすいだったのですが、
残念無念です。

Posted by: kunio-watanabe | September 28, 2007 at 07:46 PM

>kunio-watanabe さん

お返事が激しく遅れてすみません(^^;

とっくに解決されているかもしれませんが(^^;
私もLinuxについてはよくわからないので、お力にはなれませんが、カーネルのmake失敗についての記事は検索すると大量に出てくるので、ご利用の環境に沿った解決ほうがあるかもしれませんね。

Posted by: いしだ | November 11, 2007 at 10:11 PM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/84881/12233993

Listed below are links to weblogs that reference FC5地獄の一丁目:無線LANの罠:

« K100D 手ブレ補正実験2 | Main | ASAKUSA »