我一直在试图调整我的笔记本电脑的风扇速度,我可以通过将EC的地址20 (0x14)
设置为28 (0x1C)
和41 (0x29)
之间的值来实现,
(我从这个文件中得到这些数字: https : //github.com/hirschmann/nbfc/blob/master/Configs/HP%20ENVY%20m6%20Sleekbook.xml )
当我在Windows中这样做,它正常工作。 所以我试图在Ubuntu 14.04中复制它。 以下是我试过的:
sudo modprobe ec_sys write_support=1
来探测ec_sys
模块,它使得/sys/kernel/debug/ec/ec0/io
可用。 事实certificate,如果我省略write_support=1
我会在下一步收到“权限被拒绝”的错误。 printf '\x1C' | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=20 count=1 conv=notrunc
printf '\x1C' | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=20 count=1 conv=notrunc
这样我就可以将0x1c (28)
写入EC的地址20 (0x14)
调整风扇转速。 我检查是否通过键入sudo od -t x1 /sys/kernel/debug/ec/ec0/io
更新上述寄存器,然后输出:
0000000 00 00 00 00 00 01 50 04 00 00 ff 10 00 33 13 05 0000020 00 19 24 19 1c 00 ff ff ff ff ff ff 00 00 00 00 ...
现在看起来我可以更新寄存器,但是不会影响风扇速度。 此外,当我试图写41 (0x29)
到相同的地址后,它没有改变的价值。
configuration文件(我提供了一个链接上面)说风扇速度的读寄存器是在地址17 (0x11)
所以我期望这两个地址的内容是相同的视窗)。 但是我观察到地址17
与地址19
具有相同的值。 当我试图写下这个地址时,我无法做出任何改变。 我超级困惑。
事实证明,第15个寄存器负责启用写入,所以我先写0D到那个位置,就像Notebook FanControl那样,然后开始控制风扇速度。 下面是完整的代码,如果有人感兴趣(它可以在HP Envy m6系列笔记本电脑上工作,也应该先安装lm-sensors)
sudo modprobe -r ec_sys sudo modprobe ec_sys write_support=1 echo -n -e "\015" | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=15 count=1 conv=notrunc 2> /dev/null echo "Fan control enabled" while [ 1 ]; do $(if [ "0$(bc -q <<< $(echo "`sensors -A -u | grep "temp1_input" --max-count=2 | tail -n1 | cut -d 'n' -f 2 | tr -cd '0123456789\.'`-0 > 54");)" -eq 1 ]; then echo -n -e "\051"; else echo -n -e "\031"; fi | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=20 count=1 conv=notrunc 2> /dev/null); sleep 1; done