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