Photonicat 2 sysfs:修订间差异
跳转到导航
跳转到搜索
Created page with "= 电源与散热 Sysfs 接口(Battery / Charger / Fan) = 本文档描述路由器上的电源与散热相关 sysfs 接口,包含: * '''/sys/class/power_supply/battery''' * '''/sys/class/power_supply/charger''' * '''/sys/class/thermal/cooling_device0''' (风扇/冷却设备) == 快速上手 == <syntaxhighlight lang="bash"> # 电池电量百分比(%) cat /sys/class/power_supply/battery/capacity # 充电器是否在线(1=在线, 0=离线) cat /sys/c..." |
(没有差异)
|
2025年8月18日 (一) 12:06的版本
电源与散热 Sysfs 接口(Battery / Charger / Fan)
本文档描述路由器上的电源与散热相关 sysfs 接口,包含:
- /sys/class/power_supply/battery
- /sys/class/power_supply/charger
- /sys/class/thermal/cooling_device0 (风扇/冷却设备)
快速上手
# 电池电量百分比(%)
cat /sys/class/power_supply/battery/capacity
# 充电器是否在线(1=在线, 0=离线)
cat /sys/class/power_supply/charger/online
# 风扇当前档位(0..max_state)
cat /sys/class/thermal/cooling_device0/cur_state
电池接口 (/sys/class/power_supply/battery)
概述
`battery` 设备提供电池容量、电压、电流与能量等信息,遵循 Linux Power Supply Class 规范。
属性说明
| 文件 | 描述 | 单位 / 取值 |
|---|---|---|
| capacity | 当前电量百分比 | % |
| current_now | 瞬时电流(正=放电,负=充电) | µA |
| energy_empty | 剩余可用能量 | µWh |
| energy_empty_design | 设计的最小能量 | µWh |
| energy_full | 当前满电容量 | µWh |
| energy_full_design | 设计满电容量 | µWh |
| power_now | 瞬时功率 | µW |
| voltage_now | 当前电压 | µV |
| voltage_max_design | 设计最大电压 | µV |
| voltage_min_design | 设计最小电压 | µV |
| status | 充放电状态(`Charging`/`Discharging`/`Full` 等) | 字符串 |
| technology | 化学类型(如 `Li-ion`) | 字符串 |
| type | 通常为 `Battery` | 字符串 |
| model_name | 电池型号 | 字符串 |
| device, hwmon0, of_node, power, subsystem, uevent, wakeup1 | 内部引用/目录 | — |
使用示例
cat /sys/class/power_supply/battery/capacity
cat /sys/class/power_supply/battery/voltage_now
cat /sys/class/power_supply/battery/status
充电器接口 (/sys/class/power_supply/charger)
概述
`charger` 设备提供外部电源(AC/USB)连接状态与电压等信息。
属性说明
| 文件 | 描述 | 单位 / 取值 |
|---|---|---|
| online | 充电器是否连接(1=是,0=否) | 布尔 |
| voltage_now | 充电器输入电压 | µV |
| type | 设备类型(`Mains`/`USB` 等) | 字符串 |
| device, hwmon1, of_node, power, subsystem, uevent, wakeup2 | 内部引用/目录 | — |
使用示例
cat /sys/class/power_supply/charger/online
cat /sys/class/power_supply/charger/voltage_now
cat /sys/class/power_supply/charger/type
风扇 / 冷却设备接口 (/sys/class/thermal/cooling_device0)
概述
`cooling_device0` 表示热管理子系统中的一个冷却设备(风扇等)。你的设备显示类型为 `pcat-pm-fan`,并支持离散档位控制。
目录结构(示例)
/sys/class/thermal/cooling_device0
├─ cur_state # 当前档位(0..max_state)
├─ max_state # 最大档位(例:9)
├─ type # 冷却设备类型(例:pcat-pm-fan)
├─ power/ # 电源管理目录(目录,非文件)
├─ subsystem/ # 内核子系统链接(目录)
└─ uevent # 内核事件信息
属性说明
| 文件 | 描述 | 单位 / 取值 |
|---|---|---|
| cur_state | 当前风扇档位(0=关闭或最低档;越大越强) | 整数(0..max_state) |
| max_state | 支持的最大档位(示例中为 9) | 整数 |
| type | 冷却设备类型(你的设备显示为 `pcat-pm-fan`) | 字符串 |
| power, subsystem, uevent | 内部引用/目录 | — |
读取与设置示例
# 读取最大档位(示例输出:9)
cat /sys/class/thermal/cooling_device0/max_state
# 读取当前档位
cat /sys/class/thermal/cooling_device0/cur_state
# 以 root 身份设置到 5 档(确保 0<=5<=max_state)
echo 5 > /sys/class/thermal/cooling_device0/cur_state
# 观察档位变化(每秒刷新)
watch -n1 'cat /sys/class/thermal/cooling_device0/cur_state'
注意事项
- 档位是离散级别,不等同于百分比或固定 RPM,具体转速映射取决于驱动。
- 若需要查看实际转速(RPM),可在 `hwmon` 下查找 `fan*_input`(如果驱动导出),如:`/sys/class/hwmon/hwmonX/fan1_input`。
- 写入超出范围值会失败或被内核拒绝;请始终在 `0..max_state` 之间操作。
- 需要 root 权限写入 `cur_state`。
- 设备可能不叫 `cooling_device` 而是带索引:`cooling_device0`、`cooling_device1`… 直接进入存在的索引目录。
常见问题(基于你的终端输出)
| 现象 | 说明/原因 | 处理方式 |
|---|---|---|
cd cooling_device 报错 "No such file or directory" |
目录名带索引,如 cooling_device0 |
使用 cd /sys/class/thermal/cooling_device0
|
cat * 出现 "Is a directory" |
power、subsystem 是目录,不能 cat |
逐个读取具体文件,如 cat cur_state、cat max_state
|
cat ( 报 "syntax error" |
shell 将 "(" 视为特殊字符,且命令不完整 | 输入正确命令,如 cat cur_state
|
单位与规范
- 除非另有说明,数值使用微单位:电压 µV,电流 µA,功率 µW,能量 µWh。
- 状态与类型字符串遵循 Linux Power Supply / Thermal 子系统惯例。
- 内部文件(如
device、subsystem、uevent)面向内核或系统集成,不建议作为上层业务接口。
建议
- 若需要更友好的用户层接口,可在用户空间提供一个封装脚本或守护进程,将:
- 电池/充电器:统一换算并转成人类可读单位(V、A、W、Wh)。
- 风扇:将档位映射为百分比或温控曲线(如基于
/sys/class/thermal/thermal_zone*/temp)。
- 运维文档中可附上「温度—风扇档位」策略表与安全温度阈值。