泰山派:点灯!- 了解与控制Led的使用方法。
起因:
因为最近在开发 NGSP(Github: NullCraftOrg/game-server-panel) 这个项目,为了测试跨平台能力,翻箱倒柜找到了这块ARM开发板:泰山派RK3566,刚好Armbian也针对RK35XX出了可以用的系统,还包含了SDK,直接利用起来。
为什么要写这篇文章呢?因为泰山派使用Armbian的系统主板上集成的Led小灯是不会跟随系统启动点亮的,这导致我无法通过外观判断系统是否启动了,所以翻找了文档,发现Led可以通过触发器来控制点亮,例如我这个小需求只需要通过设置对应颜色Led的触发器(trigger)为default-on即可跟随系统启动点亮了。
所以我顺便简单记录一下控制开发板上的Led灯上的其它功能!
根据官方开发文档:点灯部分可查看原始内容,以下为我对Armbian系统上使用的个人整理
系统环境:
我使用了 Armbian 基于 Debian13 构建的系统,包含了基本的RK驱动包和SDK,比立创官方提供的系统镜像可折腾空间大一些,缺点是刷入后无法使用 Loader 更新固件,需要短接开启 MASKROM 模式。
了解LED:
查看 led 存放位置
1 | root@tspi:~# ls /sys/class/leds/ |
分别对应控制目录:RGB:蓝色(status-blue) 绿色(status-green) 红色(status-red)
每个Led目录下都有对应的属性、控制器和触发器
进入一个灯的文件夹查看:
1 | root@tspi:~# ls /sys/class/leds/status-blue |
led 文件夹内容说明:
- brightness:文件,用于控制 LED 亮度通过写文件控制:
1(开启)/0(关闭)。 - device:目录,LED 相关的设备路径。
- max_brightness:文件,LED 最大亮度值,值在 0 到 max_brightness 之间。
- power:目录,根据官方说明:这个属性表示 LED 的电源状态。它可以是 “on” 表示开启,或者 “off” 表示关闭。
- subsystem:目录,根据官方说明:这个属性表示该 LED 设备所属的子系统。
- trigger:文件,触发器,用于控制 LED 的行为模式,可通过
cat trigger查看支持的模式。 - uevent:文件,官方说明:这个属性包含有关 LED 设备的事件信息。
通过设置brightness控制灯的状态
1 | # 点亮蓝色 LED |
触发器(trigger)说明
1 | root@tspi:~# cat /sys/class/leds/status-blue/trigger |
我根据不同功能的触发器分为以下几种类型(个人见解):
- 基本类型:代表直接控制LED为固定显示状态的(比起叫触发器我更喜欢叫它控制器)。
- 事件触发:通过预设好的事件来触发更新LED状态的,例如:
1. 基本类型触发器
- none:禁用触发器,关闭LED
- default-on:默认开启触发器,在开机时保持常亮
- heartbeat:心跳触发器,LED 循环呼吸灯效果
2. 事件类型触发器
- panic:内核崩溃触发器:当”内核恐慌”时点亮LED
- activity:活跃触发器:LED闪烁频率根据系统活跃程度变化
- bluetooth-power:蓝牙电源触发器:LED指示蓝牙是否开启
- hci0-power:对应系统中第一个蓝牙电源触发器:LED指示蓝牙是否开启
- mmc0、mmc1、mmc2:MMC设备操作触发器:在对应的 MMC 读写操作时闪烁。
- cpu、cpu0、cpu1、cpu2、cpu3:当特定 CPU 核心处于活动状态时闪烁,用于监控 CPU 负载
- rfkill-any:官方说明:在任何 RFKill 状态变化时触发,例如 Wi-Fi 或蓝牙开关状态改变。
- rfkill-none:官方说明:在 RFKill 禁用状态下触发。
- rfkill0、rfkill1:官方说明:在对应的 RFKill 设备状态变化时触发。
- usb-gadget:未测试
- usb-host:未测试
- mtd:未测试
- nand-disk:未测试
- usbport:未测试
- kbd-scrolllock:键盘事件
- kbd-numlock:键盘事件
- kbd-capslock:键盘事件
- kbd-kanalock:键盘事件
- kbd-shiftlock:键盘事件
- kbd-altgrlock:键盘事件
- kbd-ctrllock:键盘事件
- kbd-altlock:键盘事件
- kbd-shiftllock:键盘事件
- kbd-shiftrlock:键盘事件
- kbd-ctrlllock:键盘事件
- kbd-ctrlrlock:键盘事件
- disk-activity:硬盘活跃
- disk-read:硬盘读取
- disk-write:硬盘写入
触发器使用示例:
1 | # 开启蓝色LED |
// TODO
更多玩法研究中…