最近一直折腾康耐信N100 ,但是风扇凉得很快,所以直接在网上买了一个……
但是pve上显示风扇转速出了问题,一直不怎么显示,后面找到这个仓库
shauno8/it87
用法:
cd /usr/src/
git clone https://github.com/shauno8/it87.git
cd it87
sh autorun_install.sh
reboot
如果遇到报错,可以尝试执行
apt install pve-headers-$(uname -r) gcc make
最后效果如下

但是由于这款 N100的风扇是主板风扇,并非CPU风扇,说人话就是,CPU温度很高,但是主板温度不高,风扇转速也不高
那就尝试自己解决一下吧
#!/bin/bash
LOG_FILE="/var/log/fan-control.log"
CONFIG_FILE="/etc/fan-control.conf"
FAN_PROFILE="default"
find_fan_controls(){ PWM_PATH=$(find /sys/class/hwmon/*/pwm2 2>/dev/null | head -1);FAN_PATH=$(find /sys/class/hwmon/*/fan2_input 2>/dev/null | head -1);if [ -z "$PWM_PATH" ];then PWM_PATH=$(find /sys/devices -name "pwm*" | grep -i it86 | head -1);fi;if [ -z "$FAN_PATH" ];then FAN_PATH=$(find /sys/devices -name "fan*_input" | grep -i it86 | head -1);fi;}
log(){ echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE";if [ "$2" == "show" ];then echo "$1";fi;}
get_fan_rpm(){ if [ -f "$FAN_PATH" ];then cat "$FAN_PATH" 2>/dev/null || echo "N/A";else echo "N/A";fi;}
get_pwm(){ if [ -f "$PWM_PATH" ];then cat "$PWM_PATH" 2>/dev/null || echo "N/A";else echo "N/A";fi;}
get_temperature(){ for DIR in /sys/class/hwmon/hwmon*;do if [ "$(cat $DIR/name 2>/dev/null)" = "coretemp" ];then TEMP=$(cat $DIR/temp1_input 2>/dev/null || echo 0);echo $((TEMP/1000));return;fi;done;echo "N/A";}
set_fan_speed(){ PWM_VALUE=$1;if [ "$PWM_VALUE" -lt 0 ];then PWM_VALUE=0;elif [ "$PWM_VALUE" -gt 255 ];then PWM_VALUE=255;fi;OLD_PWM=$(get_pwm);OLD_RPM=$(get_fan_rpm);PWM_ENABLE=$(dirname "$PWM_PATH")/pwm2_enable;if [ -f "$PWM_ENABLE" ];then echo 1 > "$PWM_ENABLE" 2>/dev/null;fi;if [ -f "$PWM_PATH" ];then echo "$PWM_VALUE" > "$PWM_PATH" 2>/dev/null;log "设置PWM值: $OLD_PWM -> $PWM_VALUE";sleep 1;NEW_RPM=$(get_fan_rpm);log "风扇转速变化: $OLD_RPM RPM -> $NEW_RPM RPM" "show";else log "错误: 找不到PWM控制路径" "show";exit 1;fi;}
save_config(){ echo "# 风扇控制配置文件" > "$CONFIG_FILE";echo "DEFAULT_PROFILE=\"$FAN_PROFILE\"" >> "$CONFIG_FILE";log "保存了配置: $FAN_PROFILE" "show";}
load_config(){ if [ -f "$CONFIG_FILE" ];then source "$CONFIG_FILE";FAN_PROFILE="$DEFAULT_PROFILE";log "加载配置: $FAN_PROFILE";fi;}
show_help(){ echo "N100风扇控制工具 - 精细化风扇控制";echo "用法: $(basename $0) [参数]";echo "";echo "参数:";echo " 静音模式:";echo " silent-min - 极度安静模式 (PWM 60, ~25%风速)";echo " silent - 标准安静模式 (PWM 80, ~30%风速)";echo "";echo " 日常模式:";echo " quiet - 轻量使用模式 (PWM 100, ~40%风速)";echo " normal - 标准使用模式 (PWM 120, ~45%风速)";echo "";echo " 性能模式:";echo " performance - 一般性能模式 (PWM 150, ~60%风速)";echo " gaming - 游戏/高性能 (PWM 180, ~70%风速)";echo "";echo " 冷却模式:";echo " cooling - 高冷却模式 (PWM 200, ~80%风速)";echo " max-cooling - 最大冷却模式 (PWM 230, ~90%风速)";echo " max - 极限冷却模式 (PWM 255, 100%风速)";echo "";echo " 其他功能:";echo " <数值> - 直接设置PWM值 (0-255)";echo " auto - 启用自动控制模式";echo " status - 显示当前状态";echo " save - 保存当前模式为默认启动模式";echo " temp - 显示当前温度";echo "";echo "例如:";echo " fan-control.sh performance # 设置为性能模式";echo " fan-control.sh 175 # 设置PWM为175";echo " fan-control.sh status # 查看当前状态";echo " fan-control.sh save # 保存当前设置为默认值";}
main(){ find_fan_controls;if [ -z "$PWM_PATH" ];then echo "错误: 找不到风扇PWM控制接口";exit 1;fi;load_config;if [ -z "$1" ] || [ "$1" == "help" ] || [ "$1" == "--help" ] || [ "$1" == "-h" ];then show_help;exit 0;fi;case "$1" in "silent-min") set_fan_speed 60;FAN_PROFILE="silent-min";echo "已设置为极度安静模式";; "silent") set_fan_speed 80;FAN_PROFILE="silent";echo "已设置为标准安静模式";; "quiet") set_fan_speed 100;FAN_PROFILE="quiet";echo "已设置为轻量使用模式";; "normal") set_fan_speed 120;FAN_PROFILE="normal";echo "已设置为标准使用模式";; "performance") set_fan_speed 150;FAN_PROFILE="performance";echo "已设置为一般性能模式";; "gaming") set_fan_speed 180;FAN_PROFILE="gaming";echo "已设置为游戏/高性能模式";; "cooling") set_fan_speed 200;FAN_PROFILE="cooling";echo "已设置为高冷却模式";; "max-cooling") set_fan_speed 230;FAN_PROFILE="max-cooling";echo "已设置为最大冷却模式";; "max") set_fan_speed 255;FAN_PROFILE="max";echo "已设置为极限冷却模式";; "auto") PWM_ENABLE=$(dirname "$PWM_PATH")/pwm2_enable;if [ -f "$PWM_ENABLE" ];then echo 5 > "$PWM_ENABLE" 2>/dev/null || echo 2 > "$PWM_ENABLE" 2>/dev/null;FAN_PROFILE="auto";echo "已设置为自动控制模式";else echo "错误: 找不到PWM控制模式文件";exit 1;fi;; "status") TEMP=$(get_temperature);RPM=$(get_fan_rpm);PWM=$(get_pwm);echo "当前状态:";echo " 温度: ${TEMP}°C";echo " 风扇转速: $RPM RPM";echo " PWM值: $PWM";echo " 当前配置模式: $FAN_PROFILE";; "save") save_config;echo "已将当前模式($FAN_PROFILE)保存为默认启动设置";; "temp") TEMP=$(get_temperature);echo "当前CPU温度: ${TEMP}°C";; *) if [[ "$1" =~ ^[0-9]+$ ]];then if [ "$1" -ge 0 ] && [ "$1" -le 255 ];then set_fan_speed "$1";FAN_PROFILE="custom-$1";echo "已设置PWM值: $1";else echo "错误: PWM值必须在0-255范围内";exit 1;fi;else echo "错误: 无效的参数: $1";show_help;exit 1;fi;; esac;}
main "$@"
将脚本保存到/usr/local/bin/fan-control.sh
赋予执行权限
chmod +x /usr/local/bin/fan-control.sh
创建命令链接
ln -sf /usr/local/bin/fan-control.sh /usr/local/bin/fan
创建开机自启服务
cat > /etc/systemd/system/fan-control.service << 'EOF'
[Unit]
Description=N100 Fan Control Service
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/fan-control.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
启用服务
systemctl daemon-reload
systemctl enable fan-control.service
使用示例
# 查看帮助
fan
# 设置为安静模式
fan silent
# 设置为性能模式
fan performance
# 设置为游戏模式
fan gaming
# 自定义PWM值
fan 165
# 查看当前状态
fan status
# 将当前设置保存为默认启动设置
fan save
场景解释
- silent-min (PWM 60): 深夜/睡眠模式,只有基本系统运行
- silent (PWM 80): 安静环境下的基本办公/网页浏览
- quiet (PWM 100): 日常办公、媒体播放
- normal (PWM 120): 多任务工作、视频会议
- performance (PWM 150): 轻度开发工作、虚拟机运行
- gaming (PWM 180): 游戏、视频编辑
- cooling (PWM 200): 密集计算任务、长时间高负载
- max-cooling (PWM 230): 极端温度环境、持续高负载工作
- max (PWM 255): 最大冷却效果,不考虑噪音
设置默认模式
# 先设置为想要的模式
fan-control.sh quiet
# 保存为默认值
fan-control.sh save
设置默认模式 会在/etc/fan-control.conf
写入一行配置文件,不要删除
