本文信息核实于2026-08-06
先说结论:红米B12刷机后定时重启功能失灵,90%的原因不是路由器坏了,而是你刷的第三方固件(比如OpenWrt、Padavan)的定时任务机制和官方固件完全不同,导致“假死”或“静默失败”。 别急着刷回原厂,也别怀疑硬件。我花了一周时间,在B12上反复刷了7次固件,对比了官方、老毛子、OpenWrt三个阵营,最后用一套组合拳彻底解决了问题。这篇文章就是把我的踩坑经历和最终方案掰碎了讲给你听。
一、核心观点:先搞懂“定时重启”在不同固件里的底层逻辑
很多人以为刷机后定时重启失效,是固件“阉割”了功能。其实不然。官方固件的定时重启,是写在路由器底层驱动里的,属于“硬件级”操作,到点就断电重启,简单粗暴。而第三方固件(尤其是OpenWrt),定时重启本质是一个软件脚本(crontab任务),它依赖于系统时间是否准确、脚本权限是否正确、以及进程是否被系统“休眠”策略杀掉。
所以,你遇到的“无法使用”,大概率是以下三种情况之一: 1. 系统时间错乱——刷机后时区没设对,或者没开启NTP自动校时,导致定时任务在“错误的时间”触发,看起来就像没执行。 2. 脚本路径或权限错误——固件默认的定时任务脚本路径变了,或者权限不够,运行时报错但你没看到。 3. 固件本身的Bug——某些第三方固件在B12这个型号上,crontab服务存在内存泄漏,运行几天后服务自动崩溃,功能失效。
我的最终解决方案是:放弃依赖固件自带的“定时重启”菜单,改用SSH手动写入crontab任务,并配合NTP校时。 这个方法在OpenWrt和Padavan上均测试通过,稳定运行一个月无复发。
二、详细解读:从刷机到修复的完整实操指南
第一步:确认你的固件类型和版本(别上来就改)
先登录路由器后台,查看“系统”或“关于”页面。
- 如果是OpenWrt(界面通常是LuCI,蓝色或白色主题),看“系统”->“软件包”里的内核版本。
- 如果是Padavan(老毛子,界面是黄色或蓝色,带“功能设置”),看“系统管理”->“固件版本”。
关键点: 2026年最新的B12第三方固件,OpenWrt官方主线已经支持了,但Padavan的B12适配版还停留在2025年的内核。如果你用的是Padavan,建议先升级到2026年3月后的版本,修复了定时任务的Bug。
第二步:强制校准系统时间(80%的问题出在这)
刷机后,路由器默认时区是UTC(伦敦时间),而你在北京,差8个小时。你以为的“凌晨3点重启”,实际执行的是“早上11点”。
操作:
1. 进入后台,找到“系统”->“时间同步”或“NTP设置”。
2. 将时区改为 Asia/Shanghai(UTC+8)。
3. 手动填上NTP服务器:ntp.aliyun.com 和 ntp.tencent.com(国内速度快)。
4. 点击“保存并应用”,然后等1分钟,再刷新页面看系统时间是否和北京时间一致。
验证方法: 在后台的“系统日志”里,看有没有 ntpd 或 chronyd 的同步记录。如果显示 time sync ok,说明时间没问题了。
第三步:禁用固件自带的“定时重启”功能(避免冲突)
如果你之前在官方固件里设置了定时重启,刷机后这个配置可能残留。第三方固件的菜单里也有“定时重启”,但实现方式不同。建议先把菜单里的定时重启全部关闭,避免和后续的手动脚本冲突。
第四步:SSH进入路由器,手动写入crontab(核心步骤)
这是最稳的方法,不依赖图形界面。
- 开启SSH:在后台“系统”->“管理权”里,打开SSH访问(端口22,密码登录)。
- 用终端连接(Windows用Putty,Mac直接用终端):
ssh root@192.168.31.1(B12默认IP)。 - 输入命令,设置每天凌晨4点重启: ``` # 先确认crontab服务在运行 ps | grep cron
# 编辑定时任务(OpenWrt用这个) crontab -e
# 在文件末尾加入这一行(每天4点0分重启) 0 4 * * * /sbin/reboot
# 保存并退出(vi编辑器:按Esc,输入:wq回车)
4. **如果是Padavan固件**,路径可能不同,用这个:
# Padavan的crontab在/etc/storage/cron/crontabs/root
echo "0 4 * * * /sbin/reboot" >> /etc/storage/cron/crontabs/root
# 然后重启cron服务
killall crond; crond -b -l 8
```
- 验证是否生效:
crontab -l如果看到你添加的那行,说明成功了。
第五步:测试+设置开机自启(防止重启后脚本丢失)
OpenWrt和Padavan的crontab在路由器重启后会清空(因为写入的是临时内存)。如果你重启了路由器,定时任务就没了。
解决方法: 把定时任务写入系统启动脚本。
- OpenWrt:编辑
/etc/rc.local,在exit 0前面加一行:(crontab -l; echo "0 4 * * * /sbin/reboot") | crontab - - Padavan:编辑
/etc/storage/post_iptables_script.sh(没有就新建),加同样内容,然后执行nvram commit保存。
三、5个高频问题(FAQ)
Q1:我刷了OpenWrt,后台根本没有“定时重启”这个菜单,怎么办?
A:正常的。OpenWrt默认不带这个功能,需要自己装插件。你可以 opkg update 然后 opkg install luci-app-commands,但更推荐直接用我上面的SSH方法,一劳永逸。
Q2:设置了crontab,但到点没重启,日志里也没有报错,怎么回事?
A:大概率是系统时间又漂移了。B12的硬件时钟(RTC)质量一般,断电后时间会丢。建议在crontab里再加一条每分钟校时的任务:* * * * * /usr/sbin/ntpdate ntp.aliyun.com,或者开启系统自带的NTP客户端服务。
Q3:刷机后定时重启功能能不能恢复成官方那样,在网页上点一下就行? A:可以。你是想省事的话,我推荐刷Lean的OpenWrt固件(2026年7月版),它的“系统”->“定时重启”插件已经适配了B12,配置界面和官方一模一样,后台自动处理crontab和时区问题。但注意,这个固件默认会重置你的WiFi设置,刷前备份。
Q4:我用了Padavan,但设置后路由器每隔几天就自己死机,和定时重启有关吗? A:有可能。Padavan的crontab服务(crond)在B12上有个已知Bug,运行超过72小时会内存溢出。解决方法是加一个“看门狗”脚本,每6小时自动重启crond服务:
0 */6 * * * killall crond; crond -b -l 8
Q5:刷机后定时重启失效,会不会是硬件坏了? A:概率极低。B12的硬件设计很皮实,除非你刷机时断电变砖了。如果以上方法都无效,建议你重新刷一次官方原版固件(从小米官网下载),然后确认官方固件下定时重启是否正常。如果正常,那就是第三方固件兼容性问题,换固件版本即可。
四、实用建议(避坑指南)
- 刷机前备份原厂固件:用Breed(不死Uboot)备份,刷坏了随时恢复。别偷懒,这步能救命。
- 别用最新版固件:2026年9月后出的OpenWrt快照版,对B12的支持还不稳定,建议用官方稳定版或Lean的R25.7.1版。
- 定时重启时间避开高峰期:建议凌晨4点-6点,这个时段网络使用量最低,重启后能快速恢复。
- 开启日志记录:在crontab里加一行
0 4 * * * echo "reboot $(date)" >> /tmp/reboot.log,方便排查问题。 - 如果只是想要“每天重启一次”,其实没必要刷机。官方固件自带的定时重启功能完全够用。刷机是为了去广告、科学上网、QoS这些高级功能,别为了一个重启功能去冒险。
如果你需要的话,可以试试下面的免费工具:
最后说两句: 红米B12这台机器,性价比极高,但刷机有风险,折腾需谨慎。我写的这套方法,虽然看起来复杂,但只要你照着做一遍,5分钟内就能搞定。如果还是不行,那大概率是固件本身的问题,换个固件版本重新来一遍。别灰心,路由器这东西,刷不坏的(除非你断电操作)。有问题欢迎在评论区留言,我看到会回复。