CentOS8でRTL8812AUのUSB子機を使って802.11acのAPをたてる

以前CentOS7でRTL8812AUの設定をしましたが、CentOS8でも使えるようにしたのでメモ
今回はドライバも進化したようで、802.11acで高速なアクセスポイントをたてることができました

CentOS7のときはカーネルの話中心で手順は雑だったので、今回はもう少し丁寧に。サービス起動順で少し手間取ったのでメモとして残しておきます

更新履歴

2021/08/12 新カーネル用に追記
2021/06/22
 CentOS8.4用に修正

CentOS7の記事:CentOS7でRTL8812AUのUSB子機を使って5GHzのAPを立てる

記事執筆時の私のカーネルは

上記の通りです。使った子機はPLANEXのGW-900Dです

4.18.0-305.xxx.el8_4.x86_64では動作確認できていません

※カーネルのバージョンやドライバのバージョン等の環境次第で下記の通りにならないと思いますが、ご了承ください

前準備

必要なパッケージ等を用意します

ドライバは複数見つけられますが、今回も

https://github.com/aircrack-ng/rtl8812au

こちらのものを使います。物が違うとAPが立てられないこともあるのでご注意ください。この記事では5.7.0を使いました(記事執筆時ではコミット数1105でした)

5.6.4.2だと5GHzのAPがたてられず、2.4GHzのAPしかたてられなかった、などバージョンでもかなり動作が変わります

ソースを入手します。

コンパイル

とりあえずmakeをしてみて、こけたらソースを修正するという方針にします。この時点での私の場合は2か所必要でした。カーネルやドライバのバージョン次第でまた変わってくると思いますので参考程度にしてください。gccはパッケージの8.3.1を使用しました

dkms用のスクリプトが用意されているので、インストール自体はそちらにやってもらうことにしました

もしエラーが出た場合はソースを修正していきます。

このファイルの1770行目付近

この3行を削除します

このファイルの7964行目付近

この3行の1行目の不等号を逆にします

次に10466行目付近

この5行の1行目の不等号を逆にします(下を通るようになれば何でもいいです)

このファイルの669行目付近

上を通ってほしいので、KERNEL_VERSION(5, 0, 0) を KERNEL_VERSION(4, 0, 0) にするとか下の「VERIFY_READ, 」を削除するとかします

インストールをやり直します

ネットワークマネージャーの設定

認証失敗回避のための設定を追加します

ネットワークマネージャーの設定を変更します

最終行に2行追記します

ネットワークマネージャーを再起動します

hostapdの設定

まず仕様を確認します

Band 2の方が5GHzの方。Capabilities と VHT Capabilitiesを確認します。ドライバのバージョン次第ではFrequencies:の全てのチャンネルで no IR になってしまっていて、5GHzが使えないこともあります

hostapdの設定をします

802.11acでAPをたてます。Capabilities や VHT Capabilities を参考に ht_capab と vht_capab を設定します

起動と自動起動の有効

systemdの設定

これで無事設定が終わった、と思ってPCを再起動してみたところ、hostapdが起動しているにも関わらずAPにアクセスできませんでした

hostapdを再起動してみたところ、ブリッジしているブリッジインターフェイスが落ちました。hostapdの起動タイミングに問題がありそうです

サービスファイルを編集します

このようにしました。3行目と4行目を追加し、5行目をコメントアウト

ブリッジデバイス(br0)を認識してからhostapdを起動するようにしたつもり。br0の部分はデバイス名で置き換えてください。ブリッジを使っていない場合は無線LANデバイス名を指定します

再起動して確認。これで問題なく起動時にAPがたつようになりました