OpenWrt化したMeraki MR42で5GHzの送信側リンク幅が40MHzから上がらない件

これまた非常にニッチな話。

問題

OpenWrt化したMeraki MR42で、5GHzでのリンク幅が40MHz以上に上がらない。80MHzに設定しても40MHzで抑えられる。受信側は80MHzでリンクするが、送信側は40MHzのまま。しばらく放置していたのだが、今回解決を試みたので分かったことをメモ。

調査結果

デフォで入ってるCT版ドライバ(kmod-ath10k-ct)と一部のAtherosの組み合わせで出るバグらしい。MR42に搭載されているQCA9990がこれにヒットしている。かなり前(2020年とか)から報告されているが修正されていない

解決方法

ドライバを無印(CTなしのkmod-ath10k)に入れ替える。これだけで見事に80MHz幅でリンクするようになる。だがしかし、TX Rate(リンク速度とリンク帯域幅)が拾えなくなるという別のバグが発動し、実際のリンク速度を無視して常に6.0Mbit/s,20MHzという情報を吐くようになる。対向の機器側で見ると正常にリンクしていることが分かる。

表示上の問題のようなので、気にしなければ一応これで解決。しかし我が家ではローミング高速化のために802.11rでFT(Fast Transition)を有効にしており、これにモロに影響を及ぼすことが判明。つまりクライアントや他のルータにadvertiseするリンク情報が常に「6.0Mbit/s,20MHz」になってしまうので、アクセスポイントのスコアが大きく下がってしまいMR42へのローミングが著しく発生しづらくなる。さらにsyslogに「リンク速度がうまく取得できませんよ」という以下のエラーが大量に吐かれるようになり地味にウザい

Sun Sep 22 12:38:59 2024 kern.warn kernel: [ 2199.272473] ath10k_pci 0002:01:00.0: failed to send pdev bss chan info request

効果がなかったもの

firmware(ath10k-firmware-qcaxxxx-ct)を無印版に入れ替える。効果なし、というか無印だと802.11sでのメッシュに対応できてないらしく、インターフェースが起動しなくなるので我が家では完全にNGであった

結局どうしたか

CTナシドライバ(に起因するTXレート表示のバグ)とFast Transitionの競合を解決できなかったので、MR42はメッシュ専用にして、棚の奥に転がってた別のルーターを有線接続してFTを設定して5GHzのステーション役を任せることにした。

この結果、階を隔てたメッシュの通信速度がほぼ倍の400Mbpsに増速し、デカいファイルの転送がやりやすくなりました。終わり。