👁 1933
这个机器是群友让改的,问我收不,手上刚好没这个平台顺便收回来。好几个月了,今天拿出来刷顺便记录一下,之前也发了拆机刷机视频在 B 站等平台。
mt7986a(Filogic 830,四核 A53)· 2G 内存 + 128G eMMC · 双 2.5G 口 + 5 口千兆 · 带 M.2 接口 · 原厂跑 PCDN。对应型号 S20P。
刷机不会开 SSH 的,就直接 TTL 救砖方式刷入 uboot 即可。
刷入最新的 uboot 这个 uboot 理论都通用,各个 S20 系列:S20 即 S20P,后面越出来越阉割了——S20L 阉割双 2.5G,S20M 阉割 WiFi 和 2.5G。

所有东西一目了然了。
📥 工具与固件下载
所有 S20P / S20L / S20M 相关的 fip uboot、固件、工具,统一收集在网盘自取。其中第三方 fip uboot 本站已放直链,可直接下载(免网盘):
| 文件 | 说明 | 下载 |
|---|---|---|
mt7986_clx_s20p-2g-emmc-fip.bin | 第三方 fip uboot(S20P / 2G+128G / eMMC 版) | 站内直链 |
MD5SUMS | 校验和(下载后务必核对) | 查看 |
里面是 TF-A BL31 + U-Boot 2023.07(2025-04 构建),板型
mt7986a-clx_s20p,EMMC_BOOT 引导。刷入后开机会进 U-Boot 自带的 Web 刷机界面(BL2 / GPT / FIP / Firmware 四页),S20 全系通刷。md5:
52653da34bd4ad3c6e914591b9ff7cf0(674,201 字节)
💡 觉得站内直链好用的,备份留一份到自己网盘;网盘目录里同时保留了同款文件。
wget 下载!原厂固件的 busybox wget / curl 都没编 TLS,跑
wget https://… 会直接报:wget: SSL support not available, please install one of the libustream-.*[ssl|tls] packages…原机也不可能为这事去装一堆 opkg 包(缺源、缺依赖、折腾半天)。
正确做法:在电脑上下载好文件,再传进路由器——插 U 盘用
cp,或者开了 SSH 之后用 FTP/SFTP 客户端(WinSCP、FileZilla、Xftp 都行)拖进去。传完照第 4 节往下刷,效果完全一样。
🧭 整体刷机流程
┌──────────────────────────────────────────────────────────┐
│ ① 通电进系统 → ② 开 SSH / TTL 登录 │
└──────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────┐
│ ③ 备份原系统分区到 U 盘 / 外挂 SSD │
│ ⚠️ 不要写到 /tmp!(/tmp 是 RAM tmpfs,会爆内存) │
└──────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────┐
│ ④ md5sum 验证 fip 文件 → 写入 fip 分区(uboot) │
└──────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────┐
│ ⑤ 重启进 uboot-web (192.168.1.1) │
│ 刷 GPT 大分区 → 刷 kernel → 刷 rootfs │
└──────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────┐
│ ⑥ 启动后 cfdisk 重建大分区 → mkfs.ext4 → 挂载 │
└──────────────────────────────────────────────────────────┘
↓
✅ 完成
上面是文字版,下面这张图把三步主流程 + 备份/救砖旁路一次画清楚,照着走就行:

资料来源网络。本站不对刷机失败 / 变砖 / 数据丢失负责,请自行斟酌是否使用。
强烈建议先准备好 USB 转 TTL 救砖线,再开始刷机。
1️⃣ 登录设备:telnet 直接用,也可以开 SSH
这台机器原厂默认就开了 telnet,开机连上直接用,不需要先开 SSH 也能刷。想用 SSH(配合 FTP/SFTP 客户端传文件更方便)就按下面开一下 dropbear:
系统启动后按回车,TTL 登录 root 账号,开启 dropbear 服务:
# 方式 A:telnet 直接进(原厂默认开启,无需任何配置)
telnet 192.168.8.1
# 账号 root,密码 tty996icu
# 方式 B:开 SSH(可选)
uci set dropbear.@dropbear[0].enable='1'
uci commit dropbear
/etc/init.d/dropbear restart
之后用 SSH 软件登录即可:
- 地址:
192.168.8.1 - 端口:
22 - 账号:
root - 密码:
tty996icu
2️⃣ 了解原厂分区表
刷机前先查看分区分布。我们要做的是:先写入第三方 fip uboot,然后通过 uboot 的 web 界面写入固件到 kernel 和 rootfs,这样就可以正常启动了。
| 分区 | 起始扇区 | 结束扇区 | 大小 | 名称 | 说明 |
|---|---|---|---|---|---|
| 1 | 8192 | 9215 | 512 KiB | u-boot-env | uboot 环境分区,刷入 fip 时它会跟随变化 |
| 2 | 9216 | 13311 | 2 MiB | factory | 原厂 MAC、WiFi 无线校准分区 ⚠️ 一定要备份 |
| 3 | 13312 | 17407 | 2 MiB | fip | uboot 分区 |
| 4 | 17408 | 82943 | 32 MiB | kernel | 固件内核 |
| 5 | 82944 | 1131519 | 512 MiB | rootfs | 固件分区(系统空间) |
| 6 | 1131520 | 239599582 | ~113 GiB | permanent_config | PCDN 数据 / 缓存大分区,原厂默认挂 /permanent_config,备份就写这 |
blkid 实测:p5 = squashfs(rootfs)、p6 = ext4(PARTLABEL="permanent_config")。刷前自己也跑一遍 blkid / lsblk 对一下。💾 关于 rootfs 大小
原机 rootfs 只有 512 MiB,如果后期想多装插件又不想折腾路径映射,建议先刷支持大分区的 GPT(1G、2G 或 emmc 全用)。
不怎么装插件、把 Docker 都移到后面大分区的,可以不管它,反正更新也简单——刷下面 uboot,在 GPT 选项里选对应分区即可,刷完后大分区需要重新创建并格式化挂载。
3️⃣ 备份原厂分区(务必备份 factory!)
3.0 先停 Docker、清掉 p6 上的 PCDN 残余数据(腾空间)
原厂的 p6 数据区常年跑 PCDN(yfcloud 之类),会塞满一堆缓存碎片。备份前先把 Docker 停了,再把这块清干净,既腾出空间也顺便把残余清掉:
# 1) 停掉 Docker(原厂拿它跑 PCDN 容器)
/etc/init.d/dockerd stop
# 2) 确认已停
/etc/init.d/dockerd status
ps | grep -c dockerd
# 3) 清空 p6 数据分区上的残余(⚠️ 会清掉这一整块,确认没要留的东西)
rm -rf /permanent_config/*
# 4) 再看一眼空间,应该释放出来一大截
df -h /permanent_config
rm -rf /permanent_config/* 是清空整块 p6 数据分区,只在你确定里面没有需要保留的东西时执行。想留 PCDN 里的东西就先按 3.3 打包出来再清。
路由器的
/tmp 是内存 tmpfs,rootfs 备份 (512 MiB) 会瞬间塞爆 RAM 导致 OOM 重启。正确做法:直接写到设备自带的 p6 数据大分区,原厂系统默认挂在
/permanent_config/(这块就是 PCDN pcnd 缓存那块 100G+ 的大盘)。刷入第三方 OpenWrt 后,同一个分区的设备名变成
/dev/mmcblk0p6,一般会自动挂载成 /mnt/mmcblk0p6,到时候 cp 出来就行。
3.1 备份路径说明
# 直接看 p6 数据区挂在哪、还剩多少空间
df -h /permanent_config
ls -ld /permanent_config
# 原厂系统下它就是挂载好的,不需要自己挂 U 盘(空间不够的再外挂)
# 刷入第三方 OpenWrt 后,同一块分区一般挂成:
# /mnt/mmcblk0p6
# cp 出来即可:
# cp -a /mnt/mmcblk0p6/mmcblk0p*.bin /你的存储/
3.2 备份所有关键分区到 p6 数据区(/permanent_config/)
BAK=/permanent_config
# 各分区备份(直接落到 p6 数据大分区,空间足够)
dd if=/dev/mmcblk0p1 of=$BAK/mmcblk0p1_u-boot-env.bin conv=fsync
dd if=/dev/mmcblk0p2 of=$BAK/mmcblk0p2_factory.bin conv=fsync # ⚠️ 务必备份
dd if=/dev/mmcblk0p3 of=$BAK/mmcblk0p3_fip.bin conv=fsync
dd if=/dev/mmcblk0p4 of=$BAK/mmcblk0p4_kernel.bin conv=fsync
dd if=/dev/mmcblk0p5 of=$BAK/mmcblk0p5_rootfs.bin conv=fsync
# 整盘前段(含 GPT 头 + boot0),一起留一份
dd if=/dev/mmcblk0boot0 of=$BAK/boot0_bl2.bin conv=fsync
dd if=/dev/mmcblk0 bs=512 count=34 of=$BAK/mmcblk0_GPT.bin conv=fsync
# 列出备份产物核对
ls -lh $BAK/mmcblk0p*.bin $BAK/boot0_bl2.bin $BAK/mmcblk0_GPT.bin
3.3 备份 PCDN 缓存内容(可选,量很大)
# 先清掉 yfcloud 大缓存(可省几十 G 空间)
rm -rf /permanent_config/watcher_data/yfcloud-*/storage/.yfnode/cache/*
# 缓存内容打包到别处(不要写 /tmp!)
tar -czvf /mnt/mmcblk0p6/permanent_config_cache.tar.gz /permanent_config/watcher_data
# 如需还原:
# tar -xzvf /mnt/mmcblk0p6/permanent_config_cache.tar.gz -C /
3.4 还原 kernel + rootfs 到原厂(应急用)
blkid / lsblk 确认目标设备,千万不要写错分区。
# 先确认 PARTLABEL 解析对的设备
blkid -t PARTLABEL=kernel
blkid -t PARTLABEL=rootfs
# 确认无误再写回
dd if=/permanent_config/mmcblk0p4_kernel.bin of=$(blkid -t PARTLABEL=kernel -o device) conv=fsync
dd if=/permanent_config/mmcblk0p5_rootfs.bin of=$(blkid -t PARTLABEL=rootfs -o device) conv=fsync
sync
4️⃣ 刷入第三方 fip uboot
A. 插 U 盘(最稳,推荐):电脑上下载
mt7986_clx_s20p-2g-emmc-fip.bin → 拷进 U 盘 → U 盘插路由器 → cp /mnt/usb/… /permanent_config/,从第 4 步开始刷。B. 开 SSH 后用 FTP/SFTP 传入:按第 1 节
uci set dropbear… 把 SSH 开起来,然后用 WinSCP / FileZilla / Xftp 这类客户端连 192.168.8.1:22,直接把文件拖到 /permanent_config/。图形界面拖拽,比命令行省事。两种方式传完都从第 4 节的 md5 校验往下走。
本站提供 mt7986_clx_s20p-2g-emmc-fip.bin(S20P / 2G 内存 / eMMC 版),可直接从前面表格里的站内直链下载,也可以走网盘。S20L / S20M 请选对应型号的 fip(不要跨型号刷)。
- 核对文件名是否对应你的型号(S20P / S20L / S20M)和内存类型(emmc / nand)
- 用
md5sum校验下载的文件完整性 - 确认目标分区设备是 p3 (fip),不要写到别的分区
# ── 第 1 步:把电脑下好的文件传进机器 /permanent_config/ ──
# 方式 A:U 盘(推荐)
# 电脑上把 mt7986_clx_s20p-2g-emmc-fip.bin 拷进 U 盘 → 插路由器
lsblk # 看 U 盘是哪个设备(一般是 sda1)
mkdir -p /mnt/usb && mount /dev/sda1 /mnt/usb
cp /mnt/usb/mt7986_clx_s20p-2g-emmc-fip.bin /permanent_config/
umount /mnt/usb
# 方式 B:开了 SSH 之后,用 FTP/SFTP 客户端拖进去
# 主机 192.168.8.1 端口 22 协议 SFTP 账号 root 密码 tty996icu
# 目标目录 /permanent_config/
# (WinSCP / FileZilla / Xftp 均可,图形界面直接拖拽)
cd /permanent_config
# ── 第 2 步:校验(md5 必须等于 52653da34bd4ad3c6e914591b9ff7cf0)──
md5sum mt7986_clx_s20p-2g-emmc-fip.bin
ls -l mt7986_clx_s20p-2g-emmc-fip.bin # 应为 674201 字节
# ── 第 3 步:确认 fip 分区设备(应为 /dev/mmcblk0p3)──
blkid -t PARTLABEL=fip
lsblk
# ── 第 4 步:写入 fip 分区(走 PARTLABEL,防设备名漂移写错)──
dd if=mt7986_clx_s20p-2g-emmc-fip.bin \
of=$(blkid -t PARTLABEL=fip -o device) conv=fsync
sync
# ── 第 5 步:再核一次源文件 md5 ──
md5sum mt7986_clx_s20p-2g-emmc-fip.bin
4.1 另一种写法:在 uboot Web 界面里写 FIP
原机 dd 那步做不了、没做成,或者以后想换一版新 uboot,都可以直接在 uboot 的 Web 界面里刷 fip。这个界面的 UBOOT 页,上传的就是 fip 文件(也就是 uboot 本体)。
- 让路由器进 uboot:按住 reset 键上电,等 SYS 灯闪烁转常亮,电脑网线插 LAN 口
- 浏览器打开
http://192.168.1.1 - 点顶部导航的 UBOOT 页
- 选
mt7986_clx_s20p-2g-emmc-fip.bin→ 点上传 - 界面会显示进度条和 MD5,核对无误后自动写入,写完全自动重启
所以:文件必须先
md5sum 校验通过再刷,中途别断电。
什么时候用这条:① 原机系统里刷 fip 失败 / 手头没 telnet;② uboot 要升级到更新版本;③ 想恢复成官方 uboot。
5️⃣ 通过 uboot Web 界面刷固件
fip 写完重启路由器即进入 uboot。
- 网线插到 LAN1 ~ LAN5 任一口,电脑设置静态 IP
192.168.1.123/24,网关192.168.1.1 - 按住 reset 键给路由器上电
- 等 SYS 灯由闪烁变常亮即可松开 reset 键
- 浏览器打开
http://192.168.1.1进入刷机界面
进入 uboot-web 后,对应文件刷对应位置,千万不要错刷:
| uboot 选项 | 对应文件类型 | 说明 |
|---|---|---|
| 固件升级 / Firmware | 整体固件 .bin | 刷 OpenWrt / qwrt 整包 |
| GPT 分区 | *-gpt.bin | 改变分区布局(1G / 2G / emmc 全用) |
| BL2 | *-bl2.bin | 底层引导,一般不用动 |
| UBOOT | mt7986_clx_s20p-2g-emmc-fip.bin | 写 fip(uboot 本体),就是第 4.1 节那页;一般不用再刷 |
| initramfs | *-initramfs.bin | 临时启动系统,不进 flash,用于救砖/试机 |
| simg | *.simg | 整机镜像,按需使用 |
6️⃣ 重建大分区(cfdisk + mkfs)
如果刷了 GPT 大分区文件,启动后需要把后面的大分区重新建出来并格式化。我个人喜欢最简单的 cfdisk 方式:
# 进入 cfdisk
cfdisk /dev/mmcblk0
# 按界面提示:
# - 删除不要的分区(如 p6 permanent_config),或在它基础上重划
# - 新建一个大分区占满剩余空间(编号一般还是 p6)
# - 写入 (Write) → 确认 yes → 退出 (Quit)
分区情况:
- 保留原机布局时,要格式化的是 p6(permanent_config)
- 删掉 p6 后新建一个大分区,编号也还是 p6,直接 mkfs 即可
lsblk 确认分区已被卸载(MOUNTPOINTS 列为空),挂载中的分区严禁直接 mkfs,会损坏正在运行的系统。
# 1) 二次确认:分区存在 + 未被挂载
lsblk
# 2) 如果有挂载,先卸载
umount /dev/mmcblk0p6 2>/dev/null || true
# 3) 格式化(按实际分区号改 6 / 7)
mkfs.ext4 -F /dev/mmcblk0p6
# 4) 挂载到系统目录(按需改)
mkdir -p /mnt/data
mount /dev/mmcblk0p6 /mnt/data
df -h /mnt/data
# 5) 写入 /etc/fstab 实现开机自动挂载(可选)
echo "/dev/mmcblk0p6 /mnt/data ext4 defaults 0 2" >> /etc/fstab
✅ 命令安全清单(重要)
- ✅ 备份写到
/permanent_config/(p6 数据大分区),不要写/tmp(RAM 会爆) - ✅ 动手前先
/etc/init.d/dockerd stop停 Docker,再rm -rf /permanent_config/*清掉 PCDN 残余腾空间 - ✅ 写 fip / kernel / rootfs 之前 md5sum 校验文件
- ✅ 用
blkid -t PARTLABEL=xxx而非硬编码/dev/mmcblk0pN,防止设备名漂移 - ✅
dd命令带conv=fsync,完成后sync一次确保落盘 - ✅
mkfs前先lsblk+umount确认目标空闲 - ❌
rm -rf /permanent_config/*会清空整块 p6,只在确认无保留价值时执行 - ❌ 原机 wget/curl 不带 TLS,别在机器上直接
wget https://…;文件用电脑下好,走 U 盘或 FTP 传进去 - ❌
factory分区一定要备份(MAC 和 WiFi 校准信息),否则将来可能无法还原 - ❌ 没有 USB-TTL 救砖线就开始刷 fip,等于裸奔,强烈不推荐
🔗 相关资源
- 🗂️ 网盘:S20P / S20L / S20M 工具固件合集
- ⬇️ fip uboot 站内直链:mt7986_clx_s20p-2g-emmc-fip.bin(md5
52653da34bd4ad3c6e914591b9ff7cf0) - 🎬 拆机刷机视频:B 站搜索”超级路由器 S20″或站长账号
💖 打赏支持
如果这篇文章帮到了你,欢迎打赏支持
微信扫一扫,赞赏支持
可以出个刷机教程吗