Skip to content

Instantly share code, notes, and snippets.

@francoism90
Last active May 12, 2024 11: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
@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.

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