AR5523 アダプタを 11A で使う方法のメモ

AR5523 チップを使った USB 接続の WiFi アダプタには種々あって、 IEEE 802.11A 規格の使用可能なものもいくつかあったらしい。

もちろん Ndiswrapper で iwpriv wlan0 network_type a とすれば、 11A をつかうこともできるが、 ndiswrapper モジュールには神経質なところがあるらしく、 うっかり USB ドングルを抜いてしまうと、簡単に Oops でマシンがフリーズする場合がある。

だから、 Linux 3.8 からカーネルにとりいれられている ar5523 ドライバを利用できないか。

とりあえず、

の四種で試すも、 この Linux ドライバはそのままではいずれのアダプタも 2GHz 帯でしか動作させてくれない。 せっかくだから 5GHz 帯の 34 チャンネルも使えるようにしようってんで、 次のパッチ(ar5523_for_11a.txt)をあてて、コンパイルしてモジュールをインストールし、 modprobe ar5523 とやってモジュールをロードする。

まだこのドライバは未完成の段階にあるようで、終了切断処理をする際なんかに ar5523_data_rx_cb: USB err: -2 という情報が出る。 また、ファームウェアに丸投げしているはずのレートコントロールがうまくゆかないのか、 とくに2GHz帯では通信エラーが出ているように感じられる。 5GHz帯ではちょっとした用途にストレスは感じないほどの通信速度は出る。 件のファームウェアは

git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

で入手できるから、 そのなかにある ar5523.bin というファイルを /lib/firmware ディレクトリなんどに放りこんでやる。

このパッチを Linux カーネルや backports の 3.12 系に適用するには、

sed 's/->channel-/->chandef.chan-/' < ar5523_for_11a.txt > ar5523_for_11a_3.12.patch

とやって修正すればよい。

他にも *1 同じ Atheros AR5523 チップを使った USB ドングルがあると思われるが、 それも lsusb コマンドなどで製造者IDと製品IDをしらべて、 パッチの末尾に

+ AR5523_DEVICE_UX(0x1690, 0x0720), /* FT-STU-Sag */
+ AR5523_DEVICE_UX(0x0409, 0x021c), /* Aterm WL54SU2 */
+ AR5523_DEVICE_UX(0x0411, 0x0091), /* WLI-U2-KAMG54 */
+ AR5523_DEVICE_UX(0x04bb, 0x0932), /* WN-WAG/US */

とあるような仕方で加筆登録すれば動作する可能性がある。 上記の四種は 11A 通信機能を有する AR5005UX という型式のチップセットをもつもので、 同種のアダプタをソースコードに加筆登録する場合は、 プロダクトIDから 1 を引いた値にすること。 たとえば lsusb0409:021d と出るものは、 AR5523_DEVICE_UX(0x0409, 0x021c), と書く。

crda が 34 チャンネルをブロックすることがある問題の対処法は既述

(以上 2014-01-25 記)

2014-12-13 追記

3.14 カーネルを見たら net/cfg80211.h の仕様が変更になっていて、 上記のような 3.12 カーネルまで使えたパッチではコンパイルできないので、 3.14 用の修正パッチをつくった。

3.14用と3.17用は本質的に同じ。 おそらく最新の3.18でも同様に適用できると思われる。 いずれもJ52チャンネルを使わないのならば、

+	{ .center_freq = 5170 },
...
+	{ .center_freq = 5190 },
...
+	{ .center_freq = 5210 },
...
+	{ .center_freq = 5230 },

の4行を消してもよい。

cd linux-3.14.x
zcat ar5523-3.14.patch.gz | patch -b -p1 
make

のようにしてカーネルをビルドする。

*1 未確認だが、おそらく Corega CG-WLUSB2AGST など。

古い Atheros を使う