無線LANカード(Intersil prism)

長いトラブル解決がやっと終わった。コトの発端は、ThinkPad X23をヤフオクでゲットしてからだった。ちょい古いノートPCを仕入れてLinux専用のノートにする、なんてエンジニアだったらやりたいことだと思う。無線LANはLinuxでは繋がりにくいとされているようだ。

今回、私がゲットしたノートPCは、前使用者があまり使っていなかったらしくキーボードのいたみも少なかったのはよかったが、PCのFirmwareもあげていない代物だった。IBM(現Lenovo)のサイトにあるBIOSのFirrmwareをあげるプログラムはFDにDOSイメージを作るものだったので、別段、OSもなくすんだ。

ところが、搭載されている無線LAN(High Rate Wireless LAN Mini PCI Combo Card)ってヤツが曲者で、X23になにも考えずにLinux Debian(Etch)を導入して、メッセージを見ると、

wifi0: defaulting to host-based encryption as a workaround for firmware bug in Host AP mode WEP

というメッセージが出て、SSIDは受信できるが、キーを送出できないらしく無線LANが繋がらない。インターネットを調べまくると、どうもこのカードはIntersilのPrismというチップを使っており、そのドライバーとしてhostap_pci, orinoco_pci, prism2_pciというものが存在するらしい。workaround(回避策)はあまり期待できず、グルは「とにかくFirmをあげろ!」と書いておられるので、そのためだけにWindowsをインストールして、Firmアップデートソフトを走らせるた。(IBM謹製eFLASHタイプとかいうヤツ) と、一時的にPC DOS2000が走るではないか。なんだよぉ?。DOS版も作っといて欲しいなぁ。。。。とほほ

まぁ、よくがんばった、これで完了だろう、とばかりに再びLinux Debian(Etch)を導入する。すると、今度は、
wifi0: defaulting to host-based encryption as a workaround for firmware bug in Host AP mode WEP
wifi0: defaulting to bogus WDS frame as a workaround for firmware bug in Host AP mode WDS
wifi0: Warning: secondary station firmware version 1.4.2 does not seem to work in Host AP mode

なんと、secondary stationとかいうヤツがハングしてる、と怒られてしまった。
ネットをいろいろ探していると、こういう神のサイトを発見した。

Mini-howto on Flashing Intersil Prism Chipsets

このサイトはhostapの元開発者が運営しており、IntersilのPrismはバグを含んでいるとはいえ、大量に使われているのでサポートしてくれているのだ。firmは二種類必要だということも、ここで知った。もちろんIBMの片手落ち保守方式は載っておらず、DOS,Windows,LinuxでFirmをあげる方法が掲載されている。いろんな人の体験レポートも満載で、ThinkPad X24でsf010804.hexとPK010101.HEXの組み合わせでうまくいったという情報を得た。

私はどうしてもDOSでfirmwareをアップデートしたかった。というのも、LinuxでFirmを扱ったことがない。ご存知のようにFirmはおかしなトラブルを起こすと二度とデバイスが返事をしなくなる。DOSでのアップデートには、Intersil謹製のFLASH.EXEが必要らしい。これがまたレアソフトで、見つからない。TaoSecurity サイトで一揃い入手した。(FLASH.iniとかも必要です。)
DOSのFDをつくり、必要な一式を入れ、

FLASH -s #確認
FLASH -3v -g -d PK010101.HEX
FLASH -3v -g -d sf010804.hex

を行い、ふたつのfirmwareを無事、アップデート。

これでめでたく、ハードウェアのエラーメッセージは消えたのであった。ここに至るまで3週間くらいかかったと思う。誰も使わないと思うけど、今回のパッチセットは自分には貴重なのでここにあげとく

日本のサイトでPrismチップをLinuxで動作させるための有効な情報のウェブサイトはなかった。ほとんどの情報が製品名にばかりとらわれていて、いい情報ではないように思う。海外では、「この製品は○○○というチップセットだから」という分類が主流だ。Linuxがチップセットに応じて、ドライバーをロードするのだから当然だろう。チップセットが同じならば、例えばFLASH.EXEでfirmアップデートできるデバイスは、mini-PCIタイプだけではなく、pcmciaのカードも多数ある。

最後に、hostapとorinocoのバッティングを解消する。Debianの場合だが、/etc/modprobe.d/blacklistに

blacklist hostap
blacklist hostap_pci

の二行を追加した。これで立ち上げ、GNOMEから適当に設定すればWEP128でつながった!参考にしたサイトはここ。(8/15/2007)

Linuxのハードトラブルは、dmesgで関係するところを見て情報を探すことが大事だな、と改めて感じた。Windowsとは違って、ホワイトボックスなので議論のレベルが深い。

コメント