该项目是面向中兴 U60 Pro 5G 路由器的开源全栈管理工具包,通过轻量 Rust 代理和原生移动应用替代臃肿且带有遥测的官方管理栈,实现对路由器的深度管控。
# ZTE U60 Pro 工具包
**解锁您的 ZTE U60 Pro (MU5250) 5G 移动路由器的全部潜力。**
设备端 REST 代理 + 原生移动配套应用,用于信号监控、频段锁定、
配置备份/解密、网络自定义等。
[](https://www.rust-lang.org/)
[-orange.svg)]()
[]()
[-green.svg)]()
[](https://open-u60-pro.vercel.app)
## 设备
| | |
|---|---|
| **型号** | ZTE U60 Pro (MU5250) |
| **硬件** | `MU5250_HW1.0` |
| **固件** | `CN_ZTE_MU5250V1.0.0B27` (2025年10月31日) |
| **芯片组** | Qualcomm Snapdragon X75 (SDX75 / SDXPINN) |
| **CPU** | 4x Cortex-A55 (ARMv8.2-A) @ 2.2 GHz |
| **RAM** | 1.6 GB |
| **存储** | 8 GB eMMC (Longsys JS08AC), 69 个分区, A/B 插槽 |
| **Modem** | 5G-A Sub-6 + mmWave, Cat 22 LTE |
| **NR 频段** | n1/2/3/5/7/8/18/20/26/28/29/38/40/41/48/66/71/75/77/78/79 |
| **LTE 频段** | 1/2/3/4/5/7/8/18/19/20/26/28/29/32/34/38/39/40/41/42/43/48/66/71 |
| **WiFi** | WiFi 7 (802.11be), 2x2 MIMO, EHT160 |
| **WiFi 芯片组** | Qualcomm WCN7851 (`qcacld32`) |
| **WiFi 射频** | 2.4 GHz (ch 1-13, EHT40, 19 dBm) · 5 GHz (ch 36-165, EHT160, 18 dBm) |
| **电池** | 10,000 mAh 锂离子, 4.5V 最大值, PM7550B 电量计 |
| **充电** | USB-PD, 15W (5V/3A), 快充 |
| **USB** | USB-C (PD sink, OTG/充电宝) |
| **显示屏** | 3.5" IPS LCD (Sitronix ST77926), 320x480, RGB565, DRM/KMS |
| **UI 工具包** | LVGL 配合 FreeType + LodePNG, 资源位于 `/usr/ui/` |
| **背光** | AWINIC AW9523B (I2C `1-005b`), sysfs `/sys/class/leds/led:lcd/brightness` (0-255) |
| **触摸** | Sitronix (I2C `1-0055`) -> `/dev/input/event3` |
| **OS** | ZWRT (OpenWrt 23.05.4 r24012-d8dd03c46f) |
| **内核** | Linux 5.15.170-perf, SMP PREEMPT, aarch64 |
| **PMIC** | PMX75 + PM7550BA + PMG1110 |
| **SIM** | 单 nano-SIM (无 eSIM) |
| **NFC** | 快速设备配对 |
| **蓝牙** | Qualcomm WCN7850 (BT 5.3+), UART 传输 — 已禁用 (服务已停止, 模块已卸载) |
| **客户端** | 最多 64 个 (每个射频 32 个) |
## 包含内容
### 设备端代理 (`zte-agent`)
```
# 为设备交叉编译
cargo build --release --target aarch64-unknown-linux-musl -p zte-agent
```
**涵盖 16 个类别的 143 个 endpoint:**
| 类别 | # | 功能 |
|---|---|---|
| 设备 | 14 | 系统信息, 电池, CPU, 内存, 散热, 充电器, 充电控制, 重启, 恢复出厂设置, 省电 |
| 网络 | 9 | 信号强度 (RSRP/SINR/RSRQ), 速度, 流量统计, WAN/LAN 状态, rmnet, 已连接客户端 |
| Modem | 12 | 飞行模式, 移动数据开关, 网络模式 (2G-5G), 运营商扫描, 手动注册 |
| SMS | 5 | 列表, 发送, 删除, 标记已读, 存储容量 |
| SIM | 7 | SIM 信息, IMEI, PIN 管理, PUK 解锁 |
| 小区/频段 | 19 | NR/LTE 频段锁定, 小区锁定, 邻区扫描, STC, 信号质量检测 |
| 路由器 | 29 | DNS, LAN/DHCP, 防火墙, NAT, DMZ, UPnP, 端口转发, QoS, 域名过滤, APN 配置, VPN/ALG |
| WiFi | 4 | 状态, SSID/密码/信道/TX 功率, 访客 WiFi |
| USB | 3 | USB 模式切换, 充电宝控制 |
| 电话 | 11 | 语音呼叫 (拨号/挂断/接听/DTMF/静音), USSD 代码, SIM Toolkit 菜单 |
| 测速 | 4 | 服务器列表, 运行测试, 进度追踪 |
| DoH 代理 | 6 | DNS-over-HTTPS 代理, 缓存管理 |
| 局域网测试 | 3 | WiFi ping, 下载/上传吞吐量测量 |
| SMS 转发 | 9 | 自动转发规则, CRUD, 测试, 日志管理 |
| 系统 | 2 | 进程列表, 结束预装应用进程 |
| 调度器 | 5 | 为任何 API 操作计划/循环执行任务 |
### 移动配套应用
通过 WiFi 直接连接的原生应用 —— 无需电脑。
| | iOS | Android |
|---|---|---|
| **框架** | SwiftUI | Jetpack Compose |
| **最低版本** | iOS 16.0 | Android 8.0 (API 26) |
| **依赖项** | 无 (仅 Apple 框架) | OkHttp, Hilt, Vico, kotlinx.serialization |
| **功能** | BandLock, 通话, 客户端, 配置, 仪表盘, 设备信息, 登录, 路由器设置, 调度器, 信号, SIM/STK/USSD, SMS, 工具, USB 模式 | BandLock, 客户端, 配置, 仪表盘, 设备信息, 登录, 路由器设置, 调度器, 信号, SIM/STK, SMS, 工具, USB 模式 |
| **标签页** | 仪表盘, SMS, 工具, 路由器, 设置 | 仪表盘, SMS, 工具, 路由器, 设置 |
| **路径** | `mobile/ios/OpenU60/` (109 个 Swift 文件) | `mobile/android/OpenU60/` (90 个 Kotlin 文件) |
## 为什么使用此工具而不是官方 ZTE 应用?
原厂 ZTE U60 Pro 运行着 **44 个专有 daemon**,仅用于设备管理就消耗了 **225 MB 的 RAM**。其中许多是不必要的(TR-069 远程管理、MQTT 遥测、Samba、NFC、诊断),并且会将数据回传至 ZTE 服务器。
`zte-agent` 用一个约 2.3 MB 的二进制文件取代了对官方 ZTE 管理应用的需求:
| | zte-agent | ZTE 官方栈 |
|---|---|---|
| **进程** | 1 | 44 |
| **内存 (RSS)** | ~0.8 MB | 225 MB |
| **二进制大小** | ~2.3 MB | 合计 ~50+ MB |
| **线程** | ~10 | ~130+ |
| **遥测** | 无 | 回传数据至 `iot.zte.com.cn` 等 |
| **应用** | 开源原生 iOS/Android | 闭源,仅中文 |
官方 ZTE 栈占用内存最多的组件:
| 进程 | RAM | 用途 |
|---------|-----|---------|
| `zte_topsw_devui` | 22.8 MB | LCD UI daemon |
| `zte_topsw_get_brand` | 14.2 MB | 运营商品牌标识 |
| `zte_topsw_data` | 10.9 MB | 移动数据管理 |
| `zte_topsw_tr069` + 子进程 | 23.2 MB | ISP 远程管理 |
| `zte_topsw_diag` | 7.1 MB | 诊断/日志 |
## 设备影响
### 文件系统布局
```
/data/ (writable /data partition)
├── zte-agent <- on-device REST agent
└── local/tmp/
├── start_zte_agent.sh <- agent boot script
├── dropbear <- SSH binary (if installed)
└── start_dropbear.sh <- SSH boot script (if installed)
/etc/ (read-only rootfs)
├── rc.local <- boot hooks appended here
└── dropbear/
├── authorized_keys <- SSH public key (if installed)
└── dropbear_rsa_host_key <- generated host key (if installed)
```
## 快速开始
### 前置条件
```
# 1. 安装 Rust —— 参见 https://rustup.rs
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 2. 添加 musl 交叉编译 target
rustup target add aarch64-unknown-linux-musl
# 3. 安装 musl 交叉链接器
# macOS:
brew install filosottile/musl-cross/musl-cross
# Ubuntu/Debian:
sudo apt install musl-tools gcc-aarch64-linux-gnu
# 4. 安装 ADB
# macOS:
brew install android-platform-tools
# Ubuntu/Debian:
sudo apt install android-tools-adb
# 5. 构建 agent
cargo build --release --target aarch64-unknown-linux-musl -p zte-agent
```
### 首次设置
对于从未安装过 zte-agent 的全新出厂设备:
**选项 A —— 浏览器(无需工具)**
访问 [open-u60-pro.vercel.app](https://open-u60-pro.vercel.app),输入您的路由器密码和所需的代理密码,连接 USB,然后点击部署。需要 Chrome 或 Edge。
**选项 B —— 命令行**
```
./setup.sh
```
启用 ADB,构建并推送代理,创建启动脚本,并可选择为无线部署设置 SSH。
### 部署代理(后续更新)
```
./deploy.sh yourpassword
```
这会构建二进制文件,通过 SSH(端口 2222)将其部署到设备上,更新启动密码,并重启代理。
### 连接移动应用
1. 将您的手机连接到路由器的 WiFi
2. 打开 OpenU60 应用
3. 设置代理 URL:`http://192.168.0.1:9090`
4. 输入您在上面设置的代理密码
## 项目结构
```
u60-Pro-rs/
├── zte-agent/ On-device REST API server
│ └── src/
│ ├── main.rs Entry point (Axum HTTP server)
│ └── routes/ REST endpoint handlers
│
└── mobile/ Native companion apps
├── README.md Mobile apps documentation
├── ios/OpenU60/ SwiftUI app
│ ├── Core/ Networking, crypto, models
│ ├── Features/
│ │ ├── BandLock/ Band locking
│ │ ├── Call/ Voice calls
│ │ ├── Clients/ Connected devices
│ │ ├── Config/ Config backup/restore
│ │ ├── Dashboard/ Signal cards, WiFi card, status
│ │ ├── DeviceInfo/ Hardware + firmware info
│ │ ├── Login/ Auth + keychain
│ │ ├── RouterSettings/
│ │ │ ├── APN/ APN profile management
│ │ │ ├── CellLock/ Cell locking
│ │ │ ├── Device/ Reboot, USB, battery, charge policy
│ │ │ ├── DNS/ DNS settings
│ │ │ ├── Firewall/ Firewall rules
│ │ │ ├── LAN/ DHCP settings
│ │ │ ├── MobileNetwork/ Network mode, SA/NSA
│ │ │ ├── NetworkMode/ Network selection
│ │ │ ├── QoS/ Traffic shaping
│ │ │ ├── Schedule/ Scheduled reboot/wifi
│ │ │ ├── SignalDetect/ Signal quality detection
│ │ │ ├── SIM/ SIM card PIN/PUK management
│ │ │ │ └── STK/ SIM Toolkit & USSD
│ │ │ ├── STC/ Smart Tower Connect
│ │ │ ├── Telemetry/ Telemetry blocking
│ │ │ ├── VPN/ VPN settings
│ │ │ └── WiFi/ WiFi configuration
│ │ ├── Scheduler/ Scheduled/recurring jobs
│ │ ├── Settings/ App settings
│ │ ├── Signal/ Signal monitor
│ │ ├── SMS/ SMS compose/read/conversations
│ │ ├── Tools/ Band lock, clients, config, etc.
│ │ └── USBMode/ USB mode detection/switching
│ └── Navigation/ 5-tab bar (Dashboard, SMS, Tools, Router, Settings)
└── android/OpenU60/ Jetpack Compose app
├── core/ Network, crypto, models, DI
├── feature/ bandlock, clients, config, dashboard,
│ deviceinfo, login, router, scheduler,
│ settings, signal, sms, tools, usb
└── navigation/ NavHost + bottom bar
├── web/ Landing page & web dashboard (open-u60-pro.vercel.app)
│ ├── src/
│ │ ├── app/ Next.js app router (page, layout, globals)
│ │ ├── components/ Landing sections, UI primitives
│ │ └── data/ Feature data, API endpoints, device specs
│ └── public/ Static assets (images, icons)
```
## 信号阈值
| 指标 | 优秀 | 良好 | 一般 | 较差 |
|---|---|---|---|---|
| **RSRP** (dBm) | >= -80 | >= -100 | >= -110 | < -110 |
| **SINR** (dB) | >= 20 | >= 10 | >= 0 | < 0 |
| **RSRQ** (dB) | >= -10 | >= -15 | >= -20 | < -20 |
## 许可证与免责声明
本项目基于 [MIT 许可证](LICENSE) 授权。
**免责声明:** 本软件按“原样”提供,不提供任何形式的保证。使用风险由您自行承担。对于因使用本软件而导致的设备损坏、保修失效或其他后果,作者概不负责。