デフォルトでは、国の規制設定が定義されていない場合、WW(ワールドワイドセーフ設定)を使用します。この設定では、世界中で許可されているバンドのみで送信し、TX 電力はすべての国の規制に適合します。
1/ APモードで動作している場合:
- 通常、国コードを設定します(例: country_code=JP)をhostapd.confに設定して国を定義します。
- この国コードは、hostapd.conf で ieee80211d=1 を設定した場合、接続されているすべての STA に通知されます。
- 国は "iw reg set" コマンドでも設定できます。
2/ STAモードで動作する場合
- 国コードは "iw reg set" コマンド、または wpa_supplicant.conf(例: country=jp)で設定できます。
- 802.11d が有効な AP に接続すると、STA は AP の国設定に切り替わります(この動作は driver パラメータ country_ie_ignore=1 を追加することで無効化できます)。
国が設定されると:
- その国で許可されているチャンネルでのみ送信します。
- その国で定められた最大 TX 電力で送信します。
- その国で DFS チャンネルとして定義されているチャンネルでは、DFS 機能を使用する場合があります。
1/ デフォルトでは、Linuxの規制設定(/lib/firmware/regulatory.db、db.txtから生成)を使用します。
これらの設定により、国ごとに許可されるチャンネル、DFS フラグ、および最大 TX 電力が定義されます。
詳細は「Regulatory db」セクションを参照してください。
2/ Linux の規制設定は、次の方法で上書きできます:
a. cntry_txpwr=0 および txpwrlimit_cfg=nxp/txpower.bin ドライバー パラメータ(txpower.conf(channel/MCS→txpower)から生成。詳細は AN13009 を参照)。
すべての国で同一の設定(静的)。
db.txt のチャンネル/フラグと、db.txt と txpower.bin/rgpower.bin との間で決定される最小 TX 電力を使用します。
b. cntry_txpwr=1(nxp/txpower_XX.bin ファイル(txpower.conf(channel/MCS→txpower)から生成。詳細は AN13009 を参照)を使用)
各国 XX ごとに txpower_XX.bin ファイルが 1 つ必要です(例: iw reg set XX により動的にロード)。
db.txt のチャンネル/フラグと、db.txt と txpower_XX.bin との間で決定される最小 TX 電力を使用します。
|
cntry_txpwr |
txpwrlimit_cfg |
TX出力制限 |
方法 |
|
0 |
nxp/txpower.bin |
nxp/txpower.bin (スタティック) |
V1 |
|
1 |
- |
nxp/txpower_XX.bin (動的) |
V1 cfg |
デフォルトの TX 電力テーブルは提供されていますが、顧客はハードウェアに応じてこれらの TX 電力設定を調整できます。
「AN13009 Wi-Fi Tx Power Management in Linux」を参照してください。
出典: https://wireless.wiki.kernel.org/en/developers/Regulatory/wireless-regdb
Wi-Fi の規制設定(許可されるチャンネルなど)は db.txt に定義され、regulatory.db に変換されて /lib/firmware に保存されます。
公式の db.txt をここから取得し、以下のコマンドで regulatory.db を生成できます。
git clone git://git.kernel.org/pub/scm/linux/kernel/git/wens/wireless-regdb.git
作成する
regulatory.db の整合性は Linux カーネルによって検証されます。
以下のカーネル設定により REGDB の署名チェックを無効化できます:
CONFIG_EXPERT=y
CONFIG_CFG80211_CERTIFICATION_ONUS=y
# CONFIG_CFG80211_REQUIRE_SIGNED_REGDB が設定されていない
カーネルを再構築してフラッシュします。
scp Image [email protected]:/run/media/mmcblk0p1/
root@imx8mqevk:~# iw reg get
global
country 00: DFS-UNSET
(2402 - 2472 @ 40), (N/A, 20), (N/A)
(2457 - 2482 @ 20), (N/A, 20), (N/A), AUTO-BW, PASSIVE-SCAN
(2474 - 2494 @ 20), (N/A, 20), (N/A), NO-OFDM, PASSIVE-SCAN
(5170 - 5250 @ 80), (N/A, 20), (N/A), AUTO-BW, PASSIVE-SCAN
(5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS, AUTO-BW, PASSIVE-SCAN
(5490 - 5730 @ 160), (N/A, 20), (0 ms), DFS, PASSIVE-SCAN
(5735 - 5835 @ 80), (N/A, 20), (N/A), PASSIVE-SCAN
(57240 - 63720 @ 2160), (N/A, 0), (N/A)
root@imx8mqevk:~# iw reg get
global
country FR: DFS-ETSI
(2400 - 2483 @ 40), (N/A, 20), (N/A)
(5150 - 5250 @ 80), (N/A, 23), (N/A), NO-OUTDOOR, AUTO-BW
(5250 - 5350 @ 80), (N/A, 20), (0 ms), NO-OUTDOOR, DFS, AUTO-BW
(5470 - 5725 @ 160), (N/A, 26), (0 ms), DFS
(5725 - 5875 @ 80), (N/A, 13), (N/A)
(57000 - 66000 @ 2160), (N/A, 40), (N/A)
デフォルトでは(国が設定されていない場合)、ワールドドメインを使用しています。これは最も制限が厳しいです。
次に、ドライバー モジュールのパラメータや wpa_supplicant.conf などを使用して国コードを設定するか、802.11d によりアクセスポイントから自動的に提供される国コードを取得できます。これにより、規制ドメイン(許可されるチャンネルなど)が更新されます。
「iw reg get」コマンドを使用して国の設定を確認することができます。
規制ドメインは、wpa_supplicant.conf で設定するチャネルリストよりも優先されます。