WL54AG の 12〜14 チャンネルを ath5k ドライバで使用する

NEC Aterm WL54AG という CardBus 無線 LAN カードをリヌクス標準カーネルの ath5k ドライバで動かそうとすると、 12 (2467MHz), 13 (2472MHz), 14 (2484MHz) チャンネルがいずれも disabled になっていて使えない。

同じ AR5213A と AR5112B チップを搭載し、EEPROM も同じ 4.8 である Corega WLCB54AG ではこのような制限は無い。 ちなみに NEC の WL54AG はロングセラーだったらしく、 同じ外観でもロットによって AR5213A ではなく AR5212 を使っていたり、 初期のものは EEPROM が 3.4 だったり、他にも異同があるが、 今の問題に影響する重要な違いではない。

svn co http://madwifi-project.org/svn/ath_info/trunk ath_info で入手できる ath_info というコマンドを使ってしらべてみると、 WL54AG の EEPROM の Regulatory Domain の情報はいずれも 0x00 である。 コレガのカードではこれが日本を意味する 0x40 になっているので、 ath5k ドライバは12〜14チャンネルの使用が許容できると判断するが、 WL54AG では 0x00 であるから許容しないということになるらしい。

そういうことならば、 ath_info コマンドをつかって EEPROM 自体の regdomain を書きかえてしまえば、 NEC WL54AG も Corega WLCB54AG と同じような条件になって、 問題のチャンネルが使えるようになるはずである。 プログラムの書換えによるハードウェアの「変更の工事」と言えなくもないから、 ath_info のマニュアルを熟読の上、 細心の注意が必要だが、 とにかくこれで使えるようにはなる。 また、このようにして EEPROM の一部を書きかえたカードを、 Aterm WD701CV に挿して、親機として使用しても、格別の不具合は発見できないであろう。

もうひとつの解決策としては、 EEPROM をいじらずに、 ath5k ドライバのほうに手をくわえて、 ハードウェアに登録されている regdomain 情報をドライバが無視するようにしてしまうという手がある。 手をくわえるといっても数行のコードなので、 WL54SC の 5GHz 問題 を解決するパッチ(ath5k_for_wl54sc.txt )に何気なく入れておいた。 このパッチのあたった ath5k モジュールを

modprobe ath5k override_eeprom_regdomain=0x40

のようにしてロードすれば、日本で許可されているチャンネルが利用できるようになる。

古い Atheros を使う