我一直在尝试调整我的笔记本电脑的风扇速度,我可以通过将20 (0x14)EC 的地址设置为介于28 (0x1C)和之间的值来在Windows中实现.41 (0x29)
(我从这个文件中得到这些数字:https://github.com/hirschmann/nbfc/blob/master/Configs/HP%20ENVY%20m6%20Sleekbook.xml)
当我在Windows中执行它时,它可以正常工作.所以我试图在Ubuntu 14.04中复制它.以下是我的尝试:
ec_sys模块通过写sudo modprobe ec_sys write_support=1这使/sys/kernel/debug/ec/ec0/io可用.事实证明,如果我省略,write_support=1我会在下一步中收到"权限被拒绝"错误.printf '\x1C' | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=20 count=1 conv=notrunc以便我可以写入EC 0x1c (28)的地址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)稍后尝试写入同一个地址时,它并未更改该值.
配置文件(我在上面提供了一个链接)说风扇速度的读取寄存器在地址上,17 (0x11)所以我希望这两个地址的内容是相同的(在Windows中就是这种情况).但是我发现该地址17与地址具有相同的值19.当我尝试写这个地址时,我无法做出任何改变.我非常困惑.
事实证明,第15个寄存器负责启用写入,因此我首先将0D写入该位置,如笔记本电脑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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1709 次 |
| 最近记录: |