GL.iNet GL-MT3600BE(及多数 GL.iNet 4.x 固件机型)的开箱设置助手。提供可选项清单:修改固件地区代码 CN 改 US 解锁国际版功能、只读体检、SSH 接入与公钥免密、全量备份、风扇工作温度、GL 管理页温度滑块范围补丁、物理拨动开关绑定任意服务、开关页面支持自定义模块、zram-swap、关闭云服务与远程管理、查看/修改无线地区码。用户提到 MT3600BE、GL.iNet 路由器开箱、改地区/地区代码/国际版/解锁隐藏菜单、SSH 免密、风扇温度、温度滑块、拨动开关时使用。
Scanned 8/30/2026
Install to Claude Code
npx -y skills add bdhwrsh/gl-mt3600be-setup --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of mt3600be-setup?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/bdhwrsh-mt3600be-setup)More formats (shields.io, HTML) on the badges page.
---
name: mt3600be-setup
description: GL.iNet GL-MT3600BE(及多数 GL.iNet 4.x 固件机型)的开箱设置助手。提供可选项清单:修改固件地区代码 CN 改 US 解锁国际版功能、只读体检、SSH 接入与公钥免密、全量备份、风扇工作温度、GL 管理页温度滑块范围补丁、物理拨动开关绑定任意服务、开关页面支持自定义模块、zram-swap、关闭云服务与远程管理、查看/修改无线地区码。用户提到 MT3600BE、GL.iNet 路由器开箱、改地区/地区代码/国际版/解锁隐藏菜单、SSH 免密、风扇温度、温度滑块、拨动开关时使用。
---
# GL-MT3600BE 开箱设置
面向刚拿到手的 GL.iNet GL-MT3600BE。**先展示菜单让用户挑,再执行;不要自作主张全跑一遍。**
适用固件:GL.iNet v4.x(前端补丁类项目在 **v4.9.0** 上实测)。多数项目对其他 GL.iNet 机型同样适用,但**带 ⚠️ 的项目务必先确认机型和固件版本**。
## 可选项清单
把下表原样展示给用户,让用户回复编号(可多选),**只执行用户点名的项**。
| # | 项目 | 风险 | 参考 |
|---|---|---|---|
| 0 | **只读体检**:型号、固件版本、target/架构、内存、存储、温度、无线地区 | 无(纯只读) | [checkup-and-access.md](references/checkup-and-access.md) |
| 1 | ⛔ **修改固件地区代码 CN → US**(仅限 GL-MT3600BE,**有变砖风险,须用户确认执行**) | **最高(写裸 flash)** | [region-code.md](references/region-code.md) |
| 2 | **SSH 接入 + 公钥免密登录** | 低 | [checkup-and-access.md](references/checkup-and-access.md) |
| 3 | **全量配置备份**(`sysupgrade -b`) | 无 | [checkup-and-access.md](references/checkup-and-access.md) |
| 4 | **设置风扇启动温度**(改 `glfan`,立即生效) | 低(自动备份+回滚) | [fan.md](references/fan.md) |
| 5 | ⚠️ **GL 管理页温度滑块范围补丁**(原厂 70–90℃ → 自定义,默认 40–70℃) | 中(改厂商前端资源) | [fan.md](references/fan.md) |
| 6 | **物理拨动开关绑定任意服务**(左 ON 启动 / 右 OFF 停止) | 低 | [switch-button.md](references/switch-button.md) |
| 7 | ⚠️ **让 GL 管理页能保存自定义开关模块**(绕过 `check_sync_status`) | 中(改厂商前端资源) | [switch-button.md](references/switch-button.md) |
| 8 | **安装 zram-swap**(512MB 机型缓解 OOM) | 低 | [system.md](references/system.md) |
| 9 | **隐私收尾**:关闭 GL 云服务、远程管理、自动上报 | 低 | [system.md](references/system.md) |
| 10 | ⛔ **查看 / 修改无线地区码(UCI 国家码)** | 高,涉及当地无线电法规 | [wireless-region.md](references/wireless-region.md) |
**顺序很重要**:先 `0` 体检确认型号,再决定要不要做 `1`。
**第 1 项要做就必须最先做**——它改的是 flash 里的 factory 数据,不随固件走;改完建议恢复出厂让地区相关配置重新生成,开箱阶段做代价为零,等配置好了再改就得全部重来。它自带一套强制的分区备份流程,与第 3 项的配置备份不是一回事,**不能互相替代**。
第 1、10 项**必须**单独取得用户明确确认。第 1 项不做的话,2–10 全部可以照常进行。
## 安全边界
1. **默认只读。** 只有用户明确点名的项目才写入路由器。
2. **每项开跑前先说清楚会改哪些文件、怎么回滚**,得到确认再动手。
3. **第 1 项写的是裸 flash 分区**,同一分区还存着 MAC 和射频校准数据,写错偏移量可能**不可逆损坏**。四道闸门一个都不能省:① 型号必须是 GL-MT3600BE;② 整个分区必须先备份到用户电脑并核对哈希;③ 目标偏移量处必须**恰好读到 `CN`**;④ 写入后必须回读到 `US` 才允许重启。任何一步不符就**停下报告**,绝不硬写。**不要照搬其他型号的偏移量**——各型号差两个数量级。
4. 第 5、7 项改的是厂商前端压缩 JS:必须通过**版本 + 唯一锚点**校验,锚点不唯一就拒绝修改;**不要跨固件版本复制 `.js.gz`**;**不要**把这类文件写进 `sysupgrade.conf`(固件升级会失配甚至打不开管理页)。
5. 第 10 项可能违反当地无线电管理规定,也可能让 Wi-Fi 直接不工作。**必须**先备份、先取得用户明确同意,并告知回滚方法。
6. 涉及物理拨动开关时:**不要**替用户拨动、不要调用状态同步、不要按当前拨杆位置自动启停服务。
7. **重启和恢复出厂由用户自己执行**,不要替用户敲 `reboot`。
8. 不把用户的密码、私钥、路由器完整备份写进任何仓库或聊天记录。
9. 验证要看**实际结果**(读回的字节、配置值、进程、`gzip -t`、SHA256、`sh -n`),不要只看命令退出码。
## 连接约定
**本节是连接信息的唯一来源,参考文件不再重复。**
GL.iNet 出厂默认:地址 `192.168.8.1`,SSH 用户 `root`,密码 = 你在初始化向导里设置的**管理页密码**。
```sh
ssh root@192.168.8.1
```
四个 Mac/Linux 侧脚本都读这几个环境变量:
| 变量 | 默认 | 说明 |
|---|---|---|
| `MT3600BE_TARGET` | `root@192.168.8.1` | SSH 目标 |
| `MT3600BE_SSH_KEY` | 空 | 私钥路径;留空则用密码或 ssh-agent |
| `MT3600BE_SCP_COMPAT` | `-O` | OpenSSH < 8.6 请显式设为空 |
约定与注意:
- **参考文件里的命令默认在路由器 SSH 会话内执行**;需要在电脑本地跑的会显式标注。
- **传文件一律 `scp -O`**:现代 macOS 的 `scp` 默认走 SFTP,而干净的路由器固件没有 sftp-server,漏掉 `-O` 会报 `ash: /usr/libexec/sftp-server: not found` / `scp: Connection closed`。该错误不损坏文件,加 `-O` 重传即可。
- `opkg`、`uci`、`/etc/init.d/*` 只在路由器上有;误在本地执行只会 `command not found`,不会改到路由器。
- 主机密钥变化时先报告并核对指纹,**不要关闭主机密钥校验**。
- 改过前端资源后必须**强制刷新浏览器缓存**(macOS `Command + Shift + R`,Windows/Linux `Ctrl + Shift + R`)。
## 脚本
从本 skill 目录运行,路径前缀 `scripts/`:
| 脚本 | 运行侧 | 作用 |
|---|---|---|
| `install-ssh-key.sh` | 本地 | 幂等部署公钥到 dropbear `authorized_keys` |
| `set-fan-temperature.sh` | 本地 | `status` 只读查看;`30`–`90` 设置风扇启动温度,自动备份并在失败时回滚 |
| `patch-fan-range-ui.sh` | 本地 | 温度滑块范围补丁 `status` / `apply [MIN MAX]` / `restore`,四锚点校验 |
| `patch-switch-button-ui.sh` | 本地 | 开关页面补丁 `status` / `apply <模块名> [显示标签]` / `restore`,双锚点校验 |
| `switch-handler-template.sh` | 路由器 | 拨动开关事件处理器模板,改两个变量后复制为 `/etc/gl-switch.d/<模块名>.sh` |
| `lib-ssh.sh` | — | 供上述脚本 source,不要直接执行 |
`switch-handler-template.sh` **不要在本地直接执行**,部署后也不要用 `on`/`off` 参数试跑;只做 `sh -n` 语法检查和绑定值检查,实际拨动留给用户。
**第 1 项(固件地区代码)故意没有脚本**:写裸 flash 必须逐步确认,参考文件里每一步都带验证闸门,照着一步步跑,读到的东西不对就停——不要为了省事把它包成一键脚本。
## 工作流
1. 展示可选项清单,等用户选编号。用户没选就不要动手。
2. **先跑第 0 项**确认机型、固件版本、target/架构——用户选了 1、5、7、10 时这一步是硬前提。
3. 读对应参考文件,向用户说明改动范围和回滚方式,得到确认。用户同时选了第 1 项和别的项时,**先把第 1 项做完并重启验证**,再动其他。
4. 执行最小变更;写 flash 前必须完成备份+读值校验,前端资源必须过唯一锚点校验并留备份。
5. 验证实际结果,然后报告:改了哪些文件、备份在哪、是否需要强制刷新页面、是否需要用户自己拨开关或重启。
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!