最近在调试一个设备,非常的吵,决定把风扇转速调低,降低噪音。
这篇文章可能不具有通用性,仅自己记录,用作以后参考。
风扇的转速通过pwm调节,因此先找下有没有pwm模块:
ls /sys/class/hwmon/hwmon*/
对应路径下找不到pwm的话,说明模块没有加载,需要编译模块,加载后才可以
到 https://www.kernel.org/ 下载内核源码
windows下通过ssh连接运行linux的设备,再通过 rz 将下载的内核镜像拷贝到linux下的 /usr/src 目录
解压内核源码,通过make ARCH=x86 menuconfig 配置nct6775这个模块(和风扇有关的),再通过source mk.sh编译生成内核镜像ko模块(mk.sh会帮我们将内核镜像关联boot,这样机子在启动的时候就能找到我们最新编译的内核镜像了)
注意:在这个过程中会遇到很多很多的开发环境缺失,需要一个一个百度,yum缺失的开发环境。
重启机子,能看到自己编译出的内核版本,运行这个,然后通加载模块
insmod /usr/src/linux-4.16.12/drivers/usb/serial/nct6775.ko
不成功,提示符号表缺失,因为这个模块依赖另一个模块,因此:
modinfo /usr/src/linux-4.16.12/drivers/hwmon/nct6775.ko | grep depend
显示:
depends: hwmon-vid
找到依赖的模块后,执行:
modprobe hwmon-vid
再次加载模块:
insmod /usr/src/linux-4.16.12/drivers/usb/serial/nct6775.ko
然后查看是否有pwm了:
ls /sys/class/hwmon/hwmon*/
有了之后,调整pwm:
echo 255 > /sys/class/hwmon/hwmon1/pwm1