ラズパイで6GHz帯WiFiを使ってみた（ブリッジモードアクセスポイント編）

2022年9月から日本でも6GHz帯が無線LANで使用することが許可されました。Netgear A8000を使って、ラズパイで6GHz対応のブリッジモードアクセスポイントを作ってみました（English version article is [here](https://dev.to/wataniguchi/how-to-build-a-6ghz-wifi-bridge-mode-ap-with-a-raspberry-pi-and-netgear-a8000-2ojc)）。
接続用のクライアントは[「ラズパイで6GHz帯WiFiを使ってみた（クライアント編）」](https://qiita.com/wataniguchi/items/e61130686f3f3e97bde0)で作ります。


なお、ルータモードアクセスポイントの構築については、[ラズパイで6GHz帯WiFiを使ってみた（ルータモードアクセスポイント編）](https://qiita.com/wataniguchi/items/380cd315226f6cce2cc1)をご覧下さい。

# まとめ - これだけやればできる

- A8000がUSB接続時に返すベンダーID・製品IDが標準mt7921uドライバに認識されるようにする
- Linux無線規制データベースを最新化して日本での6GHz帯使用許可を反映する
- MediaTek WiFiアダプタ用のファームウェアを最新化する
- bridge-utilsを導入する
- hostapdを導入してv2.10へ差し替える

# 前提

- Raspberry Pi OSはBullseye（kernel 6.1）を利用しています
- ラズパイの有線LANのインターフェース名がeth0、内蔵WiFiのインターフェース名がwlan0、A8000のインターフェース名がwlan1であるとします
- ラズパイが有線LANで、動的IPアドレス配布を行う上流のルータ機器（ONU等）に接続されているとします

# A8000がUSB接続時に返すベンダーID・製品IDが標準mt7921uドライバに認識されるようにする

[「ラズパイで6GHz帯WiFiを使ってみた（クライアント編）」](https://qiita.com/wataniguchi/items/e61130686f3f3e97bde0#a8000がusb接続時に返すベンダーid製品idが標準mt7921uドライバに認識されるようにする)を参照

# Linux無線規制データベースを最新化して日本での6GHz帯使用許可を反映する

[「ラズパイで6GHz帯WiFiを使ってみた（クライアント編）」](https://qiita.com/wataniguchi/items/e61130686f3f3e97bde0#linux無線規制データベースを最新化して日本での6ghz帯使用許可を反映する)を参照

# MediaTek WiFiアダプタ用のファームウェアを最新化する

[「ラズパイで6GHz帯WiFiを使ってみた（クライアント編）」](https://qiita.com/wataniguchi/items/e61130686f3f3e97bde0#mediatek-wifiアダプタ用のファームウェアを最新化する)を参照

# bridge-utilsを導入する

`sudo apt-get install bridge-utils`でパッケージを導入した後、設定ファイル`/etc/network/interfaces.d/bridge.conf`を新規に作成します。

```/etc/network/interfaces.d/bridge.conf
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan1
```

# hostapdを導入してv2.10へ差し替える

まず最初に、`sudo apt-get install hostapd`でパッケージを導入します。
次に、[802.11axサポートはv2.10で付加された](https://forums.raspberrypi.com/viewtopic.php?t=338143)ので、本稿執筆当時で最新であるv2.10への差し替えを行います。
[「ラズパイで6GHz帯WiFiを使ってみた（クライアント編）」](https://qiita.com/wataniguchi/items/e61130686f3f3e97bde0#wpa-supplicantをv210へ差し替える)ではWPA Supplicantをv2.10へ差し替えます。WPA Supplicantとhostapdの両方が含まれた`hostap_2_10.tar.gz`を[配布サイト](https://w1.fi/cgit/hostap/)からダウンロードします。
以下は手順です。

```
tar -xzvf hostap_2_10.tar.gz
cd hostap_2_10/hostapd
cp defconfig .config
echo CONFIG_IEEE80211AX=y >> .config
echo CONFIG_IEEE80211AC=y >> .config
echo CONFIG_SAE=y >> .config
echo CONFIG_ACS=y >> .config
make
sudo mv /usr/sbin/hostapd /usr/sbin/hostapd_2_9
sudo cp hostapd /usr/sbin/
sudo mv /usr/sbin/hostapd_cli /usr/sbin/hostapd_cli_2_9
sudo cp hostapd_cli /usr/sbin/
```

hostapdの設定ファイル`/etc/hostapd/hostapd.conf`を新規に作成します。`ssid=`、`sae_password=`、`channel=`の部分は適当に変更して下さい。

```/etc/hostapd/hostapd.conf
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
country_code=JP
interface=wlan1
bridge=br0
driver=nl80211
ssid=foo-ax
sae_password=foobar
hw_mode=a
channel=57
ieee80211ax=1
wmm_enabled=1
op_class=131
ieee80211w=2
auth_algs=3
wpa=2
wpa_key_mgmt=SAE
rsn_pairwise=CCMP
rsn_preauth=1
sae_require_mfp=1
sae_pwe=1
wpa_group_rekey=1800
group_cipher=CCMP
wpa_psk_radius=0
```

hostapdをブート時に自動開始するサービスとして登録します。
```
sudo systemctl unmask hostapd.service
sudo systemctl enable hostapd.service
```

もし、wlan0を無効化して有線LANと6GHz帯アクセスポイントのみの利用としたい場合には、`sudo iwconfig wlan0 txpower off`します。
（解説記事は[こちら](https://qiita.com/hayate242/items/4f3d07d63a5b9577cb55)）

# 完了

`sudo hostapd_cli status`すると、6GHz帯でアクセスポイントが稼働していることがわかります。お疲れ様でした。
```
$ sudo hostapd_cli status
Selected interface 'wlan1'
state=ENABLED
phy=phy1
freq=6235
num_sta_non_erp=0
num_sta_no_short_slot_time=1
num_sta_no_short_preamble=1
olbc=0
num_sta_ht_no_gf=0
num_sta_no_ht=1
num_sta_ht_20_mhz=0
num_sta_ht40_intolerant=0
olbc_ht=0
ht_op_mode=0x0
cac_time_seconds=0
cac_time_left_seconds=N/A
channel=57
edmg_enable=0
edmg_channel=0
secondary_channel=0
ieee80211n=0
ieee80211ac=0
ieee80211ax=1
beacon_int=100
dtim_period=2
he_oper_chwidth=0
he_oper_centr_freq_seg0_idx=0
he_oper_centr_freq_seg1_idx=0
supported_rates=0c 12 18 24 30 48 60 6c
max_txpower=23
bss[0]=wlan1
bssid[0]=94:18:65:xx:xx:xx
ssid[0]=foo-ax
num_sta[0]=1
```