zoukankan      html  css  js  c++  java
  • Thinkpad T4x 风扇转速档位控制

    Thinkpad T4x的风扇转速在一般的情况下由BIOS负责自动调整,其实我们也可以通过读写嵌入式控制器的0x62、0x66号端口实现对其的手动控制,这可以用来解决某些BIOS不尽如人意所导致的问题,如抑制转动杂音、预热风扇电机等。*自编程控制风扇转速具有一定危险性,可能损坏硬件,请谨慎使用!*

    [常数定义]
    #define EC_DATAPORT    0x62 //控制端口号
    #define EC_CTRLPORT    0x66 //数据端口号
    #define EC_CMD_WRITE   0x81 //写指令字节
    #define TP_FAN_CONTRL  0x2F //写指令参数1,设置风扇转速档位
    #define TP_FAN_LEVELS     n //写指令参数2,风扇档位的具体取值

    [设置步骤]
    1.  轮询控制端口,确保输入、输出缓冲区为空
    2*. 向控制端口写入一个写指令字节,其值为EC_CMD_WRITE
    3.  轮询控制端口,直到输入缓冲区为空,确保写指令字节被取走
    4*. 向数据端口写入一个字节,该字节为写指令的第一个参数,其值为TP_FAN_CONTRL
    5.  轮询控制端口,直到输入缓冲区为空,确保第一个参数被取走
    6*. 向数据端口写入一个字节,该字节为写指令的第二个参数,其值为TP_FAN_LEVELS
    7.  轮询控制端口,直到输入缓冲区为空,确保第二个参数被取走
    8.  设置完毕,把耳朵趴在键盘上听听风扇的声音吧!

    [附加说明A] 关于TP_FAN_LEVELS的取值
    a. 从低速档到高速档,通常取值为0x0-0x7,0为风扇停转
    b. 特殊值0x80表示由Thinkpad BIOS自动调节转速,推荐值
    c. 特殊值0x40表示风扇超高速运转,某些机型不支持,可能会损坏风扇,慎用
    d. 其他取值产生的结果要么没定义,要么尚未确定,慎用

    [附加说明B] 检验输入或输出缓冲区为空的方式
    #define EC_STAT_OBF 0x01   //输出缓冲区满标志
    #define EC_STAT_IBF 0x02   //输入缓冲区满标志

    从控制端口中读取出一个DWORD,将其低位字节分别与上述标志位相与,若为0,则对应缓冲区为空,反之则缓冲区满。

  • 相关阅读:
    [转载]qemu-kvm安装配置
    Hadoop通过c语言API访问hdfs
    hadoop和hdfs环境搭建
    OpenCV installation for Ubuntu 12.04
    homework-01
    linux命令2
    压缩tar
    anaconda 安装opencv
    anconda安装第三方库
    开源代码
  • 原文地址:https://www.cnblogs.com/neoragex2002/p/291719.html
Copyright © 2011-2022 走看看