2015年3月3日火曜日

Intel WM3B2915ABG 無線 LAN アダプタが 5GHz 帯で動作しました

昨日Intel WM3B2915ABG 無線 LAN アダプタが 5GHz 帯で動作しないと記事にしましたが、その後、インターネット上を調査して、5GHz 帯でも動作させることに成功しました。
(参考記事)Intel WM3B2915ABG 無線 LAN アダプタ
http://near-unix.blogspot.jp/2015/03/intel-wm3b2915abg-lan.html

WM3B2915ABG の EEPROM の書き換えで特に参考となったウェブサイトはこちら
(参考ウェブサイト)Intel PRO/Wireless 2915ABG が W56 対応!?
http://www.chaoticshore.org/blog/2009/03/20-231808.html

ThinkPad X40 へ装着した WM3B2915ABG を 5GHz 帯へ対応するように EEPROM の書き換えを行いました。

EEPROM 内に国別情報など

WM3B2915ABG には、内部にメーカー情報や設定情報を記憶しておく EEPROM が存在しています。この EEPROM には、使用する国別の電波帯域情報が書き込まれているそうで、この情報を書き換えることによって使用出来る電波帯域を変更できるそうです。今回はこの EEPROM の内容を書き換えることによって 5GHz 帯の IEEE 802.11 a モードで動作させることに成功しました!

さて EEPROM の書き換えですが、これかが結構な手間がかかります。必要なツール集めに時間を要してしまいました(涙)。私の備忘録と読者さんの利便性のため、参考となる URL も一緒に紹介します。

EEPROM 内の現在の設定を確認

まず EEPROM の書き換えには、Linux コマンドの ethtool が必要です。Debian Wheezy では標準でインストールされていませんので、インストールを事前に行なっておきましょう。・・・とは言っても、この Debian Wheezy 上で使用する ethtool は、EEPROM の内容確認のためだけに使用します。WM3B2915ABG を動作させている標準の ipw2200 ドライバでは、書き換え動作を行なっても、書き換えが行われたように見えて、実は行われていない!状況になっています(笑)。 ipw2200 ドライバのリロードやマシンの再起動によって元の値に戻ってしまいます。しかし、これから EEPROM の書き換え作業を行うにあたって、現在の WM3B2915ABG カードの設定情報を読みだして、書き換えの計画を立てるために必要です。

それでは WM3B2915ABG カードの EEPROM 情報を読みだしてみましょう。

使用したマシンの ThinkPad X40 では、有線LANが eth0 で、無線LANが eth1 となっていました。iwconfig コマンドでデバイス名を確認してください。
# ethtool -e eth1
EEPROM の読みだした内容
黄色くハイライトした部分が国別の電波帯域を設定する部分

 EEPROM の内容が次のような感じで表示(ダンプ)されたと思います。ここで注目するのは、左側の 0x0040: 行の右から2番目から4番目の値です。16進表示のため 0〜9 と a〜f までの値となっています。ここが私の場合 " 5a 5a 4a " となっていました。この三つの値で国別の電波帯域が指定されることとなっているそうです。現在は日本向けの 2.4GHz 帯の TEEE 802.11 b/g の他、5GHz 帯の IEEE 802.11 a の J52 が使用出来るようになっていました。昨日、5GHz の無線 LAN アクセスポイントを探しだせなかった理由が、古い規格の J52 だったためでした。

そこでこの国別の電波帯域のコードをヨーロッパ向けの " 5a 5a 45 " に変更することで、現在の日本向けの電波帯域にも対応できるそうです。実際には、三つの値の内、最後の "4a" を "45" に変更するだけです。

EEPROM の書き換えツールの準備

EEPROM を書き換えることができるように修正された ipw2200 ドライバを使用して、ethtool で値を書き換えます。EEPROM 書き換え対応の ipw2200 ドライバは、現時点では次のウェブサイトからダウンロードすることができました。ダウンロードした ipw2200 ドライバは、解凍した後、USB メモリへ保存しておきます。
Flash Intel WiFi Cards for HP Laptops
http://xenomorph.net/misc/guides/flash-hp-wifi/

Pre-patches drivers here:
http://xenomorph.net/data/ipw2200.tar.gz

そして問題なのか、この ipw2200 ドライバを組み込むことができる OS です。ネット上では、Knoppix 3.8.2 en を推奨していますが、どうも簡単に見当たりません。日本語版のものが、あのソフトウェアのダウンロードサイトの Vector にありますが、私が使用してみたところ、上手く動作させることができませんでした。

そこで探しだしたのがバージョン違いですが、次の Knoppix 3.8.1 の日本語版のものです。昨年○○○○細胞で何かと話題となった理研のサーバにありました(笑)。このバージョンで実際に書き換え操作を行なっても問題ありませんでした。
Index of /Linux/simosnet-livecd/knoppix
http://ftp.riken.jp/Linux/simosnet-livecd/knoppix/

http://ftp.riken.jp/Linux/simosnet-livecd/knoppix/KNOPPIX_V3.8.1-2005-04-08-LCR-JP.iso

EEPROM の書き換え

それでは実際の手順です。
Knoppix 3.8.1 を CD ブートさせます。日本語版のため、起動時に日本語に関する問い合わせがありますが、適当に選択して起動させます。

今後も WM3B2915ABG を導入する予定ですので、ツールとして使用する Knoppix 3.8.1 のディスクにはわかりやすいようにラベルを貼っておきました(笑)。
起動中の Knoppix 3.8.1 です。

USB メモリを装着して、 USB メモリのアイコンが表示されたら、アイコンをクリックして USB メモリの内容を読み取れるようにします。

仮想端末を開き、USB メモリの中へ ipw2200 ドライバのディレクトリに移動します。
$ cd (ipw2200 ドライバのディレクトリ)
$ sudo su (特権ユーザ root へ昇格しておきます)
#

ここから、いよいよ EEPROM の書き換えです。

まず無線LANアダプタの WM3B2915ABG のデバイス名を確認します。Debian Wheezy 上では、eth1 と認識されていましたが、この Knoppix 3.8.1 では eth0 と認識されていました。OS によってデバイス名の認識が異なることがあるので注意が必要です。
# iwconfig

以下はデバイス名が eth0 であること前提に記述しています。

現在の Knoppix 3.8.1 が持っている標準の ipw2200 ドライバを解除して、新たに EEPROM の書き換えに対応した ipw2200 ドライバを組み込みます。次の二つのコマンドで行います。
# sh unload
# sh load

再度 EEPROM の内容を読みだして、書き換えの最終確認を行います。
# ethtool -e eth0

"0x004e" の値(0x0040: の行の右から2番目の値)が "4a" などの "45" 以外の値であることを確認します。

そして次のコマンドで EEPROM の値を書き換えます。
# ethtool -E eth0 magic 0x2200 offset 0x4e value 0x45

書き換えが成功したか? 確認を行います。一度、ipw2200 ドライバのリロードを行なって、値を確認します。
# sh unload
# sh load 
# ethtool -e eth0
"0x004e" の値(0x0040: の行の右から2番目の値)が "45" となっていれば書き換え成功です。


Knoppix 3.8.1 で WM3B2915ABG の EEPROM を書き換えているところです。

後は Knoppix 3.8.1 を終了して、稼働させたい OS で再起動させます。

私のところでは Debian Wheezy を起動させて、NetworkManager で接続することを確認しました。36 〜 48 チャンネルの他、52 〜 64 チャンネルも認識できました。しばらく、これで様子を観察してみたいと思っています。

おまけ

(参考ウェブサイト)Intel PRO/Wireless 2915ABG が W56 対応!? 」では、さらに 0x0050: の領域の値も変更している事例を紹介していますが、上記の 0x004e の部分の値を変更するだけで、上記の通り 5GHz 帯の動作をします。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。