GL iNet 区域修改工具箱
刷机有风险,操作需谨慎

GL iNet 路由器更改区域指南

本教程旨在指导用户如何在不同型号的 GL iNet 路由器上更改区域设置。请注意,此操作涉及直接写入闪存,存在一定风险。操作前请确保充分理解每一步骤,并小心谨慎地执行。

风险警告
  • 直接写入闪存可能导致设备无法启动(变成砖头)。
  • 请在操作前仔细阅读教程,确保操作步骤无误。
  • 操作过程中,请谨慎执行每一步。

准备工作

在开始之前,请确保您已经备份了路由器的重要数据。更改区域设置前,建议查看当前的分区信息以确认写入的位置。您可以在路由器已安装的 OpenWRT 系统中通过 SSH 登录,并使用以下命令查看分区信息:

lsblk
# 或
fdisk -l

标准操作规范

为了避免误操作导致设备损坏,请务必严格按照以下四步核心顺序执行:

STEP 01检查区域代码
STEP 02更改为 US 区域
STEP 03验证更改结果
STEP 04重启设备生效
断路器原则:如果在第一步“检查”时发现区域代码不为 CN,请勿继续操作,并前往项目仓库提交 issue。

各型号特定命令

MT3600BE /dev/mtdblock3 @ 16520

1. 检查当前区域代码 (需为CN)
dd if=/dev/mtdblock3 bs=1 count=2 skip=16520 2>/dev/null | hexdump -C
2. 更改为 US 区域 & 同步
echo -n "US" | dd of=/dev/mtdblock3 bs=1 seek=16520 conv=notrunc && sync
3. 验证更改结果 (应显示US)
dd if=/dev/mtdblock3 bs=1 count=2 skip=16520 2>/dev/null | hexdump -C
4. 重启设备
reboot

MT3000 /dev/mtdblock3 @ 136

1. 检查当前区域代码
dd if=/dev/mtdblock3 bs=1 count=2 skip=136 2>/dev/null | hexdump -C
2. 更改为 US 区域
echo -n "US" | dd of=/dev/mtdblock3 bs=1 seek=136 conv=notrunc && sync
3. 验证更改
dd if=/dev/mtdblock3 bs=1 count=2 skip=136 2>/dev/null | hexdump -C
4. 重启
reboot

MT2500 需解除写保护

1. 解除写保护并检查区域
echo 0 > /sys/block/mmcblk0boot1/force_ro
dd if=/dev/mmcblk0boot1 bs=1 count=2 skip=136 2>/dev/null | hexdump -C
2. 更改为 US 区域
echo -n "US" | dd of=/dev/mmcblk0boot1 bs=1 seek=136 conv=notrunc && sync
3. 验证更改
dd if=/dev/mmcblk0boot1 bs=1 count=2 skip=136 2>/dev/null | hexdump -C
4. 重启
reboot

AX1800 / AXT1800 /dev/mtdblock8 @ 152

1. 检查当前区域代码
dd if=/dev/mtdblock8 bs=1 count=2 skip=152 2>/dev/null | hexdump -C
2. 更改为 US 区域
echo -n "US" | dd of=/dev/mtdblock8 bs=1 seek=152 conv=notrunc && sync
3. 验证更改
dd if=/dev/mtdblock8 bs=1 count=2 skip=152 2>/dev/null | hexdump -C
4. 重启
reboot

MT6000 /dev/mmcblk0p2 @ 136

1. 检查当前区域代码
dd if=/dev/mmcblk0p2 bs=1 count=2 skip=136 2>/dev/null | hexdump -C
2. 更改为 US 区域
echo -n "US" | dd of=/dev/mmcblk0p2 bs=1 seek=136 conv=notrunc && sync
3. 验证更改
dd if=/dev/mmcblk0p2 bs=1 count=2 skip=136 2>/dev/null | hexdump -C
4. 重启
reboot

BE3600 /dev/mtdblock11 @ 136

1. 检查当前区域代码
dd if=/dev/mtdblock11 bs=1 count=2 skip=136 2>/dev/null | hexdump -C
2. 更改为 US 区域
echo -n "US" | dd of=/dev/mtdblock11 bs=1 seek=136 conv=notrunc && sync
3. 验证更改
dd if=/dev/mtdblock11 bs=1 count=2 skip=136 2>/dev/null | hexdump -C
4. 重启
reboot

GL-BE6500 /dev/mtdblock11 @ 136

1. 检查当前区域代码
dd if=/dev/mtdblock11 bs=1 count=2 skip=136 2>/dev/null | hexdump -C
2. 更改为 US 区域
echo -n "US" | dd of=/dev/mtdblock11 bs=1 seek=136 conv=notrunc && sync
3. 验证更改
dd if=/dev/mtdblock11 bs=1 count=2 skip=136 2>/dev/null | hexdump -C
4. 重启
reboot

MT5000 /dev/mmcblk0p2 @ 16520

1. 检查当前区域代码
dd if=/dev/mmcblk0p2 bs=1 count=2 skip=16520 2>/dev/null | hexdump -C
2. 更改为 US 区域
echo -n "US" | dd of=/dev/mmcblk0p2 bs=1 seek=16520 conv=notrunc && sync
3. 验证更改
dd if=/dev/mmcblk0p2 bs=1 count=2 skip=16520 2>/dev/null | hexdump -C
4. 重启
reboot

通用高级方案:暴力查找

如果上述型号不包含您的设备,您可以尝试通过查找分区信息来自行定位区域代码特征位置。以下步骤以 GL-AXT1800 为例进行方法论演示。

1. 定位包含区域信息的分区

执行命令查看系统分区表。通常区域信息存储在 ART、Factory 或 0:ART 等出厂定制分区中。

cat /proc/mtd
root@GL-AXT1800:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00180000 00020000 "0:SBL1"
...
mtd8: 00080000 00020000 "0:ART" <-- 注意这个 mtd8 分区

在此例中,目标分区对应的块设备是 /dev/mtdblock8

2. 暴力搜索区域代码特征串

使用 hexdump 读取目标分区内容,并过滤搜索 COUNTRY 关键字:

hexdump -C /dev/mtdblock8 | grep "COUNTRY"

假设命令行回显如下:

00000090 43 4f 55 4e 54 52 59 3a 43 4e ff ff ff ff ff ff |COUNTRY:CN......|

3. 计算绝对偏移量(关键核心步骤)

我们需要精确计算出 CN 这两个字符在整个闪存文件分区中的确切十进制字节位置。

行首十六进制基地址:00000090 ➔ 转换为十进制 = 144

行内字节跨度:从行首到 CN 之前有 43 4f 55 4e 54 52 59 3a 共计 8 个字节(即 "COUNTRY:")。

最终偏移量公式:144 (行首) + 8 (前置字节) = 152

得出结论:该型号下区域代码的精确起始偏移量就是 152。

4. 构造专用的修改与验证命令

既然已经推导出了偏移量为 152,就可以套用标准读写指令进行覆盖:

# 检查
dd if=/dev/mtdblock8 bs=1 count=2 skip=152 2>/dev/null | hexdump -C
# 修改
echo -n "US" | dd of=/dev/mtdblock8 bs=1 seek=152 conv=notrunc && sync
# 重启
reboot

效果说明与后续进阶配置

1. 功能解除展示

修改成功后,路由器 Web 界面左上角的「CN」专属标志将彻底消失。此时将全局界面切换至英语环境,即可顺利解锁出厂被隐藏的 AdGuard Home 等进阶核心功能。

2. 固件重置建议

成功变更区域后,为了确保底层nvram与应用链配置环境能完全应用新区域策略,强烈建议通过官方后台管理界面执行一次“重置固件”恢复出厂设置操作。

3. 繁体中文本地化

若您想保留中文界面同时享用海外区域特定功能,可将语言环境切为繁体中文。通过 SSH 登录,进入目标路径替换对应语言包:

将 /www/i18n/ 目录下后缀为 zh-cn 的文件内容或文件名,替换映射为 zh-tw 文件。