istoreos / istoreos

提供一个人人会用的的路由、NAS系统 (目前活跃的分支是 istoreos-22.03)
https://www.istoreos.com
Other
4.81k stars 501 forks source link

风扇设置的“风扇停止温度”不起作用,低于“风扇启动温度”就停止了 #1162

Closed bizshow closed 8 months ago

bizshow commented 10 months ago

反馈bug/问题模板,提建议请删除

1.关于你要提交的问题

为避免重复issue,请先搜索issue,确认没有类似issue再提交新issue; 注意搜索时包括已关闭的issue(删掉搜索框的的“is:open”条件);

Q:是否用关键词搜索了issue? (使用 "x" 选择)

2. 详细叙述

(1) 具体问题

A:风扇控制中,设定启动温度55℃,停止温度35摄氏度。当当前温度超过55℃时,风扇开始转动,但是风扇转了几秒后温度降到54.5℃,风扇就停止了,并没有按照设置的降到35℃才停止,导致风扇不停的启停,每次启动转两三秒就停了,停了两三秒又启动了,温度一直在55℃上下徘徊。

(2) 路由器型号和固件版本

A: 主机名 iStoreOS 型号 FriendlyElec NanoPi R2S 架构 ARMv8 Processor rev 4 目标平台 rockchip/armv8 固件版本 iStoreOS 22.03.5 2023102711 / LuCI istoreos-22.03 branch git-23.271.10849-b445bc4

(3) 详细日志和/或截图

A: IMG_8423

bizshow commented 10 months ago

我把停止温度设为1℃,问题依然会出现,应该不是温度波动到停止温度以下所以才停止的。看起来像是该值没有被使用。

另外,我把温度设置的复选框去掉,反复启停的问题还是会出现。

但我勾上复选框,但把启动温度改成最大值59,由于温度一直没有超过59℃,风扇就不会启动了。说明该值有被用到。

bizshow commented 10 months ago

由于我在R2S上用docker跑了一个homeassistant,CPU占用一直都很高,通过NetData观察,不管是强制让风扇工作,或者强制让风扇不工作,温度一直在58℃到42℃之间频繁跳动,不知道是不是因为温度变化跨度太大,所以导致风扇也一直启启停停的。

还是说有可能这个温度数据可能是假的,实际上是通过CPU占用给推算出来的?

CPU和负载

温度

jjm2473 commented 10 months ago

可能r2s不是真的pwm风扇,所以调低风速就直接停了

bizshow commented 10 months ago

可能r2s不是真的pwm风扇,所以调低风速就直接停了

其实我也不是想要他pwm,甚至都不一定要能调速,但是我希望是当高于阈值后启动风扇,等温度降下来,低于阈值后再停止,避免在某个临界值一直反反复复的启停,听起来就是呜呜两三秒,安静个几秒钟,又呜呜几秒钟,这种就很难受

jjm2473 commented 10 months ago

r2s也没自带风扇啊,我怎么知道哪些风扇需要多少pwm才会转呢,如果需要改pwm值,那就需要提供风扇来实际测试才行。目前的pwm取值是从r4s抄的 https://github.com/friendlyarm/kernel-rockchip/blob/f0bd01d835292bc86b7b1501df86071c1ac70576/arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dts#L29

jjm2473 commented 10 months ago

还是说有可能这个温度数据可能是假的,实际上是通过CPU占用给推算出来的?

CPU的温度本身就会跳动,因为传感器在里面,不是外面,CPU使用率高的时候,频率会变高,温度当然也会升高。

bizshow commented 10 months ago

r2s也没自带风扇啊,我怎么知道哪些风扇需要多少pwm才会转呢,如果需要改pwm值,那就需要提供风扇来实际测试才行。目前的pwm取值是从r4s抄的 https://github.com/friendlyarm/kernel-rockchip/blob/f0bd01d835292bc86b7b1501df86071c1ac70576/arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dts#L29

rs2有个fan口,2pin的,估计是不支持pwm,目前我只能先把启动的阈值设高一点,好在现在是冬天,也不会出现过热降频的情况。

不过luci-app-fan貌似最高只能设置到59

jjm2473 commented 9 months ago

因为luci-app-fan只能配置第一级风扇的启动温度,这个在界面上就有提示。如果第二级风扇是60度,那第一级就只能60以下。

jjm2473 commented 9 months ago

如果你熟悉vim。可以使用dtc命令把/boot/rockchip.dtb 反编译,修改以后再用dtc编译回去,就可以测试参数了。

dtc /boot/rockchip.dtb> /boot/rockchip.dts
vim /boot/rockchip.dts
dtc /boot/rockchip.dts > /boot/rockchip.dtb

如果没有dtc命令,可以用opkg安装。

需要关注的是pwm-fan附近的代码

jjm2473 commented 8 months ago

已修复此问题,原因是内核默认不支持,现在内核打补丁支持了。