Skip to content

Instantly share code, notes, and snippets.

@shibajee
Created August 27, 2020 06:15
Show Gist options
  • Save shibajee/4861767bc10fde9328ed59b817bcc521 to your computer and use it in GitHub Desktop.
Save shibajee/4861767bc10fde9328ed59b817bcc521 to your computer and use it in GitHub Desktop.
Change region of Xiaomi routers to unlock all channel:
1. Login to ur router in browser.
2. Open a new tab and paste this
http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/api/xqsystem/set_country_code?country=CN
get the stok value from login tab and replace it in new tab and then hit enter.
3. Router will reboot automatically and on next login u will see all 5Ghz channel 36~48 and 149~165.
**u can also go with country=HK or country=TW (hongkong or taiwan)
@Regaladfr
Copy link

Regaladfr commented Sep 13, 2021

http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/api/xqsystem/set_country_code?country=CN

don t work anymore to change country code

error : {"msg":"操作失败","code":1606}

@tiborh
Copy link

tiborh commented Sep 13, 2021

yes, best:

  1. check if the code you would like to select is available at all (not every firmware supports every language)
  2. as a backup method, reset the router (first, save your configs)

@Regaladfr
Copy link

I have try everythings nothing work 🥲.

@misqkrk
Copy link

misqkrk commented Oct 5, 2021

it works. Thanks

@linhdh
Copy link

linhdh commented Jan 24, 2022

I have a Xiaomi AX3200 and this guide works for mine.

@ymys
Copy link

ymys commented Apr 18, 2022

Is there any new way? On my AX3000 resulting this:
{"msg":"Couldn't complete this action","code":1606}

@ymys
Copy link

ymys commented Apr 18, 2022

Cant find CN/TW/HK, here is my country_code in my router AX3000:
{
"current": "FR",
"list": [
{
"name": "South Korea",
"code": "KR"
},
{
"name": "Singapore",
"code": "SG"
},
{
"name": "Malaysia",
"code": "MY"
},
{
"name": "France",
"code": "FR"
},
{
"name": "Germany",
"code": "DE"
},
{
"name": "Italy",
"code": "IT"
},
{
"name": "Spain",
"code": "ES"
},
{
"name": "Indonesia",
"code": "ID"
},
{
"name": "Thailand",
"code": "TH"
},
{
"name": "Vietnam",
"code": "VN"
},
{
"name": "Brazil",
"code": "BR"
},
{
"name": "Russia",
"code": "RU"
},
{
"name": "Turkey",
"code": "TR"
},
{
"name": "阿拉伯联合酋长国(迪拜)",
"code": "AE"
},
{
"name": "Australia",
"code": "AU"
},
{
"name": "Belgium",
"code": "BE"
},
{
"name": "Switzerland",
"code": "CH"
},
{
"name": "Chile",
"code": "CL"
},
{
"name": "Denmark",
"code": "DK"
},
{
"name": "Egypt",
"code": "EG"
},
{
"name": "Finland",
"code": "FI"
},
{
"name": "Ireland",
"code": "IE"
},
{
"name": "Israel",
"code": "IL"
},
{
"name": "Morocco",
"code": "MA"
},
{
"name": "Nigeria",
"code": "NG"
},
{
"name": "Netherlands",
"code": "NL"
},
{
"name": "Norway",
"code": "NO"
},
{
"name": "Peru",
"code": "PE"
},
{
"name": "Poland",
"code": "PL"
},
{
"name": "Sweden",
"code": "SE"
},
{
"name": "Ukraine",
"code": "UA"
},
{
"name": "United Kingdom",
"code": "GB"
},
{
"name": "New Zealand",
"code": "NZ"
},
{
"name": "Portugal",
"code": "PT"
},
{
"name": "Kenya",
"code": "KE"
},
{
"name": "Bulgaria",
"code": "BG"
},
{
"name": "Columbia",
"code": "CO"
},
{
"name": "Czech Republic",
"code": "CZ"
},
{
"name": "Estonia",
"code": "EE"
},
{
"name": "Greece",
"code": "GR"
},
{
"name": "Croatia",
"code": "HR"
},
{
"name": "Hungary",
"code": "HU"
},
{
"name": "Jordan",
"code": "JO"
},
{
"name": "Cambodia",
"code": "KH"
},
{
"name": "Lithuania",
"code": "LT"
},
{
"name": "Latvia",
"code": "LV"
},
{
"name": "Malta",
"code": "MT"
},
{
"name": "Romania",
"code": "RO"
},
{
"name": "Slovakia",
"code": "SK"
},
{
"name": "Laos",
"code": "LA"
}
],
"code": 0
}

@rajabertie
Copy link

Any way to set India in the region? or which region can be used for optimal performance in India?

@rubyonrails3
Copy link

Is there any new way? On my AX3000 resulting this: {"msg":"Couldn't complete this action","code":1606}

I am also looking for a way to enable 149 and above channels on my AX3000

I tried changing region but that didn't help. I can't return the router, I am out of returning period.

My iPhone 14 Pro Max, my wife iPhone 13 Pro Max can't see 5Ghz SSID.
also my Samsung S23 Ultra and Z Fold4 can't see 5Ghz
Only my Pixel 7 Pro connects to 5Ghz and connection speed is around 2400 Mbps( link speed)

@OffS3c
Copy link

OffS3c commented Jul 18, 2023

Anyone with unlocked firmware? AX3000 Global. 5GHz is giving me headaches or anyone know how to downgrade?

@rubyonrails3
Copy link

Anyone with unlocked firmware? AX3000 Global. 5GHz is giving me headaches or anyone know how to downgrade?

I regret buying this router, mostly because it has very limited number of channels, my last 2 routers were from TP-Link and they had all the channels but on AX3000 Global I see 36, 40, 44, 48 channels, but my iPhone, Xiaomi 13 Ultra, S23 Ultra or even Honor Magic 5 Pro can't connect to those channels. only phone that connects to that channel is Pixel phones (7 Pro and 8 Pro) but Pixel 4 XL also can't find that.

@luargil
Copy link

luargil commented Apr 22, 2024

Anyone with unlocked firmware? AX3000 Global. 5GHz is giving me headaches or anyone know how to downgrade?

I regret buying this router, mostly because it has very limited number of channels, my last 2 routers were from TP-Link and they had all the channels but on AX3000 Global I see 36, 40, 44, 48 channels, but my iPhone, Xiaomi 13 Ultra, S23 Ultra or even Honor Magic 5 Pro can't connect to those channels. only phone that connects to that channel is Pixel phones (7 Pro and 8 Pro) but Pixel 4 XL also can't find that.

Hello, were you able to find a solution for this? There are ways to change the region but in no case does it unlock the rest of the channels

@rubyonrails3
Copy link

Anyone with unlocked firmware? AX3000 Global. 5GHz is giving me headaches or anyone know how to downgrade?

I regret buying this router, mostly because it has very limited number of channels, my last 2 routers were from TP-Link and they had all the channels but on AX3000 Global I see 36, 40, 44, 48 channels, but my iPhone, Xiaomi 13 Ultra, S23 Ultra or even Honor Magic 5 Pro can't connect to those channels. only phone that connects to that channel is Pixel phones (7 Pro and 8 Pro) but Pixel 4 XL also can't find that.

Hello, were you able to find a solution for this? There are ways to change the region but in no case does it unlock the rest of the channels

Not really, turned out new routers can't change channels based on region settings.

I bought a different router now from Netgear Nighthawk AXE300 now I have almost each and every band and I don't have to switch regions (actually I can't as region is set to US)

@Kcsappy
Copy link

Kcsappy commented Jun 7, 2024

Works fine on my Xiaomi AX3200

@krisyan80
Copy link

Cant find CN/TW/HK, here is my country_code in my router AX3000: { "current": "FR", "list": [ { "name": "South Korea", "code": "KR" }, { "name": "Singapore", "code": "SG" }, { "name": "Malaysia", "code": "MY" }, { "name": "France", "code": "FR" }, { "name": "Germany", "code": "DE" }, { "name": "Italy", "code": "IT" }, { "name": "Spain", "code": "ES" }, { "name": "Indonesia", "code": "ID" }, { "name": "Thailand", "code": "TH" }, { "name": "Vietnam", "code": "VN" }, { "name": "Brazil", "code": "BR" }, { "name": "Russia", "code": "RU" }, { "name": "Turkey", "code": "TR" }, { "name": "阿拉伯联合酋长国(迪拜)", "code": "AE" }, { "name": "Australia", "code": "AU" }, { "name": "Belgium", "code": "BE" }, { "name": "Switzerland", "code": "CH" }, { "name": "Chile", "code": "CL" }, { "name": "Denmark", "code": "DK" }, { "name": "Egypt", "code": "EG" }, { "name": "Finland", "code": "FI" }, { "name": "Ireland", "code": "IE" }, { "name": "Israel", "code": "IL" }, { "name": "Morocco", "code": "MA" }, { "name": "Nigeria", "code": "NG" }, { "name": "Netherlands", "code": "NL" }, { "name": "Norway", "code": "NO" }, { "name": "Peru", "code": "PE" }, { "name": "Poland", "code": "PL" }, { "name": "Sweden", "code": "SE" }, { "name": "Ukraine", "code": "UA" }, { "name": "United Kingdom", "code": "GB" }, { "name": "New Zealand", "code": "NZ" }, { "name": "Portugal", "code": "PT" }, { "name": "Kenya", "code": "KE" }, { "name": "Bulgaria", "code": "BG" }, { "name": "Columbia", "code": "CO" }, { "name": "Czech Republic", "code": "CZ" }, { "name": "Estonia", "code": "EE" }, { "name": "Greece", "code": "GR" }, { "name": "Croatia", "code": "HR" }, { "name": "Hungary", "code": "HU" }, { "name": "Jordan", "code": "JO" }, { "name": "Cambodia", "code": "KH" }, { "name": "Lithuania", "code": "LT" }, { "name": "Latvia", "code": "LV" }, { "name": "Malta", "code": "MT" }, { "name": "Romania", "code": "RO" }, { "name": "Slovakia", "code": "SK" }, { "name": "Laos", "code": "LA" } ], "code": 0 }

I have the CN/TW/HK version, otherwise I need the global version, can you share your global version of Firmware with me? I will also share my Chinese version

@mstewart197930
Copy link

HI, I have just bought an ax1500 from aliexpress, and didnt realise it is chinese version, i dont seem to be able to change the language to english, any ideas???
thanks

@Unailoro
Copy link

HI, I have just bought an ax1500 from aliexpress, and didnt realise it is chinese version, i dont seem to be able to change the language to english, any ideas??? thanks

Hi, to change the language to English, you have to update the firmware to the global version.

@mstewart197930
Copy link

mstewart197930 commented Aug 31, 2024 via email

@CristianZatt
Copy link

Doesn't work on xiaomi be3600 as it unfortunately
has only CN region in the firmware.

@umutkeltek
Copy link

For those who cannot set the country to CN, TW, or HK, the best option might be South Korea (KR).

Additionally, from my experience, when you reset your router, if your first attempt is to set it to CN, TW, or HK, the router will change the country even if it shows an "invalid token" message. I changed mine to KR, and now I'm unable to change it back to CN, even though I was using CN before I had to reset my router.

@umutkeltek
Copy link

umutkeltek commented Oct 23, 2024

Instead of using set_country_code use this link:

http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxxxxxxx/api/xqsystem/set_location?location=CN

You are not limited to country list.

@Shuozhe
Copy link

Shuozhe commented Nov 1, 2024

Instead of using set_country_code use this link:

http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxxxxxxx/api/xqsystem/set_location?location=CN

You are not limited to country list.

Thanks, worked on my ax3600! Couldnt pair mi home app set to mainland before that (and router is not available in germany)

@umutkeltek
Copy link

Thanks, worked on my ax3600! Couldnt pair mi home app set to mainland before that (and router is not available in germany)

Glad to hear it worked! I haven't tried using the Mi Home app myself; I've been using the Mi WiFi app, but honestly, it feels a bit like trash. I prefer controlling through browser directly, it gives more control.

@ThomazPassarelli
Copy link

I have a Redmi AX6 Chinese Version running on MiWiFi 稳定版 1.1.14
accessing:
http://192.168.31.1/cgi-bin/luci/;stok=XXXXXXXXXXXXXXXXXXXX/api/xqsystem/country_code
Response:
{"current":"CN","list":[{"name":"中国大陆","code":"CN"},{"name":"香港地区","code":"HK"},{"name":"台湾地区","code":"TW"},{"name":"韩国","code":"KR"},{"name":"欧洲","code":"EU"}],"code":0}

Upon accessing:
http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/api/xqsystem/set_country_code?country=HK
Response:
{"msg":"操作失败","code":1606}

Also tried:
http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxxxxxxx/api/xqsystem/set_location?location=HK
Response:
No page is registered at '/api/xqsystem/set_location'.
If this url belongs to an extension, make sure it is properly installed.
If the extension was recently installed, try removing the /tmp/luci-indexcache file.

@TheGraske
Copy link

Same issue here, anyone got a solution if neither set_country_code or set_location works?

@fich
Copy link

fich commented Jan 15, 2025

Works on my Mi Router 4a Global (not gigabit)
Thx

January 2025

@DiegoS-AS
Copy link

I have a Redmi AX6 Chinese Version running on MiWiFi 稳定版 1.1.14 accessing: http://192.168.31.1/cgi-bin/luci/;stok=XXXXXXXXXXXXXXXXXXXX/api/xqsystem/country_code Response: {"current":"CN","list":[{"name":"中国大陆","code":"CN"},{"name":"香港地区","code":"HK"},{"name":"台湾地区","code":"TW"},{"name":"韩国","code":"KR"},{"name":"欧洲","code":"EU"}],"code":0}

Upon accessing: http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/api/xqsystem/set_country_code?country=HK Response: {"msg":"操作失败","code":1606}

Also tried: http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxxxxxxx/api/xqsystem/set_location?location=HK Response: No page is registered at '/api/xqsystem/set_location'. If this url belongs to an extension, make sure it is properly installed. If the extension was recently installed, try removing the /tmp/luci-indexcache file.

I got the same issue. Tried every method so far, i have an AX9000

@saif4341996
Copy link

Please note that some of these APIs are POST apis meaning you have to either use a tool like POSTMAN or write an actual code script to make these work. I couldnt get the actual complete channel list by changing the country but i was able to manually hard set the channel to 157 by using this API.

the important value below is channel2-157

http://router.miwifi.com/cgi-bin/luci/;stok=xxxxxx/api/xqnetwork/set_all_wifi?bsd=0&on1=1&ssid1=Xiaomi_601C&encryption1=psk2&channel1=0&bandwidth1=0&hidden1=0&txpwr1=max&pwd1=xxxxx&on2=1&ssid2=Xiaomi_601C_5G&encryption2=psk2&channel2=157&bandwidth2=0&hidden2=0&txpwr2=max&pwd2=xxxxxx&isDFS=0

hope this helps atleast somebody. I was trying to resolve this since 1 whole day until it hit me that not all api requests work on simple browsers.

Additionally, you can chech which apis are used by opening up developer tools and checking the network tab and then clicking on a button. from there you can take the api and payload format and try it yourself the way you would like.

@muneebshafiq
Copy link

muneebshafiq commented Feb 18, 2025

I was able to unlock upper channels (149 and above) of 5GHz WiFi on Ax3000. For me what I did was

  • Turned off smart connect i.e. separated 2.4GHz and 5GHz bands
  • First changed the location** and country code*** of satellite router then primary router to CN.
  • Changed the 5GHz bandwidth to 80MHz.

** http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxxxxxxx/api/xqsystem/set_location?location=CN
*** http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/api/xqsystem/set_country_code?country=CN

If you change the primary router first it will break the mesh network and you have to reset it. Also keep the wireless channel to auto because dropdown will not show the extended channels. I initalized the router with South Korea region and after changing the location to CN I changed the time zone of primaray router to Korea again as satellite/mesh router timezone was not changed with location change

image

@zcop
Copy link

zcop commented Mar 1, 2025

For those who has {"msg":"操作失败","code":1606} because CountryCode hardcode within bdata partition
You can change Country Code by editing bdata mtd partition then write back to device.
Here 's some steps:

1.Get bdata partition to edit. Require ssh enabled.

  • List all mtd partition to find which is bdata, in my case bdata is mtd15
    #cat /proc/mtd
  • Get bdata
    #nanddump -f /tmp/bdata.bin /dev/mtd15
  • Download bdata.bin to PC to edit with WinSCP or something like that.

2.Edit countrycode. Need hex editor, python 3 and some python script in https://github.com/odedlaz/ax3600-files/tree/master/scripts

  • Open bdata.bin in Hex Editor, replace old Country code whith new one then save the file.
    image
  • Calculate CRC32 of new file with crc32.py from above github
    python C:\crc32.py "C:\Users\z**\Desktop\bdata.bin"
    new:      0xc71829ed
    original: 0x20dddf5c
  • Edit bdata first 4 offset with new CRC32 checksum
    image
  1. Enable write permission on bdata partition. Default is readonly. SSH to Router
  • Run command to some write magic bytes to crash partition that make bdata writeable
    zz=$(dd if=/dev/zero bs=1 count=2 2>/dev/null) ; printf '\xA5\x5A%c%c' $zz $zz | mtd write - crash
  • Reboot device
    Reboot
  • I use WinsSCP uploading edited bdada.bin to /tmp/
  • Write new bdata to NAND
    mtd write /tmp/bdata.bin bdata
  • Reboot device
    Reboot
  1. The result
    image
  2. DFS channel(100-144) still not working as expected. wifi 5ghz disappeared. Maybe my device is for China only so Xiaomi blocking those channel from firmware that nothing i can do :/

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