Puppy 4.02でBroadcom製の無線LANチップを使うにあたって

皆さんのパピーの環境を知らせて下さい。
機種、ハード、バージョンなど

モデレータ: 暇人, YoN, nyu

返信する
jake
記事: 403
登録日時: 08/05/05(月) 14:46
お住まい: 滋賀県

Puppy 4.02でBroadcom製の無線LANチップを使うにあたって

投稿記事 by jake »

Puppy 4.02では、Broadcomのチップのためにb43、b43legacy、bcm43xxという3つのドライバが用意されていますが、bcm43xxを使用するにあたっては、同時に必要なファームウェアが自動ではロードされませんでした。それで、Puppy 3.01で使用していたファームウェアをコピーして使用し、暗号化なしとWPAで接続を確認しました。
Broadcom関係のファームウェアの扱いについては著作権が絡んで、慎重になる必要があるのですが、個人が別の目的で使用したファームウェアを個人の使用のためにコピーすることは問題はないと考えています。
桑田政輝
記事: 14
登録日時: 08/09/04(木) 22:13

投稿記事 by 桑田政輝 »

私は普段はKubuntu7.10を次のノートPC環境で利用しています。

PuppyLinux4.00.3JP
DELL Inspiron
CPU:Celeron_M 1.5GHz
MEM:1536MB
HDD:80GB

先日、PuppyLinuxで試してみました。

ごく、普通に起動できたのですが、KNOPPIXなどと比べても非常に軽快で感動しました。

ただし、ひとつだけ問題があります。 :(
それはノートPCに付属の無線カード(チップはBCM4318)ですが、動作が不安定です。ブート後に接続のアイコンでみると無線のチップは認識され、BCM43xxというドライバモジュールもロードされています。スキャンをしてみるとちゃんと無線アクセスポイントも認識されます。

しかし、接続がなかなかできません。暗号化なしの接続(私の場合はFON_FREE_INTERNET)は一度だけ接続できましたが、暗号化(MyPlace)されたアクセスは接続できません。接続経験があるのでファームウェアなどは正しいのではないかと思います。

そのうちスキャンしてもアクセスポイントがみつからなくなります。いまのところリブートしない限り、復旧はできません。

念のためコマンドラインから次のコマンドを実行すると、受け付けますが接続はやはりできません。

iwconfig eth1 essid "MyPlace" key "s:xxxxxxxxxx"

またifconfig eth1 downは受け付けますが、ifconfig eth1 upは拒否されていしまいます。

Ubuntu7.10でもBCM4318チップのファームウェアはなかなか動かず、あちこち探してファームウェアをダウンロードしてやっと接続できたのですが、Puppyでも同じ条件なのでしょうか?

ライセンス関係などはよくわかりませんが、jakeさんの投稿ではファームウェアをご自分でコピーされたようですね?今度時間があるときに試してみます。
jake
記事: 403
登録日時: 08/05/05(月) 14:46
お住まい: 滋賀県

投稿記事 by jake »

Puppy 4.00.3JPのbcm43xxのファームウェアはPuppy 3.01JPのものと同じはずです。(カーネルが同じため)
一度だけ暗号化無しで接続したというのはネットワークウィザードを使用したものでしょうか?私も最初のころはネットワークウィザードを使うことを試みていたのですが、ほとんど接続できませんでした?
暗号化無しのアクセスポイントにコマンド入力で接続するとどうなりますか?
jake
記事: 403
登録日時: 08/05/05(月) 14:46
お住まい: 滋賀県

投稿記事 by jake »

桑田政輝さん さんが書きました:いまのところリブートしない限り、復旧はできません。
確かにそのとおりです。コマンドラインでは、一度、bcm43xxをrmmodするとよいみたいです。ファームウェアが正しくロードされているかどうかは、/lib/firmwareでわかりますが、Puppy 4.003JP(というかkernel2.6.21.7)でプリセット*されているファームウェアは、
bcm43xx_initval01.fw
bcm43xx_initval02.fw
bcm43xx_initval03.fw
bcm43xx_initval04.fw
bcm43xx_initval05.fw
bcm43xx_initval06.fw
bcm43xx_initval07.fw
bcm43xx_initval08.fw
bcm43xx_initval09.fw
bcm43xx_initval10.fw
bcm43xx_microcode2.fw
bcm43xx_microcode4.fw
bcm43xx_microcode5.fw
bcm43xx_pcm4.fw
bcm43xx_pcm5.fw
の15個です。
*bcm43xxのファームウェアをプリセットして配布することは著作権上、問題があるのかも。ユーザーには便利ですが。
桑田政輝
記事: 14
登録日時: 08/09/04(木) 22:13

DELL Inspiron + Puppy + BCM4318

投稿記事 by 桑田政輝 »

暗号化無しの環境で、コマンドライン(iwconfig eth1 essid "FON_FREE_INTERNET")実行すると特にエラーメッセージは出ませんので受け付けているのではないかと思います。このあとiwconfigでみると確かにESSIDは設定されています。

しかし、「ifconfig eth1 up」はやはりエラーになります。また「ifconfig」ではeth1は認識されていません。これでみるとファームウェアが100%対応できていないのでは?と思います。

リブート直後にウイザードでSCANするとアクセスポイントは検知できるのですが、なかなかうまく接続できません。そのうちSCANもできなくなります。

同じPCにインストールしているKubuntu7.10では問題なく認識されてアクセスもできるのですが。ファームウェアもご指摘の15種類のものが/lib/firmwareに入っています。Kubuntuではさらに2つのファームウェアが追加されていて17種になっています。念のためこれもPuppyに追加してみましたが、現象は同じようです。

う〜ん、なぜかなあ?

とりあえずいろいろとトライしてみます。
桑田政輝
記事: 14
登録日時: 08/09/04(木) 22:13

DELL Inspiron + Puppy + BCM4318

投稿記事 by 桑田政輝 »

その後、いろいろと試してみましたがまだ完全には安定接続はできません。

しかし、不安定ながらときどき接続できるケースがありました。

1。rmmod bcm43xx で一度モジュールをアンインストールします。そのあと”接続アイコン”でbcm43xxモジュールを再度ロードします。

2。端末から次のコマンドを入力します。(xxxxxxxxxxはWPAキーです)

iwconfig eth1 essid "MyPlace" key "s:xxxxxxxxxx"
/usr/sbin/wpa_connect.sh eth1 wext

3。この時点で接続はできたようです。iwconfigで見るとLink Qualityが弱いながらもあります。接続できない時はこのレベルはゼロです。ここ”接続アイコン”でDHCPを実行するか、端末で"dhcpcd eth1"を入力する。

以上の方法でかなりの確率で接続できるようになりました。このレポートもこうやって接続したPuppyから書いています。

ただし、上記のコマンドを/etc/rc.d/rc.localに書いてもうまくいきません。
不思議ですねえ?
:(
jake
記事: 403
登録日時: 08/05/05(月) 14:46
お住まい: 滋賀県

Re: DELL Inspiron + Puppy + BCM4318

投稿記事 by jake »

桑田政輝さん さんが書きました:端末から次のコマンドを入力します。(xxxxxxxxxxはWPAキーです)

iwconfig eth1 essid "MyPlace" key "s:xxxxxxxxxx"
/usr/sbin/wpa_connect.sh eth1 wext
お使いの暗号化はWEPですか?WPAですか?
WEPなら、

コード: 全て選択

/usr/sbin/wpa_connect.sh eth1 wext
は不要です(/etc/wpa_supplicant.confが必要)し、WPAなら

コード: 全て選択

iwconfig eth1 essid "MyPlace" key "s:xxxxxxxxxx"
は不要です。
桑田政輝
記事: 14
登録日時: 08/09/04(木) 22:13

コマンドラインでBCM4318を接続させました

投稿記事 by 桑田政輝 »

FONのWIFIルータを利用しているので、暗号化はWPA/TKIPです。

WPAの時には次のコマンドラインは不要なのでしょうか?

iwconfig eth1 essid "MyPlace" key "s:xxxxxxxxxx"

これを利用しないとESSIDやWPAキーを設定できないのではないかと思うのですが?

ちなみに前回のように、一度モジュールをはずして再度ロードした後、次のコマンドラインを入力して接続できました。

iwconfig eth1 essid "MyPlace" key "s:xxxxxxxxxx"
/usr/sbin/wpa_connect.sh eth1 wext
dhcpcd eth1

また、WPAキーの設定状況を確認してみましたが、”接続”アイコンではどうしてもWPA/TKIPのキーが設定できません。ワイアレスの設定ではエラーが出ずに完了したように見えますが、iwconfigコマンドで確認するとWPAキーは設定されていません。

念のため何度か試してみましたが、いつも同じ結果です。しかし、BCM43xxモジュールを再ロード後に上記のコマンドラインを入れると正しくWPAキーが設定されます。一旦正しくキー設定できると、接続はほぼ確実にできます。ただし、IPアドレスがとれていない場合があるので、DHCPの実行が必要な時もあります。

それで現在は次のスクリプトを用意して端末から起動しています。これで安定して接続できています。時々DHCP取得に失敗しますが、そのときは”接続”アイコンからDHCPを実行してカバーしています。

#-----------------------
rmmod bcm43xx
insmod /lib/modules/2.6.21.7/kernel/drivers/net/wireless/bcm43xx/bcm43xx.ko
iwconfig eth1 essid "MyPlace" key "s:xxxxxxxxxx"
/usr/sbin/wpa_connect.sh eth1 wext
sleep 10
dhcpcd -k eth1
dhcpcd eth1
#-----------------------

また、/etc/eth1wirelessというファイルにはiwconfigでESSIDやWPA-KEYを設定しているコマンドが記述してありましたので、ここに/usr/sbin/wpa_connect.sh eth1 wextを追加してみたところ、ブート後にしばらくして(端末でifconfigコマンド入力してIPアドレスなどの変動を見ていた)自動的に接続されるようになりました。

なお、フォーラムを調べてみたら、動作実績の135番の報告に私と同じようなケースがありました。
http://openlab.ring.gr.jp/puppylinux/dosa2.html

また、昨年の暮れにUbuntu7.10でBCM4318を利用しての接続時にも同じ様な現象があって、そのときもwextをWPA-Driverとして指定していました。

とりあえずBCM4318での安定接続ができるようになりました。
いろいろとアドバイス有難うございました。
jake
記事: 403
登録日時: 08/05/05(月) 14:46
お住まい: 滋賀県

投稿記事 by jake »

だいぶ、改善したようでなによりです。

コード: 全て選択

iwconfig eth1 essid "MyPlace" key "s:xxxxxxxxxx"
essidとWPAキーは/etc/wpa_supplivant.confに書かれています。/usr/sbin/wpa_connect.sh ...では、これにアクセスして読み込みます。
WPAキーの設定状況を確認してみましたが、.......ワイアレスの設定ではエラーが出ずに完了したように見えますが、iwconfigコマンドで確認するとWPAキーは設定されていません。
iwconfigで表示されるWPAキーは通信に使われているものです。接続できていないとキーは表示されません。ネットワークウィザードで接続が完了したように見えても、実は接続ができていない(DHCPがとれてない)のです。DHCPをとり始めてから30秒経過しても反応がなかったら接続は失敗したと見てまちがいないでしょう。DHCPが取れたかどうかは、/var/runとか/var/lib/dhcpcdを見ればわかります。接続に失敗したときなどは、前の接続で使用したDHCP関連のファイル(3つ)が邪魔をするので再接続する前に削除しておくとよいと思います。
ときどき、DHCPが取れないことがあるということですが、先の/etc/wpa_supplivant.confに、ap_scanという項目があるのですが、初期値はこれが2となっていますが、1とすることによって改善することがあります。
桑田政輝
記事: 14
登録日時: 08/09/04(木) 22:13

BCM43xx 最新の構成

投稿記事 by 桑田政輝 »

どうも有難うございました。

いろいろと試して見ましたが、完全に安定した接続のためには次のコマンドラインを実行するのが確実なようです。

rmmod bcm43xx
insmod /lib/modules/2.6.21.7/kernel/drivers/net/wireless/bcm43xx/bcm43xx.ko
iwconfig eth1 essid "MyPlace" key "s:xxxxxxxxxx"
/usr/sbin/wpa_connect.sh eth1 wext
sleep 10
dhcpcd -k eth1
dhcpcd -n eth1

興味本位でwextオプションについて調べてみたら、Debian系のパッケージではBCM43xxではデフォルトのドライバなので指定されなければ自動的に使われるという表現がいくつかのフォーラムにありました。

しかし、私の経験ではUbuntu(7.10/8.04)でも明示的にwextを指定しないと動作しませんでした。

2008/09/14追記
現在は上記コマンドラインを/etc/rc.d/rc.localに追加してあります。これでブートアップ後に安定して接続されるようになりました。
返信する