Skip to content

Instantly share code, notes, and snippets.

@francoism90
Last active February 21, 2024 16:14
  • Star 48 You must be signed in to star a gist
  • Fork 14 You must be signed in to fork a gist
Star You must be signed in to star a gist
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
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_unii4=1
nvram set wl_acs_excl_chans_dfs=
nvram set wl_acs_excl_chans=
nvram set wl0_acs_dfs=1
nvram set wl0_acs_excl_chans_base=
nvram set wl0_acs_excl_chans=
nvram set wl1_acs_dfs=1
nvram set wl1_acs_excl_chans_base=
nvram set wl1_acs_excl_chans=
# 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

@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?

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