Skip to content

Instantly share code, notes, and snippets.

@francoism90
Last active June 23, 2024 10:25
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.

Make sure to also run the following commands:

nvram set jffs2_scripts="1"
nvram commit

User-scripts

Create the /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

/jffs/scripts/wl >/dev/null 2>&1 & # wl
# /jffs/scripts/scmerlin startup & # scMerlin

Create/adjust /jffs/scripts/service-event:

#!/bin/sh

if echo "$2" | /bin/grep -q "wireless"; then { /jffs/scripts/wl service_event "$@" & }; fi # wl

Create/adjust /jffs/scripts/service-event-end:

#!/bin/sh

if echo "$2" | /bin/grep -q "wireless"; then { /jffs/scripts/wl service_event "$@" & }; fi # wl

Make sure the scripts are executable:

chmod a+rx /jffs/scripts/*

Applying changes

You need to reboot the router to apply changes:

reboot

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
@pewpewpew47
Copy link

Followed steps on a GT-AX6000 from Germany. Tx power did increase and better signal (signal strength from same spot -58dbm to -44dbm). New channels (149 and up) appeared as well. GUI changes seems to not cause issues and I can swap to other channels in GUI. However, whenever I try to connect to channel 149 from an Intel AX211 card, Windows shows I am using wifi 4 instead of wifi 6. Lower channels (36, 44, 48 etc) are fine. Is this an Intel issue like the previous posts indicated? Thanks for the help and good luck everyone.

Most likely yes. And or a combination with the OS. You can try with another client and see if it works as expected.

You can check on our router how your client is connected, this gives you all the details. Here for eth7 on my router:

wl -i eth7 assoclist
=> MAC_ADR

 wl -i eth7 sta_info MAC_ADR

If you want to dig deeper: Capture 802.11 beacon frames with wireshark. Then you will see what your router is advertising, and how the handshake with the client goes on....

Thanks Pasko! After some digging with your command line, I found that 149-169 does not work when 160mHz bandwidth is selected. Currently I just run my router on auto channel and auto bandwidth (been on channel 100/160 since last reboot). I live close to airport so DFS may also have something to do with the issue.

@pewpewpew47
Copy link

I have updated the instructions to use events, meaning it should work when changing Wireless settings in the GUI.

Could you please test? I have also added to multiple places, as it seems to be the only way to make sure settings are set on boot and such.

Redid all the nvram changes after your update. Can confirm GUI changes persist after restart on GT-AX6000. Thanks mate!

@francoism90
Copy link
Author

@pewpewpew47 Thanks for testing! Yeah, it seems to be persistent now. :)

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