0. 目次
- 0. 目次
- 1. 概要
- 2. システム構成と環境
- 3. ホスト側作業
- 4. 基本環境構築
- 5. ブリッジネットワークの構築
- 6. 5GHz帯での動作確認
- 7. 6GHz 帯 AP 構築
- 8. Windows接続問題の解決
- 9. 永続化と運用設定
- 10. その他技術メモ
- 11. 技術仕様と制限事項
- 12. 今後について
- 13. まとめ
- 14. 参考資料
- 15. チップセット別 USB-WiFI
1. 概要
- 6GHz の無線 AP を自作したいという技術的興味から、6GHz に対応する無線 LAN カードで最安であった TP-Link Archer TXE70UH を用いて無線 LAN AP の自作を試みた
- なお TP-Link Archer TXE70UH 購入時点では 6GHz でのクライアントでの動作実績はあるので AP もすぐ問題なく動くと思っていた
- また可搬性の観点から VM 上で hostapd を構成し、無線 LAN カードは USB デバイスをパススルーで見せる構成とした
1.1 モチベーション
- 6GHz の無線 AP が急に欲しくなった
- 実家で無線 LAN の実験環境的な運用をしているのだが、そこに自作 AP で 6GHz も吹きたいと考えた
- 気軽な気持ちでヤフーショッピングで調べてみると、Wi-Fi 6E 対応でポイント還元込みで3000円程度で買えることを発見 -> 即購入
- これが地獄の始まりだった
1.2 技術的課題
- 無線モジュール届いて調べ始めたら早々になんか動かんらしいという GitHub Issue を見つける
- そもそもドライバの実装で 6GHz を吹く上で必要な機能が呼び出せなかったり、なんならホスト kernel 巻き込んで死んだりする
- とはいえ丁寧にデバッグしていったら動くやろ!くらいの気持ちで実装を始める
1.3 構成コンセプト
2. システム構成と環境
2.1 ハードウェア構成
- ハイパーバイザー: Proxmox VE
- ゲスト OS: Ubuntu 24.04.2 LTS(kernel: 6.8.0-53-generic)
- 無線アダプタ: TP-Link Archer TXE70UH(RTL8852CU チップセット)
- 接続方式: USB passthrough *(前述のコンセプトでは PCI passthrough になっているが、ドライバが上手く走らなかったため USB passthrough になっている)
2.2 設計思想
2.3 ネットワーク構成
- 純粋な無線 AP(ブリッジ)として実装
- DHCP は上位のルータが行うため
3. ホスト側作業
3.1 Proxmox で Archer TXE70UH が WLAN モードで読み込まれるようにする
Windows 向けに無線 LAN ドライバを自動インストールするための仕組みがあるため、USB モードの切り替えが必要
// CDROM モードになっている # lsusb Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 003: ID 0bda:c821 Realtek Semiconductor Corp. Bluetooth Radio Bus 003 Device 002: ID 0573:1573 Zoran Co. Personal Media Division (Nogatech) USB Audio and HID Bus 003 Device 004: ID 0bda:1a2b Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter (Driver CDROM Mode) Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub # apt install usb-modeswitch # usb_modeswitch -KW -v 0bda -p 1a2b Take all parameters from the command line * usb_modeswitch: handle USB devices with multiple modes * Version 2.6.1 (C) Josua Dietze 2017 * Based on libusb1/libusbx ! PLEASE REPORT NEW CONFIGURATIONS ! DefaultVendor= 0x0bda DefaultProduct= 0x1a2b StandardEject=1 Look for default devices ... found USB ID 1d6b:0003 found USB ID 0bda:c821 vendor ID matched found USB ID 0573:1573 found USB ID 35bc:0102 found USB ID 1d6b:0002 found USB ID 1d6b:0003 found USB ID 1d6b:0002 No devices in default mode found. Nothing to do. Bye!
設定の永続化
# cat /etc/usb_modeswitch.d/0bda\:1a2b DefaultVendor=0x0bda DefaultProduct=0x1a2b TargetVendor=0x35bc TargetProduct=0x0102 StandardEject=1
3.2 VM への USB デバイスの割り当て
モードを切り替えると WLAN Adapter として TXE70UH が見えているので、これを VM にアタッチする

IOMMU の設定していない場合はする
iommu=pt intel_iommu=on
エミュレーションモデルは q35 にする pc-i440fx には USB が実装されていないので注意
4. 基本環境構築
4.1 RTL8852CUドライバーの構築
4.1.1 ドライバーソースの取得
- GitHub上のmorrownr版RTL8852CUドライバーを使用
# ドライバーソースの取得 git clone https://github.com/morrownr/rtl8852cu-20240510.git cd rtl8852cu-20240510 # 対応デバイスの確認 # supported-device-IDs ファイルで以下を確認 # ID 35bc:0102 - TP-Link Archer TXE70UH(EU) V1
4.1.2 依存関係のインストール
sudo apt update sudo apt install -y build-essential git dkms bc bridge-utils hostapd sudo apt install -y linux-modules-extra-6.8.0-53-generic
4.1.3 ドライバーのビルドとインストール
# ドライバーのビルド sudo make clean sudo make # モジュールの手動インストール sudo mkdir -p /lib/modules/6.8.0-53-generic/kernel/drivers/net/wireless/ sudo cp 8852cu.ko /lib/modules/6.8.0-53-generic/kernel/drivers/net/wireless/ sudo depmod -a # ドライバーの段階的ロード sudo modprobe cfg80211 sudo modprobe mac80211 sudo modprobe 8852cu
無線インターフェイス wlx98038eddc01f が正常に認識された
$ ip l
~~~
4: wlx98038eddc01f: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 98:03:8e:dd:c0:1f brd ff:ff:ff:ff:ff:ff
5. ブリッジネットワークの構築
5.1 systemd-networkd設定
linuxbridge を作り、そこに VM の eth デバイスをぶら下げるが、このとき bridge で IP 終端する必要があるため、起動時にそのような構成になるようにする
5.1.1 ブリッジデバイス定義
cat > /etc/systemd/network/10-br0.netdev << EOF [NetDev] Name=br0 Kind=bridge EOF
5.1.2 ブリッジネットワーク設定
cat > /etc/systemd/network/20-br0.network << EOF [Match] Name=br0 [Network] Address=192.168.1.29/24 Gateway=192.168.1.1 DNS=192.168.1.1 IPForward=yes EOF
5.1.3 eth0のブリッジ接続
cat > /etc/systemd/network/30-eth0.network << EOF [Match] Name=eth0 [Network] Bridge=br0 EOF
5.2 ブリッジの設定
# ブリッジインターフェイスの作成 sudo brctl addbr br0 sudo brctl addif br0 eth0 sudo ip link set br0 up
eth0をブリッジに接続する際、IPアドレスが eth0 から br0 に移行するため、ネットワーク接続が一時的に切断される このため、事前にコンソールアクセスを確保しておくと良い
6. 5GHz帯での動作確認
6.1 基準設定の構築
6GHz 帯に着手する前に、動作するであろう 5GHz 帯での AP 動作を確認を行った
# /etc/hostapd/hostapd.conf interface=wlx98038eddc01f bridge=br0 driver=nl80211 ssid=AP_5GHz hw_mode=a channel=36 ieee80211n=1 ieee80211ac=1 ieee80211ax=1 # セキュリティ設定 wpa=2 wpa_key_mgmt=WPA-PSK SAE wpa_passphrase=hogehoge wpa_pairwise=CCMP rsn_pairwise=CCMP ieee80211w=1 # 地域設定 country_code=JP ieee80211d=1 ieee80211h=1 wmm_enabled=1 # 管理設定 ctrl_interface=/var/run/hostapd ctrl_interface_group=0 max_num_sta=32
6.2 動作確認結果
5GHz帯(チャンネル36、5180 MHz)での安定動作を確認し、問題なく動作することを確認した
7. 6GHz 帯 AP 構築
7.1 最初の技術的障壁
7.1.1 HE 6GHz Max MPDU lengthエラー
6GHz 帯での設定を試みた際、即座に下記のエラーが発生した
The driver does not support the configured HE 6 GHz Max MPDU length
この「HE 6 GHz Max MPDU length」エラーは、RTL8852CU ドライバーで 6GHz AP 機能が完全に実装されていないことを示しており、最大の障壁でした これを解決するにはドライバーに機能を実装、仮に実装したとしてもファームにその機能をキックする実装があるか、そもそもモジュールに物理的実装があるか、などなどそもそも解決できない問題にぶつかる可能性があり、この機能を回避して AP を実装することに注力することになる
7.1.2 GitHub Issue
6GHZ Not Working On Realtek 8832cu. · Issue #408 · morrownr/USB-WiFi · GitHub によると
- ドライバー制限: RTL8852CU ドライバーの 6GHz AP 機能は部分的実装
- HE 6GHz 機能: High Efficiency 6GHz 特有の機能が不完全対応
となっており、やはりここを解決して進むのは難しそう
7.2 Realtek ドライバーの特殊要件
有識者からの情報により、Realtekモジュールはiw reg setを実行してからでないと6GHz帯が正しく動作しないことが判明した
# 正しい起動順序(必須) sudo modprobe 8852cu # ドライバーロード sudo iw reg set JP # レギュラトリードメイン設定 sudo hostapd config # hostapd起動
この順序を守らないと6GHz帯でチャンネル設定エラーが発生する
7.3 技術的ブレークスルーの実現
7.3.1 決定的な設定の発見
数十パターンの設定アプローチを試行し、エラーが段階的に変化することを確認:
- 初期:
HE 6 GHz Max MPDU lengthエラー - 第1段階:
Failed to set beacon parametersエラー - 第2段階:
Could not determine operating frequencyエラー - 最終段階: 起動成功
最終的に、下記の設定でドライバー制限を突破
# 6GHz制限回避のキー設定 he_6ghz_max_mpdu=0 he_6ghz_max_ampdu_len_exp=0 he_6ghz_rx_ant_pat=0 he_6ghz_tx_ant_pat=0
値を明示的に 0(最小値)に設定することで、ドライバーの未対応機能を回避できることを確認
7.3.2 成功時のログ
# 成功ログ wlx98038eddc01f: interface state UNINITIALIZED->ENABLED wlx98038eddc01f: AP-ENABLED
衝動的に Archer TXE70UH をポチって数日、2025年7月10日に 6GHz 帯の AP として利用できることを確認
8. Windows接続問題の解決
8.1 接続エラーの詳細分析
6GHz AP が見えるようになった後、Windows クライアントから接続しようとしたときに「このネットワークに接続できません」エラーが発生した
8.1.1 クライアント環境の確認
ドライバー: Qualcomm FastConnect 6900 Wi-Fi 6E Dual Band Simultaneous (DBS) WiFiCx Network Adapter バージョン: 2.0.0.1292 (2025/03/20) サポートされる認証: WPA3-パーソナル CCMP サポートされるバンド: 6 GHz [ 5935 MHz - 7115 MHz]
クライアント側は 6GHz / WPA3-SAE に完全対応していることを確認
8.1.2 認証ログの分析
# プローブリクエスト/レスポンスは正常 nl80211: RX frame da=xx:xx:xx:xx:xx:xx sa=yy:yy:yy:yy:yy:yy freq=5570 stype=4 (WLAN_FC_STYPE_PROBE_REQ) # しかし認証フレームが来ない # AUTH (stype=11) フレームが全く受信されていない
8.2 SAE設定の最適化
8.2.1 問題の根本原因
RTL8852CUドライバーの6GHz APモードでのSAE実装に制限があることが判明:
- クライアントモード: 正常動作
- APモード: SAE認証に制限あり
8.2.2 成功した設定
十数パターンの設定を試行した結果、下記の設定で接続に成功:
# 6GHz Final Working Configuration interface=wlx98038eddc01f bridge=br0 driver=nl80211 ssid=AP_6GHz # 6GHz band hw_mode=a op_class=131 channel=5 # 5975 MHz # 802.11ax ieee80211ax=1 he_oper_chwidth=0 # Required driver settings for RTL8852CU he_6ghz_max_mpdu=0 he_6ghz_max_ampdu_len_exp=0 he_6ghz_rx_ant_pat=0 he_6ghz_tx_ant_pat=0 # Country country_code=JP ieee80211d=1 ieee80211h=1 # WPA3-SAE (Required for 6GHz) wpa=2 wpa_key_mgmt=SAE wpa_passphrase=hogehoge rsn_pairwise=CCMP ieee80211w=2 sae_require_mfp=1 # SAE compatibility settings (Critical for Windows) sae_groups=19 20 21 sae_pwe=2 sae_anti_clogging_threshold=10 # Additional settings wpa_pairwise=CCMP wpa_group_rekey=3600 # Basic settings wmm_enabled=1 beacon_int=100 dtim_period=2
8.3 接続成功の技術的分析
8.3.1 SAE PWE (Password Element) の重要性
sae_pwe パラメータがポイントだった
sae_pwe=0: Hash-to-Element(デフォルト)sae_pwe=1: Looping methodsae_pwe=2: Hash-to-Element with optional Looping method(互換性最高)
Windows / Qualcomm クライアントは sae_pwe=2 で最も安定して動作した
8.3.2 成功時の認証シーケンス
# SAE認証成功ログ WPA: Received EAPOL-Key from yy:yy:yy:yy:yy:yy key_info=0x108 type=2 wlx98038eddc01f: STA yy:yy:yy:yy:yy:yy WPA: received EAPOL-Key frame (2/4 Pairwise) WPA: PTK derivation - A1=xx:xx:xx:xx:xx:xx A2=yy:yy:yy:yy:yy:yy wlx98038eddc01f: STA yy:yy:yy:yy:yy:yy WPA: sending 3/4 msg of 4-Way Handshake wlx98038eddc01f: STA yy:yy:yy:yy:yy:yy WPA: received EAPOL-Key frame (4/4 Pairwise) wlx98038eddc01f: AP-STA-CONNECTED yy:yy:yy:yy:yy:yy wlx98038eddc01f: EAPOL-4WAY-HS-COMPLETED yy:yy:yy:yy:yy:yy
9. 永続化と運用設定
9.1 systemdサービスの作成
# サービスファイルの作成 sudo systemctl edit --full --force hostapd-6ghz.service
[Unit] Description=6GHz WiFi Access Point After=network.target Wants=network.target [Service] Type=forking PIDFile=/run/hostapd-6ghz.pid Restart=on-failure RestartSec=2 Environment=DAEMON_CONF=/etc/hostapd/hostapd-6ghz.conf EnvironmentFile=-/etc/default/hostapd ExecStartPre=/bin/bash -c 'modprobe -r 8852cu; sleep 2; modprobe 8852cu; sleep 2; iw reg set JP' ExecStart=/usr/sbin/hostapd -B -P /run/hostapd-6ghz.pid $DAEMON_CONF ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target
9.2 自動起動設定
# サービスの有効化 sudo systemctl enable hostapd-6ghz.service sudo systemctl start hostapd-6ghz.service
10. その他技術メモ
10.1 一般的な問題と解決策
10.1.1 HE 6GHz Max MPDU length エラー
he_6ghz_max_mpdu=0 he_6ghz_max_ampdu_len_exp=0 he_6ghz_rx_ant_pat=0 he_6ghz_tx_ant_pat=0
10.1.2 Windows 接続エラー
sae_groups=19 20 21 sae_pwe=2 sae_anti_clogging_threshold=10
10.1.3 周波数許可エラー
sudo iw reg set JP
10.2 デバッグ手法
10.2.1 最大詳細度でのデバッグ
sudo hostapd -ddd /etc/hostapd/hostapd-6ghz.conf
10.2.2 無線インターフェイス状態の確認
iw dev wlx98038eddc01f info iw reg get
11. 技術仕様と制限事項
11.1 実現した Wi-Fi AP の技術仕様
11.2 現在の制限事項
- 帯域幅制限: 20 MHzのみ対応(40/80/160 MHzは未対応)
- HE 機能制限: 高度な HE 6GHz 機能は最小値設定が必要
- ビームフォーミング: 無効化が必要
- MU-MIMO: 未対応
- FILS Discovery: RTL8852CUドライバーは未対応
12. 今後について
12.1 帯域幅 40/80/160 MHz への対応
一旦 6GHz で吹くことを優先したため手が回っていないが、40/80/160MHz 幅の構成も設定の針の穴を通していけば実現できる可能性がある
12.2 ドライバーの改善
今後の RTL8852CU ドライバーの改善により下記が実現できる可能性がある
- HE 機能向上: より多くの 6GHz 特有機能の実装
- FILS Discovery 対応: 6GHz Discovery 機構の実装
12.3 代替モジュールの検討
Intel AX210 や MediaTek MT7921K 等の他の 6GHz 対応モジュールを利用することで、安定した 6GHz Wi-Fi AP を実現できる可能性が高い 少なくとも RTL8852CU よりはマシな結果が得られると考える
13. まとめ
- RTL8852CU での 6GHz AP 構築は実現可能(ただし制限はあり)
- hostapd を使えばすぐに実現するだろう程度に考えていたが、思っていた以上にドライバやファームウェア、デバイスといった要素が複雑に絡み合っており、一筋縄ではいかない
- RTL8852CU で構築を考えているなら考え直して Intel AX210 など他の先駆者がいるモジュールでの構築をすべき
- 少なくとも現時点で RTL8852CU のドライバは 6GHz AP を完全に運用できるレベルにない
- ドライバやファームウェアを独自で改善したい人にはちょうど良い題材かもしれない
14. 参考資料
- GitHub - morrownr/rtl8852cu-20240510: Linux Driver for USB WiFi Adapters that are based on the RTL8832CU and RTL8852CU Chipsets - v1.19.2.1 - 20240510
- 6GHZ Not Working On Realtek 8832cu. · Issue #408 · morrownr/USB-WiFi · GitHub
- https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf
- IEEE SA - The IEEE Standards Association - Home
15. チップセット別 USB-WiFI
15.1 Realtek RTL8852CU
- TP-Link Arhcer TXE70UH/A
- 今回使用した USB-WiFi
- バッファロー WI-U3-2400XE2/N
15.2 MediaTek MT7921AUN
15.3 Realtek RTL8912AU
Wi-Fi 7 に対応したモジュール
15.4 Intel AX210
アリエクで探したほうが選択肢があるかも?
- AX210 WiFi 6e lanカード M.2 2230/NGFF
- 切り欠きが SATA(NGFF) なので注意
