Regdomain limits lower than the ones in wireless-regdbdb for a country

I’m trying to understand why the router is setting a lower txpower value than the one in the oficial db for 5ghz frequencies

Country: BR

kernel defaults for BR is up to 27dBm on most of the channels


this is correctly set in the router:

root@OpenWrt:~# iw reg get
global
country BR: DFS-FCC
(2400 - 2483 @ 40), (N/A, 30), (N/A)
(5150 - 5250 @ 80), (N/A, 27), (N/A), NO-OUTDOOR, AUTO-BW
(5250 - 5350 @ 80), (N/A, 27), (0 ms), NO-OUTDOOR, DFS, AUTO-BW
(5470 - 5725 @ 160), (N/A, 27), (0 ms), DFS, AUTO-BW
(5725 - 5850 @ 80), (N/A, 30), (N/A), AUTO-BW
(5925 - 7125 @ 320), (N/A, 12), (N/A), NO-OUTDOOR
(57000 - 71000 @ 2160), (N/A, 40), (N/A)

however, the current txpower is set to 26dBm:

root@OpenWrt:~# iw dev

phy#1

Interface phy1-ap0

ifindex 10

wdev 0x100000001

addr
ssid
type AP

channel 48 (5240 MHz), width: 80 MHz, center1: 5210 MHz

txpower 26.00 dBm

trying to increase it to 27 has no effect and no error messages

root@OpenWrt:~# iw dev phy0-ap0 set txpower fixed 27dBm
root@OpenWrt:~#

Now I undersand that cranking up the txpower may have the opposite effect than what is usually desired, but I want to understand where this value of 26dBm is comming from, because on a linux client I’m also getting limited to a much lower txpower than regulatory limits and I have no idea where these limits are comming from:



$ iw reg get
global
country BR: DFS-FCC
(2400 - 2483 @ 40), (N/A, 30), (N/A)
(5150 - 5250 @ 80), (N/A, 27), (N/A), NO-OUTDOOR, AUTO-BW
(5250 - 5350 @ 80), (N/A, 27), (0 ms), NO-OUTDOOR, DFS, AUTO-BW
(5470 - 5725 @ 160), (N/A, 27), (0 ms), DFS, AUTO-BW
(5725 - 5850 @ 80), (N/A, 30), (N/A), AUTO-BW
(5925 - 7125 @ 320), (N/A, 12), (N/A), NO-OUTDOOR
(57000 - 71000 @ 2160), (N/A, 40), (N/A)

phy#0 (self-managed)
country BR: DFS-UNSET
(2402 - 2437 @ 40), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS, NO-80MHZ, NO-160MHZ
(2422 - 2462 @ 40), (6, 22), (N/A), AUTO-BW, NO-80MHZ, NO-160MHZ
(2447 - 2482 @ 40), (6, 22), (N/A), AUTO-BW, NO-HT40PLUS, NO-80MHZ, NO-160MHZ
(5170 - 5190 @ 160), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, NO-320MHZ, PASSIVE-SCAN
(5190 - 5210 @ 160), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, NO-320MHZ, PASSIVE-SCAN
(5210 - 5230 @ 160), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, NO-320MHZ, PASSIVE-SCAN
(5230 - 5250 @ 160), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, NO-320MHZ, PASSIVE-SCAN
(5250 - 5270 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, NO-320MHZ, PASSIVE-SCAN
(5270 - 5290 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, NO-320MHZ, PASSIVE-SCAN
(5290 - 5310 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, NO-320MHZ, PASSIVE-SCAN
(5310 - 5330 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, NO-320MHZ, PASSIVE-SCAN
(5490 - 5510 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, NO-320MHZ, PASSIVE-SCAN
(5510 - 5530 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, NO-320MHZ, PASSIVE-SCAN
(5530 - 5550 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, NO-320MHZ, PASSIVE-SCAN
(5550 - 5570 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, NO-320MHZ, PASSIVE-SCAN
(5570 - 5590 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, NO-320MHZ, PASSIVE-SCAN
(5590 - 5610 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, NO-320MHZ, PASSIVE-SCAN
(5610 - 5630 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, NO-320MHZ, PASSIVE-SCAN
(5630 - 5650 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, NO-320MHZ, PASSIVE-SCAN
(5650 - 5670 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, NO-160MHZ, NO-320MHZ, PASSIVE-SCAN
(5670 - 5690 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, NO-160MHZ, NO-320MHZ, PASSIVE-SCAN
(5690 - 5710 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, NO-160MHZ, NO-320MHZ, PASSIVE-SCAN
(5710 - 5730 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, NO-160MHZ, NO-320MHZ, PASSIVE-SCAN
(5735 - 5755 @ 80), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS, NO-160MHZ, NO-320MHZ
(5755 - 5775 @ 80), (6, 22), (N/A), AUTO-BW, NO-HT40PLUS, NO-160MHZ, NO-320MHZ
(5775 - 5795 @ 80), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS, NO-160MHZ, NO-320MHZ
(5795 - 5815 @ 80), (6, 22), (N/A), AUTO-BW, NO-HT40PLUS, NO-160MHZ, NO-320MHZ
(5815 - 5835 @ 40), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS, NO-80MHZ, NO-160MHZ, NO-320MHZ
(5945 - 7065 @ 160), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-320MHZ, PASSIVE-SCAN
(7065 - 7105 @ 40), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-80MHZ, NO-160MHZ, NO-320MHZ, PASSIVE-SCAN
(7105 - 7125 @ 20), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, NO-HT40PLUS, NO-80MHZ, NO-160MHZ, NO-320MHZ, PASSIVE-SCAN

iw dev
phy#0
Unnamed/non-netdev interface
wdev 0x2
addr
type P2P-device
Interface wlp6s0
ifindex 3
wdev 0x1
addr
ssid
type managed
channel 48 (5240 MHz), width: 80 MHz, center1: 5210 MHz
txpower 22.00 dBm

although this is out of the scope for this forum, understanding what is enforcing the lower than regulatory limit might give me a clue to understand the client limitations

I believe OpenWrt uses the lower of the world regulatory domain and the domain (country) you specify in your configuration, for legal reasons.

EDIT: I think some devices specify a regulatory domain in their EEPROM, in which case OpenWrt will use the lower of that domain and the one you specify.

It also depends on installed amplifier circuit programmed in calibration data at the time of manufacturing.
If all routers were capable of any power you could use it to microwave chickens at 60dBm/1kW
If you buy a router in Brasil it is very likely up to 30dBm/1W , but if it is originally for EU nobody there would notice it is 20 or 22dBm max...

what puzzles me is that earlier this year this exact model was reporting 27dBm txpower, so something must have changed in OpenWRT/Linux kernel and not in the device itself. I couldn’t find any country or unset config in the wireless-regdomain db that has 26dBm set as maximum txpower, which would explain some kind of fallback or limitation for the chosen frequency

@brada4 this probably explains why the linux client is maxxed at 22dBm, thanks

iw phy shows more current summary of radio capabilities. reg get shows some freeform text returned by driver, sometimes fixed picture in other country or even empty.

2 Likes