Skip to content

Instantly share code, notes, and snippets.

@francoism90
Last active December 22, 2024 17:49
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)

Disclaimer

Following instructions are provided without any warranty, and may even get you in trouble legally. The instructions are provided for testing, learning, preventing e-waste, and should be use with care. We (including contributers + commentators) are not responsible for any damage to your device(s) or any legal issues.

Getting Started

Instructions have been moved to https://github.com/francoism90/asus-router. :)

@FightMan01
Copy link

Hi!

Can anyone help with TUF-AX3000 (v2) as the main router and RT-AX1800U as aimesh node?
I managed to connect to both routers and set the values but I don't think it worked on the RT-AX1800U. I can't check the values with the wl txpwr_target_max command since it is a Mediatek router.

I would appreciate any help if someone knows something about asus router with mediatek.

@tommy030314
Copy link

hello, is there a solution to unlock ax5400 v2.

@Sprtop
Copy link

Sprtop commented Aug 2, 2023

Hi @Dunnaldur , can you please share your final working config for XT12.

@barkmarkin
Copy link

wl txpwr_target_max shows

Maximum Tx Power Target (chanspec:0x100b): 28.00 28.00 28.00 28.00

On my ax88u pro. Is this too high or within limtis of the router? I dont want to damage it,
Also this is from someone here who possted for their ax86u, It gave them 26.00

Put this in init-start

#!/bin/sh
nvram set location_code=US
nvram set asuscfe0:ccode=#a
nvram set asuscfe1:ccode=#a
nvram set asuscfe0:regrev=0
nvram set asuscfe1:regrev=0
nvram set asuscfecommit=1
nvram set 0:regrev=0
nvram set 1:regrev=0
nvram set 0:ccode=#a
nvram set 1:ccode=#a
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=h
nvram set wl1_country=#a
nvram set wl1_country_code=#a
nvram set wl1_country_rev=0
nvram set wl1_reg_mode=h
nvram set 0:maxp2ga0=0x78
nvram set 0:maxp2ga1=0x78
nvram set 0:maxp2ga2=0x78
nvram set 1:maxp5ga0=0x78,0x78,0x78,0x78
nvram set 1:maxp5ga1=0x78,0x78,0x78,0x78
nvram set 1:maxp5ga2=0x78,0x78,0x78,0x78
nvram set wl_txpower=708
nvram set wl0_txpower=708
nvram set wl1_txpower=708

nvram set wl1_chanspec=161/80
nvram set territory_code=US/02

nvram commit

@barkmarkin
Copy link

barkmarkin commented Aug 17, 2023

#!/bin/sh
nvram set location_code=US
nvram set asuscfe0:ccode=#a
nvram set asuscfe1:ccode=#a
nvram set asuscfe0:regrev=0
nvram set asuscfe1:regrev=0
nvram set asuscfecommit=1
nvram set 0:regrev=0
nvram set 1:regrev=0
nvram set 0:ccode=#a
nvram set 1:ccode=#a
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=h
nvram set wl1_country=#a
nvram set wl1_country_code=#a
nvram set wl1_country_rev=0
nvram set wl1_reg_mode=h
nvram set 0:maxp2ga0=0x78
nvram set 0:maxp2ga1=0x78
nvram set 0:maxp2ga2=0x78
nvram set 1:maxp5ga0=0x78,0x78,0x78,0x78
nvram set 1:maxp5ga1=0x78,0x78,0x78,0x78
nvram set 1:maxp5ga2=0x78,0x78,0x78,0x78
nvram set wl_txpower=708
nvram set wl0_txpower=708
nvram set wl1_txpower=708

nvram set wl1_chanspec=161/80
nvram set territory_code=US/02

nvram commit

This script works like charm for Asus RT-AX86U with latest firmware from Asuswrt-Merlin v388.1. wl txpwr_target_max returns 26.00 26.00 26.00 and channels unblocked. Even after router reboot or changing wifi bandwidth/channel. My router original territory_code was UK/02

This works on my ax88u pro and shows 28.00 28.00 28.00 28.00. But when I change any settings after turning it off than on, it goes back down to 24.00 24.00 24.00 24.00 how can I prevent this?

@francoism90
Copy link
Author

@barkmarkin Did you paste them in init-start as well?

A workaround (if init-start doesn't do the trick) is using a cronjob.

@barkmarkin
Copy link

@barkmarkin Did you paste them in init-start as well?

A workaround (if init-start doesn't do the trick) is using a cronjob.

İ used winscp to copy it into init start jffs folder it works what is a cronjob,? I'm code disabled

@barkmarkin
Copy link

@barkmarkin https://github.com/RMerl/asuswrt-merlin.ng/wiki/User-scripts#creating-scripts

Make sure the script is executable.

Well it is. Maybe it's not the right settings for ax88u pro but it's all fine unless I change a setting and if I reboot its 28 again and settings persist

@francoism90
Copy link
Author

@barkmarkin https://gist.github.com/francoism90/3dede7973354d067c41bff5e54203fe9?permalink_comment_id=4620888#gistcomment-4620888

See note/warning - changing (WiFi) settings using the UI, will overrule the nvram changes.

@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

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