Photonicat 2 sysfs:修订间差异

来自Photonicat Wiki
跳转到导航 跳转到搜索
C2h2留言 | 贡献
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" powersubsystem 是目录,不能 cat 逐个读取具体文件,如 cat cur_statecat max_state
cat ( 报 "syntax error" shell 将 "(" 视为特殊字符,且命令不完整 输入正确命令,如 cat cur_state

单位与规范

  • 除非另有说明,数值使用微单位:电压 µV,电流 µA,功率 µW,能量 µWh。
  • 状态与类型字符串遵循 Linux Power Supply / Thermal 子系统惯例。
  • 内部文件(如 devicesubsystemuevent)面向内核或系统集成,不建议作为上层业务接口。

建议

  • 若需要更友好的用户层接口,可在用户空间提供一个封装脚本或守护进程,将:
    • 电池/充电器:统一换算并转成人类可读单位(V、A、W、Wh)。
    • 风扇:将档位映射为百分比或温控曲线(如基于 /sys/class/thermal/thermal_zone*/temp)。
  • 运维文档中可附上「温度—风扇档位」策略表与安全温度阈值。