以前CentOS7でRTL8812AUの設定をしましたが、CentOS8でも使えるようにしたのでメモ
今回はドライバも進化したようで、802.11acで高速なアクセスポイントをたてることができました
CentOS7のときはカーネルの話中心で手順は雑だったので、今回はもう少し丁寧に。サービス起動順で少し手間取ったのでメモとして残しておきます
更新履歴
2022/01/15 モジュールロード時のオプション設定一部変更
2021/12/08 CentOS8.5用に追記
2021/10/26 モジュールロード時のオプション設定追記
2021/10/19 カーネル4.18.0-305-xx向けに書き直し
2021/08/12 新カーネル用に追記
2021/06/22 CentOS8.4用に修正
CentOS7の記事:CentOS7でRTL8812AUのUSB子機を使って5GHzのAPを立てる
記事執筆時の私のカーネルは
1 2 |
# uname -r 4.18.0-305.19.1.el8_4.x86_64 |
上記の通りです。使った子機はPLANEXのGW-900Dです
※カーネルのバージョンやドライバのバージョン等の環境次第で下記の通りにならないと思いますが、ご了承ください
前準備
1 2 |
# dnf group install "Development Tools" # dnf install kernel-headers kernel-devel elfutils-libelf-devel dkms |
必要なパッケージ等を用意します
ドライバは複数見つけられますが、今回も
こちらのものを使います。物が違うとAPが立てられないこともあるのでご注意ください。この記事ではバージョン 5.6.4.2 を使いました(記事執筆時ではコミット数1164でした)
※カーネル4.18.0-305系では 5.7.0 や下記の新ドライバは、執筆時点では認識に失敗しました
https://github.com/morrownr/8812au-20210629
1 2 |
# git clone https://github.com/aircrack-ng/rtl8812au.git # cd rtl8812au |
ソースを入手します。
コンパイル
とりあえずmakeをしてみて、こけたらソースを修正するという方針にします。この時点での私の場合は2か所必要でした。カーネルやドライバのバージョン次第でまた変わってくると思いますので参考程度にしてください。gccはパッケージの8.3.1を使用しました
1 |
# make dkms_install |
dkms用のスクリプトが用意されているので、インストール自体はそちらにやってもらうことにしました
もしエラーが出た場合はソースを修正していきます。
1 |
# vim ./os_dep/linux/ioctl_cfg80211.c |
このファイルの7736行目付近と10188行目付近の2行を修正します
1 |
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)) |
この行の不等号を逆にします
1 |
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,8,0)) |
カーネル4.18.0-348(CentOS 8.5の場合)は更にもう1行、463行目を修正します
1 2 3 4 5 |
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0)) cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0, false); #else cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0); #endif |
不等号を逆にします。
1 2 3 4 5 |
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0)) cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0, false); #else cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0); #endif |
上の方を通ればいいだけなので、1,3~5行目を削除とかでもいいです
1 2 |
# make dkms_remove # make dkms_install |
保存してインストールをやり直します
ドライバ(モジュール)ロード時のオプション設定
デフォルトでは5GHzのAPが建てられる設定でドライバをロードしてくれません。5GHzのAPをたてる場合のオプションを設定します
1 |
# vim /etc/modprobe.d/88XXau.conf |
1 |
options 88XXau rtw_drv_log_level=0 rtw_led_ctrl=1 rtw_vht_enable=2 rtw_beamform_cap=10 rtw_switch_usb_mode=1 |
rtw_switch_usb_modeは1でUSB3.0、2でUSB2.0動作になります。5GHzで動かす場合はUSB3.0推奨です
1 2 |
# modprobe -r 88XXau # modprobe 88XXau |
ロードしなおします。次回以降の起動時は不要です
ネットワークマネージャーの設定
認証失敗回避のための設定を追加します
1 |
# vim /etc/NetworkManager/NetworkManager.conf |
ネットワークマネージャーの設定を変更します
1 2 |
[device] wifi.scan-rand-mac-address=no |
最終行に2行追記します
1 |
# systemctl restart NetworkManager |
ネットワークマネージャーを再起動します
hostapdの設定
1 2 |
# dnf install iw # iw phy |
まず仕様を確認します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
Band 2: Capabilities: 0x1962 HT20/HT40 Static SM Power Save RX HT20 SGI RX HT40 SGI RX STBC 1-stream Max AMSDU length: 7935 bytes DSSS/CCK HT40 Maximum RX AMPDU length 65535 bytes (exponent: 0x003) Minimum RX AMPDU time spacing: 16 usec (0x07) HT Max RX data rate: 300 Mbps HT TX/RX MCS rate indexes supported: 0-15 VHT Capabilities (0x03c031a2): Max MPDU length: 11454 Supported Channel Width: neither 160 nor 80+80 short GI (80 MHz) TX STBC SU Beamformee +HTC-VHT VHT RX MCS set: 1 streams: MCS 0-9 2 streams: MCS 0-9 3 streams: not supported 4 streams: not supported 5 streams: not supported 6 streams: not supported 7 streams: not supported 8 streams: not supported VHT RX highest supported: 867 Mbps VHT TX MCS set: 1 streams: MCS 0-9 2 streams: MCS 0-9 3 streams: not supported 4 streams: not supported 5 streams: not supported 6 streams: not supported 7 streams: not supported 8 streams: not supported VHT TX highest supported: 867 Mbps Bitrates (non-HT): * 6.0 Mbps * 9.0 Mbps * 12.0 Mbps * 18.0 Mbps * 24.0 Mbps * 36.0 Mbps * 48.0 Mbps * 54.0 Mbps Frequencies: * 5180 MHz [36] (30.0 dBm) * 5200 MHz [40] (30.0 dBm) * 5220 MHz [44] (30.0 dBm) * 5240 MHz [48] (30.0 dBm) * 5260 MHz [52] (30.0 dBm) (no IR, radar detection) * 5280 MHz [56] (30.0 dBm) (no IR, radar detection) * 5300 MHz [60] (30.0 dBm) (no IR, radar detection) * 5320 MHz [64] (30.0 dBm) (no IR, radar detection) |
Band 2の方が5GHzの方。Capabilities と VHT Capabilitiesを確認します。ドライバのバージョン次第ではFrequencies:の全てのチャンネルで no IR になってしまっていて、5GHzが使えないこともあります
1 |
# vi /etc/hostapd/hostapd.conf |
hostapdの設定をします
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
ctrl_interface=/var/run/hostapd ctrl_interface_group=wheel macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP ssid=えすえすあいでぃ wpa_passphrase=ぱすわーど interface=wlp0s20u8 # 例 bridge=br0 # 例 hw_mode=a channel=36 ieee80211n=1 ht_capab=[HT20-][HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40][MAX-AMSDU-7935] ieee80211ac=1 vht_capab=[SHORT-GI-80][TX-STBC-1][+HTC-VHT][MAX-A-MPDU-LEN-11454] vht_oper_chwidth=1 vht_oper_centr_freq_seg0_idx=42 |
802.11acでAPをたてます。Capabilities や VHT Capabilities を参考に ht_capab と vht_capab を設定します
1 2 |
# systemctl start hostapd # systemctl enable hostapd |
起動と自動起動の有効
systemdの設定
これで無事設定が終わった、と思ってPCを再起動してみたところ、hostapdが起動しているにも関わらずAPにアクセスできませんでした
hostapdを再起動してみたところ、ブリッジしているブリッジインターフェイスが落ちました。hostapdの起動タイミングに問題がありそうです
1 |
# vi /usr/lib/systemd/system/hostapd.service |
サービスファイルを編集します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[Unit] Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator BindsTo=sys-subsystem-net-devices-br0.device After=sys-subsystem-net-devices-br0.device #After=network.target [Service] Type=forking PIDFile=/run/hostapd.pid ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf -P /run/hostapd.pid -B [Install] WantedBy=multi-user.target |
このようにしました。3行目と4行目を追加し、5行目をコメントアウト
ブリッジデバイス(br0)を認識してからhostapdを起動するようにしたつもり。br0の部分はデバイス名で置き換えてください。ブリッジを使っていない場合は無線LANデバイス名を指定します
1 |
# reboot |
再起動して確認。これで問題なく起動時にAPがたつようになりました
コメント