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

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

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

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

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

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

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

前準備

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

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

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

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

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

ソースを入手します。もっとあたらしいものがあったらブランチのバージョンを変えてください

コンパイル

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

※2020年5月13日のコミットで以下の2つの修正は不要になりました。

とりあえずのmake

./os_dep/linux/os_intfs.c で rtw_select_queue に関するエラーがでた場合

ソースを少しいじります

rtw_select_queue関数のところ。3行目のKERNEL_VERSIONの数値を変えます

4,19から4,18にしました。上の方を通りたいだけなので自分のカーネルのバージョン以下になればなんでもいいです

再びmake

次は ./os_dep/linux/rtw_android.c でこんなエラーが出ました

またソースを少し修正します

access_okで検索すればすぐに見つかります。4行目のVERIFY_READ,を削除します。KERNEL_VERSIONの5を4にするとかでもいいです

こうします。カーネルのバージョン4.18なのに5~5.2くらいの所を通らないといけないようです

makeが通るか確認します。ドライバやカーネルのバージョンで変わるかもしれませんが、このときの私はこれで通りました。ソースは全く読めないので自分でも何してるか全くわかっていません!!

※2020年5月13日のコミット以降であれば以下だけでOK

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

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

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

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

最終行に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がたつようになりました