前两天帮邻居调路由器,他家那台老款华三RG-OS设备夏天一到就频繁断连。拆开后盖一看,散热片积灰严重,芯片表面烫得不敢多碰——但更奇怪的是,风扇转速几乎不变,哪怕室温从26℃飙到35℃,它还是慢悠悠地转着。
温度不敏感?其实是逻辑电路没‘想明白’
很多老路由用的温控逻辑特别简单:只看主芯片一个点的温度,超过70℃才提速风扇,低于65℃就停转。这种“单点阈值+死区滞环”的设计,在实验室没问题,可放到真实环境里就容易翻车——PCB上不同位置温差能到15℃以上,电源模块早过热了,CPU那点还凉快着呢。
靠谱的逻辑电路温度控制方案,得让几个信号‘商量着办’。比如把主控芯片、PoE供电芯片、PHY芯片三处温度采样进来,再加个环境温度传感器(别小看这个,很多路由主板边缘就焊着一个DS18B20),然后用简单的组合逻辑做判断:
IF (T_cpu > 75℃ OR T_poe > 85℃) AND T_env > 30℃ THEN fan_speed = HIGH
ELSE IF (T_cpu > 60℃ AND T_poe > 70℃) THEN fan_speed = MEDIUM
ELSE fan_speed = LOW动手改?先看你的路由支不支持
OpenWrt 22.03以后的版本已经内置了thermal子系统,支持多传感器绑定策略。像MT7621平台的路由,只要在/etc/config/thermal里补几行:
config zone 'cpu'
option type 'cpu'
option sensor 'mt7621-cpu'
option trip_point '75000'
config zone 'poe'
option type 'poe'
option sensor 'mt7621-poe'
option trip_point '85000'再配合fancontrol脚本做权重计算,就能实现动态响应。实测某款斐讯K3刷OpenWrt后,高温下风扇启停次数减少60%,噪音也稳住了。
要是你手上的路由连I2C总线都没暴露出来,也别硬改。换个带铝壳+双滚珠风扇的散热模组,比折腾逻辑门电路来得实在——毕竟,再聪明的温控逻辑,也救不了被硅脂干裂封印的导热路径。