|
|
本帖最后由 ukpkmkk 于 2026-4-11 22:49 编辑
起因是我在Kwrt自己编译了一版固件,发现首页不显示cpu温度,之前用H大的固件也是不显示温度,所以就问AI打了个补丁之后就可以显示了,重启后也不会失效.(AI太好用了你知道吗)
#以下是AI总结的步骤
Kwrt 路由器 (RAX3000ME) 首页 CPU 温度显示 0°C 修复方案
一、问题背景
在 Kwrt 固件中,首页仪表盘(Quickstart 插件)的 CPU 温度长期显示为 0°C。
根本原因: 闭源的后端状态获取程序无法正确识别 MT7981B 芯片的温度传感器路径,导致前端 JavaScript 接收不到数据,最终触发默认容错机制显示 0°C。
二、解决方案概述
采用「旁路获取 + 前端劫持」策略:
- 后端旁路: 利用 OpenWrt 原生 Lua 框架创建一个轻量私有 API,直接读取内核温度文件。
- 前端劫持: 修改首页 JavaScript 渲染逻辑,让它自动调用我们创建的 API 获取真实温度。
三、实施步骤(SOP)
请通过 SSH(终端)登录路由器后台,依次执行以下命令。
步骤 1:创建私有温度 API
- cat << 'EOF' > /usr/lib/lua/luci/controller/my_temp.lua
- module("luci.controller.my_temp", package.seeall)
- function index()
- entry({"api", "get_temp"}, call("action_get_temp"), nil).sysauth = false
- end
- function action_get_temp()
- local f = io.open("/sys/class/thermal/thermal_zone0/temp", "r")
- local t = f and f:read("*n") or 0
- if f then f:close() end
- luci.http.prepare_content("text/plain")
- luci.http.write(string.format("%.1f", t/1000))
- end
- EOF
复制代码
步骤 2:备份并修改前端 JS 逻辑
- # 1. 备份原文件(防止出错)
- cp /www/luci-static/quickstart/index.js /www/luci-static/quickstart/index.js.bak
- # 2. 清理缓存
- rm -rf /tmp/luci-modulecache/* /tmp/luci-indexcache/*
- # 3. 注入前端温度获取逻辑(更安全的写法)
- sed -i '/cpuTemperature/ s/||0/||(function(){try{var x=new XMLHttpRequest();x.open("GET","/cgi-bin/luci/api/get_temp",false);x.send(null);var t=parseFloat(x.responseText);return isNaN(t)?0:t}catch(e){return 0}})()/g' /www/luci-static/quickstart/index.js
复制代码
四、验证方法
1. 验证后端 API 是否正常
- curl -s [url]http://127.0.0.1/cgi-bin/luci/api/get_temp[/url]
复制代码
正常应输出类似 48.5 的温度值。
2. 验证首页温度显示
- 电脑端:按 F12 → 右键刷新按钮 → 选择「清空缓存并硬性重新加载」
- 手机端:使用无痕模式重新打开路由器首页
五、压测验证(可选)
执行以下命令可快速升高 CPU 温度,观察首页是否正常显示:
- dd if=/dev/urandom of=/dev/null bs=1M count=200
复制代码
本方案已在 RAX3000ME + Kwrt 固件上实测有效。
重启路由器后依然生效。
如升级系统或恢复出厂设置,需重新执行以上步骤。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|