Skip to content

Instantly share code, notes, and snippets.

@francoism90
Last active June 11, 2024 16:26
Show Gist options
  • Save francoism90/3dede7973354d067c41bff5e54203fe9 to your computer and use it in GitHub Desktop.
Save francoism90/3dede7973354d067c41bff5e54203fe9 to your computer and use it in GitHub Desktop.
Change country to unlock channels, increase TX-power. (Use at your own risk)

Warning

Following instructions are provided without any warranty, and may even get you in trouble legally. The instructions are provided for testing, and should be use with care. We (including commentators) are not responsible for any damage to your device(s).

Introduction

This may enable additional channels and power (in most cases don't) on ASUS Merlin provided routers.

The nvram settings have been tested on a ASUS RT-AX58U, they may work on other models as well (ASUS RT-AC78U).

Please use nvram dump and adjust when needed, as they may differ on your device!

Credits to the commentators below, and members on the SNBForums posting instructions. Please post your findings, and help others when needed. :)

Login into router using SSH

See https://www.htpcguides.com/enable-ssh-asus-routers-without-ssh-keys/ for instructions.

Backup current settings

nvram dump > dump.txt

NOTE: You need to copy the dump.txt (or output by nvram dump to somewhere else, as they will be lost on reboot

JFFS custom scripts and configs

Make sure Enable JFFS custom scripts and configs, is enabled in System settings. See https://github.com/RMerl/asuswrt-merlin.ng/wiki/User-scripts for details.

Create a /jffs/scripts/wl file, and paste the nvram overwrites into this file (see given example file).

Create/adjust /jffs/scripts/init-start:

#!/bin/sh

[ -x /jffs/scripts/wl ] && /jffs/scripts/wl &
# [ -x /jffs/addons/AdGuardHome.d/AdGuardHome.sh ] && /jffs/addons/AdGuardHome.d/AdGuardHome.sh init-start & # place before addons

Create/adjust /jffs/scripts/services-start:

#!/bin/sh

cru a wl "0 */8 * * * /jffs/scripts/wl"

Make sure the scripts are executable:

chmod a+rx /jffs/scripts/*

Applying changes

You need to reboot the router to apply changes

Please note changing settings in the UI, may undo nvram changes.

It is recommended to change settings using CLI instead:

nvram set wl1_chanspec=149/160
# nvram set wl1_chanspec=149/80
# nvram set wl1_chanspec=48
service restart_wireless

To make the changes persistent, make sure to add them to the jffs/scripts/wl script.

#!/bin/sh
# Allow all channels
nvram set location_code=#a
nvram set 0:ccode=#a
nvram set 0:regrev=0
nvram set 1:ccode=#a
nvram set 1:regrev=0
nvram set territory_code=CN/02 # or US/02
nvram set wl_country_code=#a
nvram set wl_reg_mode=h
nvram set wl0_chlist="1 2 3 4 5 6 7 8 9 10 11 12 13 14"
nvram set wl0_country_code=#a
nvram set wl0_country_rev=0
nvram set wl0_reg_mode=h
nvram set wl1_chlist="36 40 44 48 52 56 60 64 100 104 108 112 116 120 124 128 132 136 140 149 153 157 161 165 169 173 177"
nvram set wl1_country_code=#a
nvram set wl1_country_rev=0
nvram set wl1_reg_mode=h
nvram set acs_dfs=0
nvram set wl_acs_excl_chans_dfs=
nvram set wl_acs_excl_chans=
nvram set wl0_acs_dfs=0
nvram set wl0_acs_excl_chans_base=
nvram set wl0_acs_excl_chans=
nvram set wl1_acs_dfs=0
nvram set wl1_acs_excl_chans_base=
nvram set wl1_acs_excl_chans=
nvram set acs_unii4=1
# Channel selection
# nvram set wl0_chanspec=0 # auto select
# nvram set wl1_chanspec=0 # auto select
# nvram set wl_chanspec=0 # auto select
# nvram set wl0_sel_channel=7/80 # force 2.4GHz channel
# nvram set wl1_sel_channel=149/80 # force 5GHz channel
# Set TX-Power (risky!)
nvram set 0:maxp2ga0=120
nvram set 0:maxp2ga1=120
nvram set 1:maxp5gb0a0=120
nvram set 1:maxp5gb0a1=120
nvram set 1:maxp5gb0a2=120
nvram set 1:maxp5gb0a3=120
nvram set 1:maxp5gb1a0=120
nvram set 1:maxp5gb1a1=120
nvram set 1:maxp5gb1a2=120
nvram set 1:maxp5gb1a3=120
nvram set 1:maxp5gb2a0=120
nvram set 1:maxp5gb2a1=120
nvram set 1:maxp5gb2a2=120
nvram set 1:maxp5gb2a3=120
nvram set 1:maxp5gb3a0=120
nvram set 1:maxp5gb3a1=120
nvram set 1:maxp5gb3a2=120
nvram set 1:maxp5gb3a3=120
nvram set 1:maxp5gb4a0=120
nvram set 1:maxp5gb4a1=120
nvram set 1:maxp5gb4a2=120
nvram set 1:maxp5gb4a3=120
nvram set wl0_txpower=500
nvram set wl1_txpower=500
nvram set wl_txpower=500
# Commit changes
nvram commit
@francoism90
Copy link
Author

I have improved the instructions, based on comments given on this gist (many thanks for that!).

If anything is missing, please let me know. :)

@barkmarkin
Copy link

Well thank you if it says 28 then I'm getting the most out of my device correct?

@francoism90
Copy link
Author

francoism90 commented Aug 21, 2023

@barkmarkin It all depends, even if your router uses a different country, the device still can use different/legit settings. I think 28 in tx power?

I've done some reading, and tried multiple things, but it seems WiFi is able to send a signal, which make sure no one can actually change the country, as like forcing Germany when being in the EU.

As said in the disclaimer, it may work, but results may vary.

@ovidiu4
Copy link

ovidiu4 commented Sep 14, 2023

Hi guys,

None of the settings from above worked on my ASUS ZenWiFi Pro ET12.
I am trying to enable the 6GHz channel but nothing seems to work.

nvram set location_code=#a nvram set 0:ccode=#a nvram set 0:regrev=0 nvram set 1:ccode=#a nvram set 1:regrev=0 nvram set 2:ccode=#a nvram set 2:regrev=0 nvram set territory_code=CN/02 nvram set wl_country_code=#a nvram set wl_reg_mode=h nvram set wl2_country_code=#a nvram set wl2_country_rev=0 nvram set wl2_reg_mode=h nvram set acs_unii4=1 nvram set wl_acs_excl_chans_dfs= nvram set wl_acs_excl_chans= nvram set wl2_acs_dfs=1 nvram set wl2_acs_excl_chans_base= nvram set wl2_acs_excl_chans=

Does anyone have any idea what else they may be locking on this router?

@Doc-Steve
Copy link

Doc-Steve commented Nov 21, 2023

Hi, does anyone know which settings change the "PRE-ISM Channel Availability Check (CAC)" for DFS-channels? I don't want to switch DFS off with #a, In-Service-Monitoring is fine and I think necessary. But I'd like to reduce the initial wait time for the WLAN to come up scanning for 60s after every reboot or WLAN channel change. Any tips appreciated - thanks in advance.

@francoism90
Copy link
Author

@ovidiu4 @Doc-Steve Please use nvram dump, and check the values.

Hopefully you can force this, by changing the nvram setting.

@ovidiu4
Copy link

ovidiu4 commented Dec 4, 2023

@francoism90 there are literally 5000 lines in the nvram dump and i have no idea what to look for...
Somehow the radio for the 6GHz band is disabled because even though i can change any settings i want, there is no network broadcasting. Asus technicians are useless like always so i am stuck

@Warborn123
Copy link

Hi everyone, I got a dumb question. What does wl0, wl1 and wl2 stand for? Someone on the other forum said it's corresponding to 2.4GHz, 5GHz and 6GHz, but I start to think that's not the case?

@francoism90
Copy link
Author

@Warborn123 In most cases they are.

You could dump nvram before and after making changes, so check what values are being adjusted.

If I'm not mistaken commands exists as well, but I'm on mobile atm.

@Warborn123
Copy link

Warborn123 commented Dec 30, 2023

@Warborn123 In most cases they are.

You could dump nvram before and after making changes, so check what values are being adjusted.

If I'm not mistaken commands exists as well, but I'm on mobile atm.

Hmmm, interesting. I found the following code on the other forum, and applied it to my UK version AXE11000, and it worked. But I noticed that there's no wl2 command in there, but the TX power of the 6Ghz did get a massive boost. That's when I start to wonder what do wl0, wl1 and wl2 mean.

nvram set location_code=AU
nvram set wl0_country_code=AU
nvram set 0:ccode=AU
nvram set wl1_country_code=AU
nvram set 1:ccode=AU
nvram commit
service restart_wireless

Also, using this command nvram show | grep -e 'country_code\|location_code\|territory_code\|ccode', I got the following results:

0:ccode=AU
1:ccode=ALL
2:ccode=ALL
3:ccode=ALL
location_code=AU
territory_code=EU/01
size: 112260 bytes (18812 left)
wl0_country_code=ALL
wl1_country_code=ALL
wl2_country_code=ALL
wl_country_code=E0

It's quite strange, isn't it? Although the location code is AU now, but the territory code and wl_country are still EU? I was wondering if it's fine to leave it like this, or maybe I should find the command that change the territory_code and wl_country_code to AU as well? Thanks for your help!

@francoism90
Copy link
Author

@Warborn123 Unfortunately this is in most cases hardware related. They seem to force the region, with some hidden signals. Yeah, it's pretty weird.

So even when you set it, it doesn't mean it (fully) works.

@pasko-zh
Copy link

@Warborn123 : Were you also able to change 6 GHz channels on your AXE11000, i.e., to allow those US/Canada channels (channel 97, 6435 MHz and above) that are "forbidden" here in Europe?

@Warborn123
Copy link

Warborn123 commented Dec 30, 2023

@Warborn123 : Were you also able to change 6 GHz channels on your AXE11000, i.e., to allow those US/Canada channels (channel 97, 6435 MHz and above) that are "forbidden" here in Europe?

Yep, it's quite wild. I guess it has something to do with that ccode=ALL or wl2_country_code=ALL. My router now has almost all the frequency band unlocked for 2.4, 5 and 6GHz.

IMG_3481

@pasko-zh
Copy link

@Warborn123 : Were you also able to change 6 GHz channels on your AXE11000, i.e., to allow those US/Canada channels (channel 97, 6435 MHz and above) that are "forbidden" here in Europe?

Yep, it's quite wild. I guess it has something to do with that ccode=ALL or wl2_country_code=ALL. My router now has almost all the frequency band unlocked for 2.4, 5 and 6GHz.

Cool! That is good news. Thanks!

@robinjoo1
Copy link

@Warborn123 : Were you also able to change 6 GHz channels on your AXE11000, i.e., to allow those US/Canada channels (channel 97, 6435 MHz and above) that are "forbidden" here in Europe?

Yep, it's quite wild. I guess it has something to do with that ccode=ALL or wl2_country_code=ALL. My router now has almost all the frequency band unlocked for 2.4, 5 and 6GHz.

IMG_3481

thanks that worked for me and i didnt even have to include a file with that text/commands in init start :D

@nudeln
Copy link

nudeln commented Jan 15, 2024

I am a complete beginner in the field, but I think I was able to increase my signal as well on my RT-AX92U
running 3.0.0.4.388_23630-g9d6ee22, I have set nvram as per:
admin@RT-AX92U-95D0:/tmp/home/root# nvram dump | grep 'country|code|location|txpower'
1:ccode=ALL
2:ccode=ALL
3:ccode=ALL
ddns_return_code=,200
ddns_return_code_chk=,200
size: 83778 bytes (47294 left)
fb_country=
location_code=#a
modem_country=
modem_pincode=
modem_pincode_opt=1
oauth_google_auth_code=
rc_support=mssid 2.4G 5G update usbX2 switchctrl manual_stb 11AX pwrctrl WIFI_LOGO nandflash movistarTriple wifi2017 app ofdma wpa3 reboot_schedule ipv6 ipv6pt s46 ocnvc PARENTAL2 dnsfilter dnspriv dualwan pptpd openvpnd utf8_ssid printer modem webdav rrsut cloudsync media appnet timemachine hdspindown diskutility dnssec usb_bk frs_feedback dblog email 5G-2 bwdpi wrs_wbl ookla HTTPS letsencrypt ssh vpnc vpn_fusion repeater psta wl6 user_low_rssi tcode usericon cfg_wps_btn stainfo cloudcheck realip lacp wanbonding wtfast ifttt alexa ipsec_srv mumimo netool cfg_sync no_finiwl fupgrade afwupg betaupg amas bcmwifi bcmhnd mbo conndiag eula proxysta iperf3 gn_wbl amazon_wss account_binding gameMode wireguard ftp_ssl acl96 dhdlog dis11b smart_connect
secret_code=22774156
territory_code=UK/01
wl0_country_code=ALL
wl0_country_rev=0
wl0_txpower=300
wl1_country_code=ALL
wl1_country_rev=0
wl1_txpower=300
wl2_country_code=ALL
wl2_country_rev=0
wl2_txpower=300
wl_country_code=#a
wl_country_rev=0
wl_txpower=300
admin@RT-AX92U-95D0:/tmp/home/root# wl txpwr_target_max
Maximum Tx Power Target (chanspec:0x100e): 25.00 25.00 25.00

But I think location_code was the one that actually affected txpwr_target_max and had it increased from 15.25 to 25 dBm, and this also seems to be persistent. wl*_country_code are just set by the value of location_code.

Ubiquiti WiFiman also states 25 dBm, and I get the impression that my connection in the, from the router, most remote room has improved.
image

@Linden1
Copy link

Linden1 commented Feb 21, 2024

Quick question. It's great to have a little punch with the increased power, but communication works both ways. So has anyone made any beneficial changes to the rxgain settings?

@sarusani
Copy link

sarusani commented Feb 29, 2024

These settings work great on my RT-AC66U (Asuswrt-Merlin 374 LTS Beta - 374.43_53D7j9527)
I get about -20dBm on 2.4GHz and -10dBm on 5Ghz compared to stock.

#!/bin/sh

# Allow all channels
nvram set pci/1/1/ccode=#a
nvram set pci/1/1/regrev=0
nvram set pci/2/1/ccode=#a
nvram set pci/2/1/regrev=0
nvram set regulation_domain=#a
nvram set regulation_domain_5G=#a
nvram set wl_country_code=#a
nvram set wl_country_rev=0
nvram set wl0_country=#a
nvram set wl0_country_code=#a
nvram set wl0_country_rev=0
nvram set wl0_reg_mode=off
nvram set wl1_country=#a
nvram set wl1_country_code=#a
nvram set wl1_country_rev=0
nvram set wl1_reg_mode=off

# Channel selection
nvram set wl0_chanspec=1l
nvram set wl_chanspec=100/80
nvram set wl1_chanspec=100/80

# Set TX-Power
pci/1/1/maxp2ga0=0x78
pci/1/1/maxp2ga1=0x78
pci/1/1/maxp2ga2=0x78
pci/2/1/maxp5ga0=120,120,120,120
pci/2/1/maxp5ga1=120,120,120,120
pci/2/1/maxp5ga2=120,120,120,120
pci/2/1/maxp2ga0=120
pci/2/1/maxp2ga1=120
pci/2/1/maxp2ga2=120
nvram set wl0_TxPower=708
nvram set wl_TxPower=708
nvram set wl1_TxPower=708

# Commit changes
nvram commit

@pasko-zh
Copy link

pasko-zh commented Feb 29, 2024

@sarusani : Cool, let's see how much you are really blowing out 😁

  1. First check the maximal allowed dbm per channel, for 5GHz most likely eth6 is the correct interface on your router model: wl -i eth6 chanspec_txpwr_max
  2. Then check the nominal power (on some Asus models this is simply the value from 1. minus 1.5 dB): wl -i eth6 txpwr_target_max
  3. Check the maximum power with wl -i eth5 txpwr1 (Note: You can set this up to 30.75 dbm or so, but you cannot get this much of power out, because it is capped by the limit from 1.)
  4. With this you can check the last actual used power per antenna: wl -i eth6 txpwr_adj_est

@pasko-zh
Copy link

pasko-zh commented Feb 29, 2024

Quick question. It's great to have a little punch with the increased power, but communication works both ways. So has anyone made any beneficial changes to the rxgain settings?

Let's see how well your router is hearing your clients

  1. First see who is connected, for 5 GHz most likely the interface is eth6: wl -i eth6 assoclist
  2. Then for each connected client you can check: wl -i eth6 sta_info MAC ADDRESS OF CLIENT, then you see amomg many things, RSSI

In general, if your client has a very low RSSI seen from the AP, then you should try to improve Tx power on the client side. If your client runs on linux and has a wifi card which is not self-managed, then there might be options to do that, e.g., changing regulatory country settings with iw reg set XX etc. However: If your client has an Intel card, e.g., AX-2XX, with LAR (Location-Aware Regulatory), then you have to stick what LAR detects as country, you cannot override it with iw because the interface is shown as self-managed by LAR 💩

@sarusani
Copy link

I tried to get some infos, but I'm not very successful...

If I look at the nvram show data I can find eth0 & eth1 eth2:

acs_ifnames=eth1 eth2
wl_ifnames=eth1 eth2
lan_ifnames=vlan1 eth1 eth2
wl_ifname=eth2
wl0_ifname=eth1
wl1_ifname=eth2
wan_ifnames=eth0
wan0_ifname=eth0
ipv6_ifname=eth0

So eth1 is 2.4GHz and eth2 is 5GHz.

chanspec_txpwr_max, txpwr_target_max & txpwr_adj_est report
wl: Unsupported

txpwr1 reports
TxPower is 127 qdbm, 31.75 dbm, 1496 mW Override is Off

_sta_info_
5GHz (eth2)
Closest device: (about 3 meters from antennas)

rateset [ 6 9 12 18 24 36 48 54 ]
idle 10 seconds
in network 671 seconds
state: AUTHENTICATED ASSOCIATED AUTHORIZED
flags 0x613a: WME PS N_CAP
tx pkts: 437
tx failures: 0
rx ucast pkts: 861
rx mcast/bcast pkts: 42
rate of last tx pkt: 866667 kbps
rate of last rx pkt: 6000 kbps
rx decrypt succeeds: 456
rx decrypt failures: 0

Farthest device: (about 20 meters from antennas - one floor down)

rateset [ 6 9 12 18 24 36 48 54 ]
idle 1 seconds
in network 1180 seconds
state: AUTHENTICATED ASSOCIATED AUTHORIZED
flags 0x603a: WME N_CAP
tx pkts: 2772
tx failures: 0
rx ucast pkts: 3193
rx mcast/bcast pkts: 224
rate of last tx pkt: 216000 kbps
rate of last rx pkt: 200000 kbps
rx decrypt succeeds: 3535
rx decrypt failures: 0

2.4GHz (eth1)
Closest device:

rateset [ 1 2 5.5 6 9 11 12 18 24 36 48 54 ]
idle 0 seconds
in network 187 seconds
state: AUTHENTICATED ASSOCIATED AUTHORIZED
flags 0x613a: WME PS N_CAP
tx pkts: 10124
tx failures: 4
rx ucast pkts: 2582
rx mcast/bcast pkts: 55
rate of last tx pkt: 130000 kbps
rate of last rx pkt: 1000 kbps
rx decrypt succeeds: 2083
rx decrypt failures: 0

Farthest device:

rateset [ 1 2 5.5 6 9 11 12 18 24 36 48 54 ]
idle 2 seconds
in network 1707 seconds
state: AUTHENTICATED ASSOCIATED AUTHORIZED
flags 0x613b: BRCM WME PS N_CAP
tx pkts: 798
tx failures: 0
rx ucast pkts: 1570
rx mcast/bcast pkts: 593
rate of last tx pkt: 72222 kbps
rate of last rx pkt: 24000 kbps
rx decrypt succeeds: 1513
rx decrypt failures: 0

Some measurements from my phone: (about 3 meters away)
Stock:
2.4GHz & 5GHz: -37dBm

New:
2.44GHz: -14dBm
5GHz: -26dBm

@Linden1
Copy link

Linden1 commented Feb 29, 2024

Quick question. It's great to have a little punch with the increased power, but communication works both ways. So has anyone made any beneficial changes to the rxgain settings?

Let's see how well your router is hearing your clients

  1. First see who is connected, for 5 GHz most likely the interface is eth6: wl -i eth6 assoclist
  2. Then for each connected client you can check: wl -i eth6 sta_info MAC ADDRESS OF CLIENT, then you see amomg many things, RSSI

In general, if your client has a very low RSSI seen from the AP, then you should try to improve Tx power on the client side. If your client runs on linux and has a wifi card which is not self-managed, then there might be options to do that, e.g., changing regulatory country settings with iw reg set XX etc. However: If your client has an Intel card, e.g., AX-2XX, with LAR (Location-Aware Regulatory), then you have to stick what LAR detects as country, you cannot override it with iw because the interface is shown as self-managed by LAR 💩

Was just an enquiry but i hope your reply helps someone else understand too. I don't really have any connection problems, my furthest device gives an RSSI of -64dBm on 5GHz. I've also managed to tune to output power down a little to reduce interference with my wireless headphones.

@Reeplosin
Copy link

is there any way to set the territory code on an ac86u? i have also tried creating a chrono job, but nothing, once the router reboots it returns WE/02 and the AC script is not activated. also i would like to understand which country this code belongs to because it does not appear anywhere

@nudeln
Copy link

nudeln commented Mar 1, 2024

is there any way to set the territory code on an ac86u? i have also tried creating a chrono job, but nothing, once the router reboots it returns WE/02 and the AC script is not activated. also i would like to understand which country this code belongs to because it does not appear anywhere

Please try:
nvram set location_code=#a
nvram commit

And reboot. This trimmed my previously German registered RT-AX92U quite a lot.

@Reeplosin
Copy link

Reeplosin commented Mar 1, 2024 via email

@pasko-zh
Copy link

pasko-zh commented Mar 3, 2024

@Reeplosin and all fyi

In general: If you restart wireless service, you will always return to the values (country etc.) fixed in the driver/firmware (or more precise: To the specific selection burned in the ROM out of all possible values in the driver, see below) So, restarting of wireless service happens also--apart from view exceptions as mentioned above in the comments--when you change settings via GUI.

Thus, there are two ways to overcome this a) put NVRAM changes in the init-start script (and then never issue a restart of wirelss service) or b) do the changes via wl command.

For a) See comments above and follow the golden rule not to restart wireless service!

For b) :

  • make sure you have latest wl version, i.e. flash latest merlin firmware. On my AX58U and AXE11000, both on 3004.388.6_2, wl ver Broadcom BCA: 17.10 RC157.2809 wl0: Dec 15 2023 10:37:38 version 17.10.157.2809 (r801046) 8e0370b

  • check available commands of wl with: wl -h and, yes this gives a different result, wl -i eth6 -h (assuming eth6 is 5G here, you need to check devices on your router model)

  • Check which countries are available in your current firmware: wl country list You can only select one of this country listed here.

  • Each country comes with a certain list of "revisions". These are regulatory settings that have changed over time, you can check which ones are supported with e.g., wl country_rev US

  • You set a country with a specific revision as wl -i ethXX country "US/699" (For Country = ALL you don't need to specify the revision)

  • So, you can do on your asus, assuming eth6 is 5G:

wl -i eth6 down
wl -i eth6 country ALL
wl -i eth6 country_abbrev_override "US"
wl -i eth6 regulatory 1
wl -i eth6 chanspec 36/160
wl -i eth6 up
wl -i eth6 5g_rate auto
wl -i eth6 txpwr1 -o -m 1496

Result:

  1. Country ALL will result in the maximum power your device can blow out in 2G / 5G / 6G and make all channels selectable. The maximum power your router can blow out is limited in the driver/firmware for country = ALL. You cannot go higher than this, independant what you select in NVRAM or with 5. below. These values are fixed in the CLM (country locale matrix) Blob loaded into the driver. Check it wich wl clmver. Or if you manage to hack the CLM Blob, you could override and load it via wl -i eth6 clmload

  2. country_abbrev_override "US" this will make your wifi now look as if it has country US although it is set to ALL, i.e. the 802.11 beacon contains now country = US. This is very useful, if your clients in STAtion mode detect country settings based on beacon country info. If you don't send country info in the beacons, i.e. just set country to ALL, then your wifi client might switch to "world" mode. This is the least common denominator of all regulations on this planet, i.e. the most conservative setting: No (!) 6G and in 5G only very few channels with very little Tx power...

  3. regulatory 1 : Set 5G to 802.11d and disable 802.11h (DSF). You can check it with wl -i eth6 spect 802.11d mode

  4. chanspec : Set your channel here NOT in the GUI! Remember: Setting it in the GUI, will return to ROM settiings. For 80 or 160 MHz channels, you need to select a 20 MHz channel in the 80/160 MHz and not the center frequency of the 80/160 MHz channel. This will not work.
    Even on a AX58U you can use the full UNII-4 band, i.e. 165/160 is possible. Don't know if this will work on your router.
    Check settings with wl -i eth6 status Mode: Managed RSSI: 0 dBm SNR: 0 dB noise: -87 dBm Channel: 165/160 ...

  5. txpwr1 : See my comment above what this means.

NOTE: If your client uses Intel AX-2xx adpaters: You will always end up in a mess!! They use LAR... I changed to Mediatek MT7922 (RZ616). This one even gives me 6G on Windows 10 and has no LAR, so you can use all wifi channels.

@francoism90
Copy link
Author

@pasko-zh Very good info, will try to add it to the README. 👍

You could workaround LAR, but I don't think it's possible anymore, since most devices/firmwares use hidden signals as well. So even when you could disable LAR somehow, it would potentially be something else checking your country code.

Could you give more information about the county+ other nvram settings? I'd always understood CN/02 was the best one.

@Reeplosin
Copy link

@Reeplosine tutto per tua informazione

In generale: Se si riavvia il servizio wireless, si ritorneranno sempre ai valori (paese, ecc.) fissati nel driver/firmware (o più precisamente: alla selezione specifica masterizzata nella ROM tra tutti i valori possibili nel driver, vedere di seguito) Pertanto, il riavvio del servizio wireless avviene anche, a parte le eccezioni di visualizzazione come menzionato sopra nei commenti, quando si modificano le impostazioni tramite la GUI.

Pertanto, ci sono due modi per superare questo problema: a) inserire le modifiche NVRAM nello init-startscript (e quindi non riavviare mai il servizio wirelss) oppure b) eseguire le modifiche tramite wlcomando.

Per a) Vedi i commenti sopra e segui la regola d'oro per non riavviare il servizio wireless!

Per b):

  • assicurati di avere la versione wl più recente, ad esempio installa l'ultimo firmware Merlin. Sul mio AX58U e AXE11000, entrambi su 3004.388.6_2,wl ver Broadcom BCA: 17.10 RC157.2809 wl0: Dec 15 2023 10:37:38 version 17.10.157.2809 (r801046) 8e0370b
  • controlla i comandi disponibili di wl con: wl -he, sì, questo dà un risultato diverso wl -i eth6 -h(supponendo che eth6qui sia 5G, devi controllare i dispositivi sul tuo modello di router)
  • Controlla quali paesi sono disponibili nel tuo firmware attuale: wl country listpuoi selezionare solo uno dei paesi elencati qui.
  • Ogni paese viene fornito con un determinato elenco di "revisioni". Si tratta di impostazioni normative che sono cambiate nel tempo, puoi verificare quali sono supportate con ad es.wl country_rev US
  • Imposta un paese con una revisione specifica come wl -i ethXX country "US/699"(Per Paese = TUTTI non è necessario specificare la revisione)
  • Quindi, puoi fare sul tuo Asus, supponendo eth6 che sia 5G:
wl -i eth6 down
wl -i eth6 country ALL
wl -i eth6 country_abbrev_override "US"
wl -i eth6 regulatory 1
wl -i eth6 chanspec 36/160
wl -i eth6 up
wl -i eth6 5g_rate auto
wl -i eth6 txpwr1 -o -m 1496

Risultato:

  1. Country ALL garantirà la massima potenza che il tuo dispositivo può erogare in 2G / 5G / 6G e renderà tutti i canali selezionabili. La potenza massima che il router può erogare è limitata nel driver/firmware per paese = TUTTI. Non puoi andare più in alto di questo, indipendentemente da ciò che selezioni nella NVRAM o con 5. di seguito. Questi valori sono fissi nel BLOB CLM (matrice locale paese) caricato nel driver. Controlla quale wl clmver. Oppure, se riesci ad hackerare il BLOB CLM, puoi sovrascriverlo e caricarlo tramite wl -i eth6 clmload
  2. country_abbrev_override "US"questo farà sembrare che il tuo Wi-Fi abbia il paese USA anche se è impostato su TUTTI, ovvero il beacon 802.11 contiene ora paese = USA. Ciò è molto utile se i tuoi client in modalità STAtion rilevano le impostazioni del paese in base alle informazioni del paese del beacon. Se non invii informazioni sul paese nei beacon, ovvero imposti semplicemente il paese su TUTTI, il tuo client Wi-Fi potrebbe passare alla modalità "mondo". Questo è il minimo comune denominatore di tutte le normative del pianeta, ovvero l'impostazione più conservativa: niente (!) 6G e in 5G solo pochissimi canali con pochissima potenza Tx...
  3. regulatory 1: imposta 5G su 802.11d e disabilita 802.11h (DSF). Puoi verificarlo conwl -i eth6 spect 802.11d mode
  4. chanspec: Imposta il tuo canale qui NON nella GUI! Ricorda: impostandolo nella GUI, verranno ripristinate le impostazioni della ROM. Per i canali da 80 o 160 MHz, è necessario selezionare un canale da 20 MHz nel canale 80/160 MHz e non la frequenza centrale del canale 80/160 MHz. Questo non funzionerà.
    Anche su un AX58U è possibile utilizzare l'intera banda UNII-4, ovvero è possibile 165/160. Non so se funzionerà sul tuo router.
    Controlla le impostazioni con wl -i eth6 status Mode: Managed RSSI: 0 dBm SNR: 0 dB noise: -87 dBm Channel: 165/160 ...
  5. txpwr1 : Vedi il mio commento sopra cosa significa.

NOTA : Se il tuo client utilizza adattatori Intel AX-2xx: finirai sempre nei guai!! Usano LAR... Sono passato a Mediatek MT7922 (RZ616). Questo mi dà anche il 6G su Windows 10 e non ha LAR, quindi puoi usare tutti i canali Wi-Fi.

Interesting indeed. if i understand correctly i have to enter those commands inside the router, and do nvram commit right? seeing the model not if it also applies to ac86u, but i will take a look

@pasko-zh
Copy link

pasko-zh commented Mar 4, 2024

@pasko-zh Very good info, will try to add it to the README. 👍

You could workaround LAR, but I don't think it's possible anymore, since most devices/firmwares use hidden signals as well. So even when you could disable LAR somehow, it would potentially be something else checking your country code.

Could you give more information about the county+ other nvram settings? I'd always understood CN/02 was the best one.

Well, the wl command is a difficult animal. The help file is not really correct, i.e., many commands don't work. Some work on some models and some not. If you update the readme, this has to be clearly stated.
For instance, country_abbrev_override "US works on some router models, on some not. Also txpwr1 -o, where o stands for override, does not work...

Country Code:

  • The most less restrictive country setting, wrt to channels and Tx power, is #a (#a/0) <unknown>. (Whether set via NVRAM or via WL tool does not matter). You can easily compare different country settings regarding Tx power with wl -i ethXXX chanspec_txpwr_max. See above how to set a country per interface via WL tool.
  • Also, you cannot set your router to a country which is not in your firmware. Even if you set it in NVRAM, it has no effect. You get all supported countries via country list, see example for me (E0 is a superset for some european countries)
wl -i eth8 country list
Supported countries: country code and long name
#a
CA      CANADA
E0
KR      KOREA, REPUBLIC OF
US      UNITED STATES

So, no China 😀
Trying to set to China, gives:

wl -i eth8 country "CN"
wl: Unsupported

Concerning country setting, you have to experiment, what your wifi clients accept and what is more confusing them. For instance, setting country_abbrev_override = OFF and thus transmitting no country info in the 802.11 beacons, seems to work better with Ubuntu, even for 6G, but then my Pixel 7a does not "see" my 6G AP anymore... a bit of a kindergarten...

@Reeplosin
Copy link

@Reeplosine tutto per tua informazione

In generale: Se si riavvia il servizio wireless, si ritorneranno sempre ai valori (paese, ecc.) fissati nel driver/firmware (o più precisamente: alla selezione specifica masterizzata nella ROM tra tutti i valori possibili nel driver, vedere di seguito) Pertanto, il riavvio del servizio wireless avviene anche, a parte le eccezioni di visualizzazione come menzionato sopra nei commenti, quando si modificano le impostazioni tramite la GUI.

Pertanto, ci sono due modi per superare questo problema: a) inserire le modifiche NVRAM nello init-startscript (e quindi non riavviare mai il servizio wirelss) oppure b) eseguire le modifiche tramite wlcomando.

Per a) Vedi i commenti sopra e segui la regola d'oro per non riavviare il servizio wireless!

Per b):

  • assicurati di avere la versione wl più recente, ad esempio installa l'ultimo firmware Merlin. Sul mio AX58U e AXE11000, entrambi su 3004.388.6_2,wl ver Broadcom BCA: 17.10 RC157.2809 wl0: Dec 15 2023 10:37:38 version 17.10.157.2809 (r801046) 8e0370b
  • controlla i comandi disponibili di wl con: wl -he, sì, questo dà un risultato diverso wl -i eth6 -h(supponendo che eth6qui sia 5G, devi controllare i dispositivi sul tuo modello di router)
  • Controlla quali paesi sono disponibili nel tuo firmware attuale: wl country listpuoi selezionare solo uno dei paesi elencati qui.
  • Ogni paese viene fornito con un determinato elenco di "revisioni". Si tratta di impostazioni normative che sono cambiate nel tempo, puoi verificare quali sono supportate con ad es.wl country_rev US
  • Imposta un paese con una revisione specifica come wl -i ethXX country "US/699"(Per Paese = TUTTI non è necessario specificare la revisione)
  • Quindi, puoi fare sul tuo Asus, supponendo eth6 che sia 5G:
wl -i eth6 down
wl -i eth6 country ALL
wl -i eth6 country_abbrev_override "US"
wl -i eth6 regulatory 1
wl -i eth6 chanspec 36/160
wl -i eth6 up
wl -i eth6 5g_rate auto
wl -i eth6 txpwr1 -o -m 1496

Risultato:

  1. Country ALL garantirà la massima potenza che il tuo dispositivo può erogare in 2G / 5G / 6G e renderà tutti i canali selezionabili. La potenza massima che il router può erogare è limitata nel driver/firmware per paese = TUTTI. Non puoi andare più in alto di questo, indipendentemente da ciò che selezioni nella NVRAM o con 5. di seguito. Questi valori sono fissi nel BLOB CLM (matrice locale paese) caricato nel driver. Controlla quale wl clmver. Oppure, se riesci ad hackerare il BLOB CLM, puoi sovrascriverlo e caricarlo tramite wl -i eth6 clmload
  2. country_abbrev_override "US"questo farà sembrare che il tuo Wi-Fi abbia il paese USA anche se è impostato su TUTTI, ovvero il beacon 802.11 contiene ora paese = USA. Ciò è molto utile se i tuoi client in modalità STAtion rilevano le impostazioni del paese in base alle informazioni del paese del beacon. Se non invii informazioni sul paese nei beacon, ovvero imposti semplicemente il paese su TUTTI, il tuo client Wi-Fi potrebbe passare alla modalità "mondo". Questo è il minimo comune denominatore di tutte le normative del pianeta, ovvero l'impostazione più conservativa: niente (!) 6G e in 5G solo pochissimi canali con pochissima potenza Tx...
  3. regulatory 1: imposta 5G su 802.11d e disabilita 802.11h (DSF). Puoi verificarlo conwl -i eth6 spect 802.11d mode
  4. chanspec: Imposta il tuo canale qui NON nella GUI! Ricorda: impostandolo nella GUI, verranno ripristinate le impostazioni della ROM. Per i canali da 80 o 160 MHz, è necessario selezionare un canale da 20 MHz nel canale 80/160 MHz e non la frequenza centrale del canale 80/160 MHz. Questo non funzionerà.
    Anche su un AX58U è possibile utilizzare l'intera banda UNII-4, ovvero è possibile 165/160. Non so se funzionerà sul tuo router.
    Controlla le impostazioni con wl -i eth6 status Mode: Managed RSSI: 0 dBm SNR: 0 dB noise: -87 dBm Channel: 165/160 ...
  5. txpwr1 : Vedi il mio commento sopra cosa significa.

NOTA : Se il tuo client utilizza adattatori Intel AX-2xx: finirai sempre nei guai!! Usano LAR... Sono passato a Mediatek MT7922 (RZ616). Questo mi dà anche il 6G su Windows 10 e non ha LAR, quindi puoi usare tutti i canali Wi-Fi.

I performed the operation, I understood that the router after entering the commands should never be restarted otherwise everything returns as before, if I created a script to avoid having to do it manually would it work?

@pasko-zh
Copy link

pasko-zh commented Mar 4, 2024

@Reeplosin : You can run it manually or install it in a startup script. But you might call your script services-start instead of init-start, because you can use wl tool commands only after all services are up, see https://github.com/RMerl/asuswrt-merlin.ng/wiki/User-scripts.

Since I did a lot of tests, I just put everything in a bash script and execute it manually. (I don't reboot my routers for months).

So, here is one example of mine for one of my AX58U:

#!/bin/sh

# This does not work, if 2G is up
# wl country ALL

# Settings for 2G
wl -i eth5 down
wl -i eth5 country ALL
wl -i eth5 country_abbrev_override OFF
wl -i eth5 regulatory 1
wl -i eth5 chanspec -c 3 -b 2 -w 40 -s 1
wl -i eth5 up
wl -i eth5 2g_rate auto
wl -i eth5 txpwr1 -o -m 1496

# settings for 5G
wl -i eth6 down
wl -i eth6 country ALL
wl -i eth6 country_abbrev_override OFF

# set 802.11d only and disable 802.11h
wl -i eth6 regulatory 1
wl -i eth6 spect 0

wl -i eth6 chanspec 36/160
wl -i eth6 up
wl -i eth6 5g_rate auto
wl -i eth6 txpwr1 -o -m 1496

@Reeplosin
Copy link

Reeplosin commented Mar 6, 2024 via email

@Reeplosin
Copy link

anyway Just for information; i was checking some old tweaks for the AC68u transmission power and i came across a command that i didn't see used here "nvram set pa0maxpwr=708" it's strange because many nvram commands tried by users here come from that list of tweak commands that worked for the old 68u, this is one of them but i don't see it used, maybe for current devices it's not needed anymore i don't know

@pasko-zh
Copy link

pasko-zh commented Mar 8, 2024

@Reeplosin
Well, it all depends on your router model and OS, driver (and also wl) version. On my AXE11000 and AX58U pa0maxpwr doesn't exist in NVRAM.

Since we don't have an official documentation by broadcom, it's a bit shooting in the dark... or to put it differently try & error :-/

If you find comands working for you -- please share :)

@Reeplosin
Copy link

Reeplosin commented Mar 9, 2024 via email

@francoism90
Copy link
Author

@pasko-zh What's funny, is that I do have China as an option:

# wl -i eth6 country list
Supported countries: country code and long name
#a	
AU	AUSTRALIA
CA	CANADA
CN	CHINA
DE	GERMANY
E0	
FR	FRANCE
GB	UNITED KINGDOM
JP	JAPAN
KR	KOREA, REPUBLIC OF
Q1	Q1
SG	SINGAPORE
TW	TAIWAN, REPUBLIC OF CHINA
US	UNITED STATES

Was this from your AX-58U?

I think the nvram controls the hardware limits/bars, and with iw you actually boost them (or force some overriding).

I'll try to test later this weekend, and adjust the README.md.

Thanks again!

@pasko-zh
Copy link

pasko-zh commented Mar 9, 2024

@francoism90
Now it is getting political 🤣 I live in Switzerland, so I have :

ASUSWRT-Merlin GT-AXE11000 3004.388.6_0_rog Sat Jan 20 18:44:34 UTC 2024
pesce@GT-AXE11000-9520:/tmp/home/root# wl country list
Supported countries: country code and long name
#a
CA      CANADA
E0
KR      KOREA, REPUBLIC OF
US      UNITED STATES

pesce@GT-AXE11000-9520:/tmp/home/root# wl ver
Broadcom BCA: 17.10 RC157.2809
wl0: Dec 12 2023 09:43:28 version 17.10.157.2809 (r801046) FWID 01-0

pesce@GT-AXE11000-9520:/tmp/home/root# wl clmver
API: 25.0
Data: 10.10.78
Compiler: 1.68.6
ClmImport: 1.68.6
Customization: v2 221028
Creation: 2023-07-24 10:10:20

and

ASUSWRT-Merlin RT-AX58U 3004.388.6_2 Tue Feb 27 02:43:33 UTC 2024
pesce@RT-AX58U-D440:/tmp/home/root# wl country
#a (#a/0) <unknown>
pesce@RT-AX58U-D440:/tmp/home/root# wl country list
Supported countries: country code and long name
#a
AU      AUSTRALIA
CA      CANADA
CN      CHINA
DE      GERMANY
E0
FR      FRANCE
GB      UNITED KINGDOM
JP      JAPAN
KR      KOREA, REPUBLIC OF
Q1      Q1
SG      SINGAPORE
TW      TAIWAN, REPUBLIC OF CHINA
US      UNITED STATES

pesce@RT-AX58U-D440:/tmp/home/root# wl ver
Broadcom BCA: 17.10 RC157.2809
wl0: Dec 15 2023 10:37:38 version 17.10.157.2809 (r801046) 8e0370b

pesce@RT-AX58U-D440:/tmp/home/root# wl clmver
API: 25.0
Data: 10.10.652
Compiler: 1.59.9
ClmImport: 1.63.5
Creation: 2021-10-29 10:21:23

Well, on my linux machines I use iw a lot. But here on asus merlin, I was only trying it a bit, and most things were not working

@francoism90 Let me know if shall test anything. Happy to support.

@Linden1
Copy link

Linden1 commented Mar 9, 2024

ASUSWRT-Merlin RT-AX88U 3004.388.6_2 Tue Feb 27 02:49:55 UTC 2024

I'd list mine in response but seriously(!) the list is 268 lines.

Still can't get channels above 165, no matter which country I try.

@Reeplosin
Copy link

ASUSWRT-Merlin RT-AX88U 3004.388.6_2 Tue Feb 27 02:49:55 UTC 2024

I'd list mine in response but seriously(!) the list is 268 lines.

Still can't get channels above 165, no matter which country I try.

To get the channels I think you have to change the chainspec

the command on my ac86u is "nvram set wl1_chanspec=161/80" on your device it will have to be something like "165/160" or something like that you will have to try

@pasko-zh
Copy link

pasko-zh commented Mar 9, 2024

@Linden1
You can do it via NVRAM or via wl

You may need to select a different interface number, e.g., eth6 or so... On my AXE11000 I configured it like this:

# settings for 5G
wl -i eth7 down
wl -i eth7 country ALL
wl -i eth7 country_abbrev_override OFF
wl -i eth7 regulatory 1
wl -i eth7 spect 0
wl -i eth7 chanspec 165/160
wl -i eth7 up
wl -i eth7 5g_rate auto
wl -i eth7 txpwr1 -o -m 1496

Then

wl -i eth7 status
SSID:  I HIDE MINE HERE...
Mode: Managed   RSSI: 0 dBm     SNR: 0 dB       noise: -87 dBm  Channel: 165/160
BSSID: C8:7F:54:94:95:24        Capability: ESS RRM
Supported Rates: [ 6(b) 9 12 18 24(b) 36 48 54 ]
HE Capable:
        ....

NOTE! You also need a client supporting those channels. With Intel's adapter with theri stupid LAR, I had no chance!! I replaced my Intel AX-210 with Mediatek MT7922. It works under Win10 and Ubuntu:

Capture

@Linden1
Copy link

Linden1 commented Mar 9, 2024

@pasko-zh
I've already adapted the original (NVRAM) script to my router. It works because I now have channels 149-165 and am running channel 149/80. It just won't go any further - tried US, CN, ALL, #a.

@pasko-zh
Copy link

pasko-zh commented Mar 9, 2024

@Linden1
Strange...

  1. what do you get if you do wl -i eth6 channels ?
    (you should get 36 40 44 48 52 56 60 64 100 104 108 112 116 120 124 128 132 136 140 144 149 153 157 161 165 169 173 177)

  2. Do you get an error message when you try to wl -i eth6 chanspec 165/160 ?
    (Interface needs to be down)

  3. What do you get if you set the channel like in 2. and then do wl -i eth6 status?

@Linden1
Copy link

Linden1 commented Mar 9, 2024

Using eth7 specific to my router

  1. 36 40 44 48 52 56 60 64 100 104 108 112 116 120 124 128 132 136 140 144 149 153 157 161 165

  2. wl: Bad Channel

  3. SSID: "REDACTED"
    Mode: Managed RSSI: 0 dBm SNR: 0 dB noise: -88 dBm Channel: 149/80
    BSSID: 11:22:33:44:55 Capability: ESS RRM
    Supported Rates: [ 6(b) 9 12 18 24(b) 36 48 54 ]
    HE Capable:
    Chanspec: 5GHz channel 155 80MHz (0xe09b)
    Primary channel: 149
    HT Capabilities: 40MHz SGI20 SGI40
    Supported HT MCS : 0-31
    Supported VHT MCS:
    NSS1 Tx: 0-11 Rx: 0-11
    NSS2 Tx: 0-11 Rx: 0-11
    NSS3 Tx: 0-11 Rx: 0-11
    NSS4 Tx: 0-11 Rx: 0-11
    Supported HE MCS:
    20/40/80 MHz:
    NSS1 Tx: 0-11 Rx: 0-11
    NSS2 Tx: 0-11 Rx: 0-11
    NSS3 Tx: 0-11 Rx: 0-11
    NSS4 Tx: 0-11 Rx: 0-11
    160 MHz:
    NSS1 Tx: 0-11 Rx: 0-11
    NSS2 Tx: 0-11 Rx: 0-11
    NSS3 Tx: 0-11 Rx: 0-11
    NSS4 Tx: 0-11 Rx: 0-11

EDIT It just seems my router is not UNII-4 capable. Maybe it's time to accept that.

@pasko-zh
Copy link

@Linden1
Are you sure your router model supports U-NII-4 band, channel 169-177?

What do you get if you do wl -i eth7 country?

Did you set in NVRAM init script
nvram set wl1_chlist="36 40 44 48 52 56 60 64 100 104 108 112 116 120 124 128 132 136 140 149 153 157 161 165 169 173 177"

@Linden1
Copy link

Linden1 commented Mar 10, 2024

What do you get if you do wl -i eth7 country?

Default would be DE , but with the script #a (#a/0) - which should give me all channels.

Yes, channel list exactly as you have it. I know the script itself is working as I now have channels 149-165, giving me 149/80, nothing higher.

wl -i eth7 channels returns:
36 40 44 48 52 56 60 64 100 104 108 112 116 120 124 128 132 136 140 144 149 153 157 161 165

@pasko-zh
Copy link

hmmm :-/ weird... I had once an issue, that U-NII-4 channels were not selectable ("were not there") because I did not set them in NVRAM via init-script.
What kind of router model do you have AX88U or new one AX88U PRO?

@Linden1
Copy link

Linden1 commented Mar 10, 2024

The good old RT-AX88U (not Pro).

I have the original "nvram set acs_unii4=1" in the script, but that makes no difference, even if I set it to 0(zero) or comment it out.

@pasko-zh
Copy link

pasko-zh commented Mar 10, 2024

Well, then I don't know what else could help....

(but at least you can use all other 5G channels without DFS and full power 😁. Sure, U-NII-4 would give you another 160 MHz channel...)

@Warborn123
Copy link

Hi, I just got my hands on the new BE98 (non-Pro, UK version), and it seems like nvram set 1:ccode=ALL, nvram set 2:ccode=ALL, nvram set 3:ccode=ALL do not work on this router after setting the country code to AU (nvram set location_code=AU). This is quite frustrating because Australia does not permit channels 116-128, so my 5G-2 can only be set to 80MHz. I also tried setting the country code to the US, but for some strange reason, only my Samsung S24 Ultra can find the 6GHz channel. My Intel(R) Wi-Fi 6E AX210 and iPhone 15 Pro Max cannot find the 6GHz channel at all...

@pasko-zh
Copy link

pasko-zh commented Mar 21, 2024

@Warborn123
Try to work with the wl command. See my comments above how to use it to set country, disable DSF, set tx power, etc., see here or this one.

To help others having the same router model as you, please post the output of the corresponding wl commands here. For instance, wl country list or wl -i eth8 channels (on my GT-AXE11000 eth8 corresponds to the 6G).

When you set a country or channel, then always check with the wl command, if the settings are OK: wl -i eth8 status . Do not check it on your wifi clients!

Your wifi clients, e.g., mobile phone, laptop, have also regulatory settings which affect connectivity, for instance no 6G wifi. Your apple phone will most likeley set its regulatory wifi country to what it reads from telco network. On a rooted android device, you can override this via sudo iw reg set COUNTRY. But since apple is super closed source... nothing to do here...

Intel... well.... they use LAR algorithm to detect the country settings. This is a super shitty thing. Because LAR fails more often than succeeding. And if you are unlucky, it cannot determine a country based on beacon signals from neighbour's wifi and uses "world region", which has no 6G wifi channels.
Also note: Win10 and Intel cards = No 6 GHz wifi, you need win11.

Thus, replace your AX210 with Mediatek MT7922. (! only possible if your laptop does not have proprietary intel CNVio(2) interfaces!)
The MT7922 works perfect and stable with all my lenovo laptops, also under Ubuntu. No stupid LAR.
And as a bonus: You can even use 6GHz wifi with win10.

@Warborn123
Copy link

@Warborn123 Try to work with the wl command. See my comments above how to use it to set country, disable DSF, set tx power, etc., see here or this one.

To help others having the same router model as you, please post the output of the corresponding wl commands here. For instance, wl country list or wl -i eth8 channels (on my GT-AXE11000 eth8 corresponds to the 6G).

When you set a country or channel, then always check with the wl command, if the settings are OK: wl -i eth8 status . Do not check it on your wifi clients!

Your wifi clients, e.g., mobile phone, laptop, have also regulatory settings which affect connectivity, for instance no 6G wifi. Your apple phone will most likeley set its regulatory wifi country to what it reads from telco network. On a rooted android device, you can override this via sudo iw reg set COUNTRY. But since apple is super closed source... nothing to do here...

Intel... well.... they use LAR algorithm to detect the country settings. This is a super shitty thing. Because LAR fails more often than succeeding. And if you are unlucky, it cannot determine a country based on beacon signals from neighbour's wifi and uses "world region", which has no 6G wifi channels. Also note: Win10 and Intel cards = No 6 GHz wifi, you need win11.

Thus, replace your AX210 with Mediatek MT7922. (! only possible if your laptop does not have proprietary intel CNVio(2) interfaces!) The MT7922 works perfect and stable with all my lenovo laptops, also under Ubuntu. No stupid LAR. And as a bonus: You can even use 6GHz wifi with win10.

Thank you for your comments. I'm not sure if I did it right or not, but it seems like the router doesn't support sl commands?

jack@GT-BE98-4D80:/tmp/home/root# wl help
wl: Unsupported
jack@GT-BE98-4D80:/tmp/home/root# wl -i eth8 channels
wl: wl driver adapter not found

But the wl country list from your previous post works for some reason:

jack@GT-BE98-4D80:/tmp/home/root# wl country list
Supported countries: country code and long name
AU      AUSTRALIA
E0
JP      JAPAN
US      UNITED STATES

And surprisingly, when set to E0, AU or JP, both my iPhone and AX210 can find the 6GHz band, but they all have very weak 6GHz transmission power (-48dBm @ 2 meters), only the US location code will give a reasonable transmission power (-36dB, @ 2 meters), so I'm very sad there.

And yes, I would definitely want to change to a Mediatek wireless card, but unfortunately my AX210 chip is embedded in my computer's motherboard, so it's impossible to upgrade unless I buy one of those PCI-E Wi-Fi adapters.

I saw that you mentioned about AX2xx wireless card will likely not work because of the LAR, have you tried the AX4xx family, like AX411? or the BE200? Did Intel remove LAR on those wireless cards? Because I think chances are, the next ASUS motherboard I get will come with an Intel wireless card, unfortunately.

I like Win11, so I have no problem there :)

Lastly, do you know what difference does the country_rev do? My router support 3 country_rev code for the US, but I see no difference changing those numbers:

jack@GT-BE98-4D80:/tmp/home/root# wl country_rev US
count: 3
0 102 103

Thank you!

@pasko-zh
Copy link

"Thank you for your comments. I'm not sure if I did it right or not, but it seems like the router doesn't support sl commands?"
It is wl -h and for the interfaces: check which ones you have for instance with ifconig, with Asus usually the highest number is the 6 GHz Wifi, as I said, for my router it is eth8.

@pasko-zh
Copy link

😯😨😨

You do not have country ALL???!!!
Shit, did Asus really remove this???!

What happens, if you try for your interface, ethX, 5 or 6 GHz

wl -i ethX down
wl -i ethX country ALL
wl -i ethX up

@Warborn123
Copy link

😯😨😨

You do not have country ALL???!!! Shit, did Asus really remove this???!

What happens, if you try for your interface, ethX, 5 or 6 GHz

wl -i ethX down
wl -i ethX country ALL
wl -i ethX up

Yep, that's right. Now when I set ccode=ALL, it will either change back to the original country (JP) or change to the US (E0,US,AU). You can only change location_code, wl_country_code and wl4_country_code to ALL, but since the ccode is locked, it doesn't really has any effect on the transmission power or frequency band. Let me try the new commands now and see whether that will work🥲

@Warborn123
Copy link

😯😨😨

You do not have country ALL???!!! Shit, did Asus really remove this???!

What happens, if you try for your interface, ethX, 5 or 6 GHz

wl -i ethX down
wl -i ethX country ALL
wl -i ethX up

I just tried all three commands here, and it all gives the same error message wl: Unsupported🫠

@pasko-zh
Copy link

Hmmm :-/

Since you have country US as a built-in country, will then setting like wl -i ethXX country US work?

btw, on which merlin verison are you? (I did not see your router model listed on asus merlin wrt page)

@Warborn123
Copy link

Hmmm :-/

Since you have country US as a built-in country, will then setting like wl -i ethXX country US work?

btw, on which merlin verison are you? (I did not see your router model listed on asus merlin wrt page)

Thank you for your reply. Nope, the command still doesn't work, wl: wl driver adapter not found as usual. I'm with the stock firmware, I'm afraid they haven't released a merlin firmware for this router yet. I don't really see the point of using the merlin firmware though, I did manage to unlock the frequency and increase the TX power on stock firmware with my AXE11000 here.

@Reeplosin
Copy link

Reeplosin commented Mar 24, 2024 via email

@Warborn123
Copy link

nvram commands are more efficient than wl commands, all you need to do is an nvram commit and the settings survive even reboots. wl commands even with an init start script, once the router reboots you have to run the sh command from the command prompt yourself, as the settings will clear and the router will revert to normal settings. it is not really efficient to rely on wl commands as much as I am curious about the differences from nvram commands and the potential, in practice without a command that you can set after an intentional or accidental reboot it is better to rely on nvram set commands if the router supports it Il ven 22 mar 2024, 23:24 A2E76W3 @.> ha scritto:

@.
* commented on this gist. ------------------------------ Hmmm :-/ Since you have country US as a built-in country, will then setting like wl -i ethXX country US work? btw, on which merlin verison are you? (I did not see your router model listed on asus merlin wrt page) Thank you for your reply. Nope, the command still doesn't work, wl: wl driver adapter not found as usual. I'm with the stock firmware, I'm afraid they haven't released a merlin firmware for this router yet. I don't really see the point of using the merlin firmware though, I did manage to unlock the frequency and increase the TX power on stock firmware with my AXE11000 here https://gist.github.com/francoism90/3dede7973354d067c41bff5e54203fe9?permalink_comment_id=4812096#gistcomment-4812096 . — Reply to this email directly, view it on GitHub https://gist.github.com/francoism90/3dede7973354d067c41bff5e54203fe9#gistcomment-4998029 or unsubscribe https://github.com/notifications/unsubscribe-auth/BAVJMKFMFBR7S5BBNRI27Q3YZSVTNBFKMF2HI4TJMJ2XIZLTSKBKK5TBNR2WLJDUOJ2WLJDOMFWWLO3UNBZGKYLEL5YGC4TUNFRWS4DBNZ2F6YLDORUXM2LUPGBKK5TBNR2WLJDHNFZXJJDOMFWWLK3UNBZGKYLEL52HS4DFVRZXKYTKMVRXIX3UPFYGLK2HNFZXIQ3PNVWWK3TUUZ2G64DJMNZZDAVEOR4XAZNEM5UXG5FFOZQWY5LFVA4TENZQG44TIONHORZGSZ3HMVZKMY3SMVQXIZI . You are receiving this email because you commented on the thread. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub .

Hi, is there any way to force the nvram set 1:ccode=ALL and nvram set wl0_country_code=ALL command? These parameters revert to the original values after I commit the changes and restart the router now on the new model. Thanks.

@Reeplosin
Copy link

Reeplosin commented Mar 24, 2024 via email

@Warborn123
Copy link

Warborn123 commented Apr 23, 2024

I just noticed that the location of my router sends by the beacon is: DE, which presumably stands for Germany? Although my ccode and location code are set to US. I bought my router(ASUS BE98)here in the UK. Very strange. Can confirm this using S24 Ultra and winfi
1000006107
I'm more confused about my iPhone 15PM and AX210 that decided not to work with the 6GHz band.

@omrij
Copy link

omrij commented Apr 26, 2024

Guys, bad news. I think someone in ASUS saw our posts, after the last firmware update, I cannot change my ccode and country rev anymore... It will remain as US for my router now...

Doesn't work in what method? changing nvram or using wl commands?

@omrij
Copy link

omrij commented Apr 26, 2024

when using just this:

nvram set location_code=#a
nvram commit

don't you get all the channels/max power?

@Warborn123
Copy link

Sorry for the misinformation. It still works...My bad.

@omrij
Copy link

omrij commented May 3, 2024

Hi
Does anyone know how to disable DFS using nvram without changing country/local/transmit power?
I can do it using wl command but it's not persistent.

@francoism90
Copy link
Author

I think you need to change the country, as the chipset/firmware probably does some testing if it even can be disabled.

You don't have to change the transmit power. It's there as a reference.

Just a reminder: even when setting a different country or TX-power, it doesn't mean it actually works. The Intel chipsets most people have on their end devices, does some hidden checking and makes it really difficult to workaround certain 'hacks'.

So the given instructions, may or may work. It depends on your setup and maybe a bit of luck.

@omrij
Copy link

omrij commented May 3, 2024

Thanks, I guess I'll stick with wl method using services-start which works for me (but I wish it was persistent)

@pasko-zh
Copy link

pasko-zh commented May 4, 2024

Hi Does anyone know how to disable DFS using nvram without changing country/local/transmit power? I can do it using wl command but it's not persistent.

Just put all your WL commands in a bash script. Run it manually after a reboot of your router. I mean, I reboot my router once year or so...
Or, put in a script which is run after reboot, see documentation here https://github.com/RMerl/asuswrt-merlin.ng/wiki/User-scripts

@omrij
Copy link

omrij commented May 4, 2024

That's the way I do it now
Using services-start script and also service-event-end script (so it's running after every change made in wireless settings).
It's still more convinent to make the changes once using nvram which is also applicable to asuswrt and not only Merlin.

@825i
Copy link

825i commented May 29, 2024

This doesn't seem to work for my original AX88U (non pro). Which is originally set to "DE" (Germany) region.

Trying nvram command

I followed all the steps above and uncommented:
nvram set wl0_sel_channel=14/80 # force 2.4GHz channel

To try and set the 2.4Ghz channel to 14. After rebooting the router, it is still set to 13.

Trying Web GUI

I can see 14 as an option the "Wireless" tab in the router control panel.
If I try to set it to 14 in the Web GUI it reboots and sets it to 5 (Auto)...

If I go to Wireless > Professional > Right Click "Inspect" > CTRL+F "Country" > It shows "#a" like it should in the hidden setting.

Any other suggestions? I am just trying to get channel 14 because in the capital city every single other channel is completely saturated...


Here is my script. Do I need to replace the country code #a with something else? Is that why it's not working?

#!/bin/sh

# Allow all channels
nvram set location_code=#a
nvram set 0:ccode=#a
nvram set 0:regrev=0
nvram set 1:ccode=#a
nvram set 1:regrev=0
nvram set territory_code=CN/02 # or US/02
nvram set wl_country_code=#a
nvram set wl_reg_mode=h
nvram set wl0_chlist="1 2 3 4 5 6 7 8 9 10 11 12 13 14"
nvram set wl0_country_code=#a
nvram set wl0_country_rev=0
nvram set wl0_reg_mode=h
nvram set wl1_chlist="36 40 44 48 52 56 60 64 100 104 108 112 116 120 124 128 132 136 140 149 153 157 161 165 169 173 177"
nvram set wl1_country_code=#a
nvram set wl1_country_rev=0
nvram set wl1_reg_mode=h
nvram set acs_dfs=0
nvram set wl_acs_excl_chans_dfs=
nvram set wl_acs_excl_chans=
nvram set wl0_acs_dfs=0
nvram set wl0_acs_excl_chans_base=
nvram set wl0_acs_excl_chans=
nvram set wl1_acs_dfs=0
nvram set wl1_acs_excl_chans_base=
nvram set wl1_acs_excl_chans=
nvram set acs_unii4=1

# Channel selection (these don't seem to do anything, so they're commented out)
# nvram set wl0_chanspec=0 # auto select
# nvram set wl1_chanspec=0 # auto select
# nvram set wl_chanspec=0 # auto select
# nvram set wl0_sel_channel=14/80 # force 2.4GHz channel
# nvram set wl1_sel_channel=149/80 # force 5GHz channel

Seems there's nothing I can do to actually use Channel 14 for 2.4Ghz.

@825i
Copy link

825i commented May 29, 2024

Ok adding on to what I have learned from fooling around a bit.

My AX88U shipped with "DE" country. This limited transmission power to 12, i.e.:

admin@RT-AX88U-9B20:/tmp/home/root# wl txpwr_target_max
Maximum Tx Power Target (chanspec:0x100d):      12.00  12.00  12.00  12.00

After copying the example script and rebooting the router:

admin@RT-AX88U-9B20:/tmp/home/root# wl txpwr_target_max
Maximum Tx Power Target (chanspec:0x100d):      26.00  26.00  26.00  26.00

So the Tx power has increased by a bit over double. I can also see from numerous WiFi apps and also the Asus Site Survey/WiFi Radar that my transmission power has increased massively. Note that I have not copied any of the "Risky" transmission lines into my start script. All I have in my start script is what I have in the reply above.

2.4Ghz

  • Xperia 1V previously reported the signal strength at -33dBm even at 1ft from the router.
  • It now reports -23dBm which I am sure is as sensitive/low as it can record. Remembering that dBm is logarithmic, a 3dBm increase is essentially a 100% improvement, so this is a huge improvement for 2.4Ghz.

5Ghz

  • Xperia 1V previously reported the signal strength at -38dBm
  • It now reports -30dBm. Still a massive improvement.

I am pretty satisfied with this. It would have been nice to use Channel 14, but I can concur and confirm with others. Setting the channel to 14 will generally reset my router to "DE" region again and put the Tx power back to 12 from 26. This is generally good enough for me.

Hopefully there's no health risks from setting the Tx power so high. I sit about 1.2m from my router. Though I plan to move it into another room when I move my study area. Hence part of the reason why I started investigating this in the first place.

@825i
Copy link

825i commented May 29, 2024

I forgot to add the speeds before and after the 12 -> 26mW change:

Result (Xperia 1V):

  • 689/492mbps - 12mW Tx Power
    • 707/485
  • 802/460 - 26mW Tx Power
    • 805/481

Result (S7 Tab):

  • 763/492mbps - 12mW Tx Power
    • 739/481
  • 756/481 - 26mW Tx Power

@francoism90
Copy link
Author

@825i Increasing Tx Power leads to more noise, it may/may not increase performance. It's basically aim is to increase the range of your router. However, this could also increase heat and load.

If I'm not mistaken, the txpwr_target_max key only indicates the maximum allowed Tx Power, it doesn't increase the value. It's a dynamic value based on the selected country, etc.

Thanks for posting your findings and results. Like said in the disclaimer, it may work for you or not.
In most cases unfortunately it doesn't work, because many WiFi-chipsets have hidden/unknown abilities to check if the receiving/sending values are valid. So even changing the country or Tx Power, it may not change anything to your end-devices.

@QaDoPL
Copy link

QaDoPL commented Jun 10, 2024

AX1100 Merlin 388.7 - so far no luck with unlock TX,
wl txpwr_target_max Maximum Tx Power Target (chanspec:0x1003): 12.00 12.00 12.00 12.00

Power really sucks, even cheap router totolink has 100% more efficient at my home.
One wall and AX don't have 2.4Ghz,,,

I tried downgrade to 388.1 and same issue can't change territory and tx.

nvram show | grep -e 'country_code|location_code|territory_code|ccode'
0:ccode=#a
1:ccode=E0
2:ccode=E0
3:ccode=E0
location_code=#a
territory_code=EU/01
wl0_country_code=E0
wl1_country_code=#a
wl2_country_code=E0
wl_country_code=#a

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment