尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

thinkfan配置教程第2篇:YAML配置三大板块sensors、fans、levels逐项精讲

thinkfan配置教程第2篇:YAML配置三大板块sensors、fans、levels逐项精讲 thinkfan配置教程第2篇YAML配置三大板块sensors、fans、levels逐项精讲【免费下载链接】thinkfanThe minimalist fan control program项目地址: https://gitcode.com/gh_mirrors/th/thinkfanthinkfan 是一款极简轻量级的 Linux 风扇控制程序其新版 YAML 配置文件由sensors温度传感器、fans风扇驱动、levels转速映射三大板块组成。本文逐一精讲每个板块的可用关键词与写法帮助新手快速完成一份正确且可维护的 thinkfan 配置。一、配置文件整体结构thinkfan YAML 的三大板块一份合法的 thinkfan YAML 配置只允许出现这三个顶级键缺少任何一个都会直接报错退出板块作用核心问题sensors:温度从哪里读监控哪些温度传感器fans:风扇怎么控制用哪个 PWM / 风扇接口levels:温度如何映射到转速什么温度下转到多快三个板块在解析代码中分别对应 src/yamlconfig.cpp 里的kw_sensors、kw_fans、kw_levels三个关键词常量定义于 src/yamlconfig.h。完整官方示例见 examples/thinkfan.yaml它把每种写法都列了出来是本文最好的对照材料。动手前先找到你的传感器修改配置前建议先运行以下命令摸清楚机器上有哪些温度和风扇节点sensors # 列出所有温度芯片 ls /sys/class/hwmon/ # 列出 hwmon 接口编号记住传感器的顺序非常重要——后面levels详细模式里的温度上限/下限数组必须与sensors板块中传感器的书写顺序一一对应见 examples/thinkfan.yaml 第 21 行附近的注释。二、sensors 板块逐项精讲温度来源sensors:下面是一个 YAML 序列列表每项描述一个温度来源。thinkfan 支持五种驱动可任意组合其中tpacpi最多出现一次。2.1 hwmon最常用的 Linux 通用方式hwmon 是 Linux 内核的标准硬件监控接口三种路径写法写法 1直接指向单个温度文件sensors: - hwmon: /sys/class/hwmon/hwmon0/temp1_input缺点hwmon0这个编号取决于驱动加载顺序重启后可能变化。写法 2指向驱动目录用indices挑选- hwmon: /sys/devices/pci0000:00/0000:00:03.1/0000:27:00.0/hwmon indices: [1, 2, 5, 6] # 使用 temp1/temp2/temp5/temp6 correction: [0, 0, 0, -5] # 给 temp6 读数减 5 度路径稳定不受加载顺序影响但要求该目录只含一个 hwmon 驱动。写法 3指向基础目录用name按名称查找推荐- hwmon: /sys/class/hwmon name: k10temp indices: [1]thinkfan 会在该路径下寻找name文件内容为k10temp的驱动这是对抗加载顺序漂移最稳健的写法。针对 NVMe 设备还可加model:关键词按 device/model 中的型号精确区分多块 SSD。2.2 chip通过 lm-sensors 读取传统 ThinkPad 首选编译时启用USE_LM_SENSORS后可用。先在终端跑一次sensors把输出抄过来即可- chip: thinkpad-isa-0000 ids: [ CPU, GPU 1, temp3, temp4, temp5 ]chip:填sensors输出中每个块上方的芯片名ids:填每行冒号前的特征名feature ID顺序同样重要。这是官方文档推荐的传感器写法见 src/thinkfan.conf.5.cmake。2.3 tpacpiThinkPad 老接口- tpacpi: /proc/acpi/ibm/thermal indices: [1, 2, 3, 4] # 可选省略则读取全部温度由thinkpad_acpi内核模块提供老机型上可能暴露 8~16 个温度点建议用indices精选。注意tpacpi条目整个文件最多只能出现一次。2.4 nvml 与 atasmartNVIDIA 显卡与硬盘温度- nvml: 27:00.0 # NVIDIA 专有驱动PCI 总线号lspci 可查 - atasmart: /dev/sda # 需编译时开启 USE_ATASMARTCPU 开销大nvml:只支持专有驱动开源 nouveau 驱动应改走 hwmonatasmart:默认关闭CMakeLists.txt 中USE_ATASMART默认 OFF且官方明确提示其 CPU 开销不合理——Linux 5.6 起内核已可通过 hwmon 直接上报硬盘温度优先使用那种方式。2.5 三个通用修饰词correction / optional / max_errors任何类型的传感器条目都可以附加这三个可选键- hwmon: /sys/class/block/sdc/device/hwmon indices: [1] optional: true # 设备不存在时不退出继续轮询等待 correction: [-3] # 对该传感器读数统一减 3 度 max_errors: 3 # 失败后最多重试 3 次关键词默认值用途correction0温度补偿值长度须与indices一致未写indices时必须恰好 1 个值optionalfalse可移动设备如外接硬盘标记缺失时 thinkfan 不退出、每个循环自动重试max_errors0初始化/读写失败时允许的重试次数注意optional: true必须搭配indices这样 thinkfan 才知道预期有多少个温度点校验逻辑见 src/yamlconfig.cpp 第 119 行附近。三、fans 板块找到可控的风扇接口自 2.0 版起 thinkfan 支持多风扇fans:下可写任意多个hwmon风扇条目但tpacpi仍最多一个thinkpad_acpi 模块只支持单风扇。fans: - hwmon: /sys/class/hwmon/hwmon0/pwm1 # 写法1直接指向 PWM 文件其余写法与 sensors 完全对称- hwmon: /sys/class/graphics/fb0/device/hwmon indices: [1] # 使用 pwm1 - hwmon: /sys/class/hwmon name: amdgpu # 按驱动名查找最稳健 indices: [1] - tpacpi: /proc/acpi/ibm/fan # ThinkPad 专用风扇条目同样支持optional:、max_errors:修饰并且可以自带一个levels:子节为该风扇单独定义转速曲线——这是多风扇各自独立调速的关键见下文 4.3 节。四、levels 板块温度到转速的映射规则levels:是 thinkfan 的大脑温度低于下限时降一级达到上限时升一级。它有两种写法互斥选用其一。4.1 简单模式一行三元组只比较所有传感器中最高的那个温度其余传感器被忽略。适合笔记本这类只关心 CPU 温度的小系统levels: - [0, 0, 50] # ≤50°C 停转速度 0 - [level auto, 45, 75] # 45~75°C 交还固件自动 - [level disengaged, 70, 255]每行是[转速, 下限, 上限]。相邻档位之间下限要与上一档上限重叠形成迟滞区间防止在边界反复横跳。4.2 详细模式每个传感器单独设限CPU/GPU 耐 80°C 以上硬盘 50°C 就要小心——这种热容忍度不一的系统应该用详细模式给每个传感器单独画线levels: - speed: 0 upper_limit: [50, 50, 50] - speed: 100 lower_limit: [45, 45, 45] upper_limit: [65, 65, 65] - speed: 255 lower_limit: [60, 60, 60]数组长度必须等于 sensors 板块的传感器总数且顺序一一对应第一档可省略lower_limit最后一档可省略upper_limit某个位置写_下划线表示该档位忽略此传感器。4.3 转速数值的两种取值范围speed可写数字也可写字符串取决于风扇驱动类型驱动数值范围说明hwmonPWM0~255对应内核 PWM 值255 为最大占空比tpacpi0~7 或字符串0~7 为固件档位level auto交还固件level full-speed和level disengaged脱离固件、拉满转速⚠️full-speed/disengaged会让风扇超规格运行、加速磨损仅在对抗热降频时短期使用。多风扇时speed要写成与风扇数量等长的列表按fans:中出现的顺序依次生效。另外全局levels:与风扇自带levels:二选一不能混用互斥校验见 src/yamlconfig.cpp 第 610 行。五、一份可直接套用的最小完整配置把三大板块拼起来就是一份典型的 ThinkPad 配置sensors: - chip: thinkpad-isa-0000 ids: [ CPU, GPU 1 ] fans: - tpacpi: /proc/acpi/ibm/fan levels: - [0, 0, 50] - [level auto, 45, 75]保存后修改文件即可热加载thinkfan 监听配置变更自动重读或用thinkfan -d守护进程参数启动验证。完整官方示例含全部五种传感器写法与两种 levels 模式请对照阅读 examples/thinkfan.yaml规范细节查阅 src/thinkfan.conf.5.cmake。常见报错速查报错关键词原因Invalid YAML syntax缩进问题——YAML 对缩进敏感不要用 Tab推荐 2 个空格Invalid keyword写错了关键词名或把可选键放在了错误层级Missing sensors: entry三大板块缺了一个An optional hwmon sensor must have an indices entryoptional: true必须搭配indicesTemperature limit must be a sequence详细模式下 limits 写成了标量而不是列表六、小结sensors决定看什么温度hwmon 三种写法按稳健度排序为name查找 驱动目录 indices 完整文件路径ThinkPad 可继续用chip:/tpacpi:fans决定控什么风扇与 sensors 写法对称支持多风扇、可带独立levelslevels决定多热转多快单热源用简单三元组异构设备用详细模式给每个传感器单独设限记住传感器顺序即温度数组顺序档位间留重叠区间做迟滞。掌握这三块thinkfan 的配置就再也不会让你头疼了。【免费下载链接】thinkfanThe minimalist fan control program项目地址: https://gitcode.com/gh_mirrors/th/thinkfan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表