gpt4 book ai didi

linux - 在 Ubuntu 14.04 中写入嵌入式 Controller 寄存器

转载 作者:IT王子 更新时间:2023-10-29 01:08:32 24 4
gpt4 key购买 nike

我一直在尝试调整笔记本电脑的风扇速度,我可以在 Windows 中通过将 EC 的地址 20 (0x14) 设置为 28 (0x1C) 之间的值来实现)41 (0x29)

(我从这个文件中得出这些数字:https://github.com/hirschmann/nbfc/blob/master/Configs/HP%20ENVY%20m6%20Sleekbook.xml)

当我在 Windows 中执行此操作时,它可以正常工作。所以我试图在 Ubuntu 14.04 中复制它。以下是我的尝试:

  1. 首先,我通过编写 sudo modprobe ec_sys write_support=1 来探测 ec_sys 模块,这使得 /sys/kernel/debug/ec/ec0/io 可用。事实证明,如果我省略 write_support=1,我会在下一步中收到“权限被拒绝”错误。
  2. 我尝试运行 printf '\x1C' | sudo dd of="/sys/kernel/debug/ec/ec0/io"bs=1 seek=20 count=1 conv=notrunc 这样我就可以写 0x1c (28)到 EC 的地址 20 (0x14) 并调整风扇速度。
  3. 我通过键入 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 具有相同的值。当我试图在那个地址上写字时,我无法进行任何更改。我 super 困惑。

最佳答案

原来第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

关于linux - 在 Ubuntu 14.04 中写入嵌入式 Controller 寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29440784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com