如何将温度传感器与emc2103风扇绑定



如何在Linux中将外部温度传感器与风扇emc2103绑定。emc2103有自己的温度传感器,用于控制风扇速度。但我想根据CPU温度来控制风扇速度。如何用这个emc2103风扇构建这个CPU温度传感器

这完全取决于BIOS如何配置emc2103芯片。

查看emc2103内核模块源代码,应该可以通过写入/sys/class/hwmon/hwmonX中的文件fan1_target来修改风扇速度,其中X是分配给模块的数字。它是指向i2c(在我的示例中为hwmon2(的符号链接。

ll /sys/class/hwmon/
total 0
lrwxrwxrwx 1 root root 0 Apr  5 16:20 hwmon0 -> ../../devices/virtual/thermal/thermal_zone0/hwmon0
lrwxrwxrwx 1 root root 0 Apr  5 16:20 hwmon1 -> ../../devices/pci0000:00/0000:00:13.0/0000:01:00.0/hwmon/hwmon1
lrwxrwxrwx 1 root root 0 Apr  5 16:20 hwmon2 -> ../../devices/pci0000:00/0000:00:1f.1/i2c-1/1-002e/hwmon/hwmon2
lrwxrwxrwx 1 root root 0 Apr  5 16:20 hwmon3 -> ../../devices/pci0000

但是,至少在我的Odroid H2机器上,emc2103芯片由BIOS控制,写入fan1_target文件没有任何影响。如果我在BIOS中禁用风扇控制,它可能会切断风扇的电源,因为我无法使其运行。

但由于emc2103芯片是i2c设备,因此可以通过i2cgeti2cset命令(Debian中的i2c-tools包(手动配置。首先需要加载i2c_dev内核模块,然后确定芯片位于哪条i2c总线上(可以使用i2cdetect命令(。emc2103芯片位于地址0x2E。在Odroid H2的情况下,它与DRAM SPD存储芯片(dmesg|grep SPD(在同一条总线上,但每次启动时都会分配不同的总线编号。

您可以查看emc2103数据表(以及内核模块源代码(,查看要读取和写入的寄存器。

同样,对于Odroid H2,禁用BIOS启用的查找表就足够了,然后我可以通过写入fan1_target来控制风扇速度。要禁用它,您需要使用以下命令将值0x00写入寄存器0x50:

i2cset -y bus 0x2E 0x50 0x00

其中总线是设备所在的i2c总线编号。加载emc2103内核模块后,此操作将失败。所以要么卸载它,要么添加-f参数来强制它

在我的情况下,我希望风扇基于HDD温度运行,所以我将尝试使用LUT表作为BIOS的设置,但添加Temp3的阈值,我将其设置为"0";"推动温度";,其可以使用i2c来设置。这样,我就可以自动评估板温度(由芯片本身测量(和HDD温度值。

另一种可能性是使用类似hddfancontrol或fan2go的东西来控制使用hwmon/sys文件的风扇速度。

相关内容

  • 没有找到相关文章

最新更新