openwrt中LED的控制
openwrt中LED的控制
上手总结
配置方法一 简单操作
直接进入
/sys/class/leds
目录下面。以<路由器名字>:颜色:<功能>
格式命名的目录均对应一个LED。进入要操作的目录,重点是
trigger
(触发方式) 、brightness
(开关)、delay_off
(熄灯时间)、delay_on
(亮灯时间)#ls brightness delay_on max_brightness trigger delay_off device subsystem uevent
对文件brightness写入0/1,关闭/打开LED灯。如 :
echo 0 > brightness
.设置闪烁:
echo timer > trigger echo 1000 > delay_on echo 1000 > delay_off
常用示例:关闭路由器所有led脚本
#!/bin/ash for i in `ls /sys/class/leds` do cd /sys/class/leds cd $i echo 0 > brightness done
配置方法二
修改配置文件
/etc/config/system
往下细看
配置文件
/etc/config/system
#......
config led 'led_internet'option name 'internet'option sysfs 'newifi-d2:amber:internet'option trigger 'switch0'option port_mask '0x10'config led 'led_wlan2g'option name 'WiFi 2.4GHz'option sysfs 'newifi-d2:blue:wlan2g'option trigger 'netdev'option mode 'link tx rx'option dev 'ra0'config led 'led_wlan5g'option name 'WiFi 5GHz'option sysfs 'newifi-d2:blue:wlan5g'option trigger 'netdev'option mode 'link tx rx'option dev 'rai0'
添加配置
所有可以被控制的LED灯均在/sys/class/leds
目录下。例如:
ls /sys/class/leds/
newifi-d2:amber:internet newifi-d2:blue:power newifi-d2:blue:wlan5g
newifi-d2:amber:power newifi-d2:blue:usb
newifi-d2:blue:internet newifi-d2:blue:wlan2g
LED受系统中的各种事件控制,由对应的trigger
指定。:
# cat /sys/class/leds/newifi-d2:blue:usb/trigger
[none] switch0 timer default-on netdev usbport phy0rx phy0tx phy0assoc phy0radio phy0tpt phy1rx phy1tx phy1assoc phy1radio phy1tpt
# echo "default-on" > /sys/class/leds/newifi-d2:blue:usb/trigger
# cat /sys/class/leds/newifi-d2:blue:usb/trigger
none switch0 timer [default-on] netdev usbport phy0rx phy0tx phy0assoc phy0radio phy0tpt phy1rx phy1tx phy1assoc phy1radio phy1tpt
执行以上命令,可以打开对应的LED灯,重启系统会失效。需要永久生效则写入/etc/config/system
。
例如:
#查看
#uci show system | grep 'system.led'
system.led_usb=led
system.led_usb.name='USB'
system.led_usb.sysfs='newifi-d2:blue:usb'
system.led_usb.trigger='usbport'
system.led_usb.interval='50'
system.led_usb.dev='1-1'#修改
uci set system.led_sub.trigger='default-on'
uci commit#或者uci batch <<EOF
set system.led_usb=led
set system.led_usb.name='USB'
set system.led_usb.sysfs='newifi-d2:blue:usb'
set system.led_usb.trigger='default-on'
EOF
uci commit#重启 生效
service led restart
Led triggers
none
: LED始终处于默认状态。未列出的LED默认为OFF,因此仅在声明LED始终为ON时有用。
Name | Type | Required | Default | Description |
---|---|---|---|---|
default | integer | no | 0 | LED state before trigger: 0 means OFF and 1 means ON |
sysfs | string | yes | (none) | LED device name |
trigger | string | yes | (none) | none |
switch0
: 如果已在已配置的交换机端口之一上建立链接,则该指示灯点亮。
Name | Type | Required | Default | Description |
---|---|---|---|---|
default | integer | no | 0 | LED state before trigger: 0 means OFF and 1 means ON |
sysfs | string | yes | (none) | LED device name |
port_mask | integer | no | 0 | Hexadecimal bit mask that encodes the regarded switch ports |
speed_mask | ? | ? | (none) | Example value: ‘0xf’ |
trigger | string | yes | (none) | switch0 |
Timer
: 配置LED的开/关频率闪烁。
#安装命令
opkg install kmod-ledtrig-timer
Name | Type | Required | Default | Description |
---|---|---|---|---|
default | integer | no | 0 | LED state before trigger: 0 means OFF and 1 means ON |
delayoff | integer | yes | (none) | How long (in milliseconds) the LED should be off. |
delayon | integer | yes | (none) | How long (in milliseconds) the LED should be on. |
sysfs | string | yes | (none) | LED device name |
trigger | string | yes | (none) | timer |
default-on
: LED灯常亮,已经被弃用,使用default=1 trigger=none
#安装命令
opkg install kmod-ledtrig-default-on
Name | Type | Required | Default | Description |
---|---|---|---|---|
default | integer | no | 0 | LED state before trigger: 0 means OFF and 1 means ON |
sysfs | string | yes | (none) | LED device name |
trigger | string | yes | (none) | default-on |
heartbeat
: LED闪烁以模拟实际的心跳<频率与1分钟平均CPU负载成正比。
#安装
opkg install kmod-ledtrig-heartbeat
Name | Type | Required | Default | Description |
---|---|---|---|---|
default | integer | no | 0 | LED state before trigger: 0 means OFF and 1 means ON |
sysfs | string | yes | (none) | LED device name |
trigger | string | yes | (none) | heartbeat |
nand-disk
: 当数据写入闪存时,LED闪烁。
Name | Type | Required | Default | Description |
---|---|---|---|---|
default | integer | no | 0 | LED state before trigger: 0 means OFF and 1 means ON |
sysfs | string | yes | (none) | LED device name |
trigger | string | yes | (none) | nand-disk |
netdev
: LED闪烁并显示链接状态和/或已配置接口上的发送和接收活动。
#安装
opkg install kmod-ledtrig-netdev
Name | Type | Required | Default | Description |
---|---|---|---|---|
default | integer | no | 0 | LED state before trigger: 0 means OFF and 1 means ON |
dev | string | yes | (none) | Name of the network interface which status should be reflected |
mode | string | yes | (none) | One or more of link, tx, or rx, seperated by spaces |
sysfs | string | yes | (none) | LED device name |
trigger | string | yes | (none) | netdev |
interval | ? | ? | (none) | Example value: ‘50’ |
WiFi Activity triggers
: 当在物理接口而不是软件网络接口中触发的事件上,LED闪烁。除了phy触发器具有更多事件之外,如果您想分别监视2.4 GHz无线电(通常为phy0)和5 GHz无线电(通常为phy1),它还提供了静态LED设置的可能性。netdev无法保证这种区分,因为根据当前的网络设置,wlan0可能是指2.4 GHz或5 GHz无线电。
Name | Type | Required | Default | Description |
---|---|---|---|---|
default | integer | no | 0 | LED state before trigger: 0 means OFF and 1 means ON |
sysfs | string | yes | (none) | LED device name |
trigger | string | yes | (none) | phy0rx, phy0tx, phy0assoc, phy0radio or phy0tpt |
phy0rx- 接收时闪烁。
phy0tx- 传输时闪烁。
phy0assoc- 在客户端关联上闪烁。
phy0radio-(未知,此选项对我的tl-wr1043nd无效)
phy0tpt- 网络活动缓慢且稳定地闪烁。与tx和rx模式的充满活力的闪烁相比
usbdev / usbport
: 如果连接了USB设备,则LED点亮。
#安装
opkg install kmod-ledtrig-usbdev
Name | Type | Required | Default | Description |
---|---|---|---|---|
default | integer | no | 0 | LED state before trigger: 0 means OFF and 1 means ON |
dev | string | yes | (none) | Name of USB device to monitor. |
interval | integer | yes | (none) | Interval in ms when device is active. |
sysfs | string | yes | (none) | LED device name |
trigger | string | yes | (none) |
usbdev – This may be usbport (March 2019)
|
gpio
: 允许通过gpio事件控制LED。
#安装opkg install kmod-ledtrig-gpio
Name | Type | Required | Default | Description |
---|---|---|---|---|
default | integer | no | 0 | LED state before trigger: 0 means OFF and 1 means ON |
Net filter
: 当特定数据包通过您的计算机时,指示灯会闪烁。
#安装
opkg install kmod-ipt-led#示例:当ssh连接通信时触发
iptables -A INPUT -p tcp --dport 22 -j LED --led-trigger-id ssh --led-delay 1000
#然后将新触发器连接到系统上的LED
echo netfilter-ssh > /sys/class/leds/<ledname>/trigger
Name | Type | Required | Default | Description |
---|---|---|---|---|
default | integer | no | 0 | LED state before trigger: 0 means OFF and 1 means ON |
示例
Heartbeat led
config 'led'option 'sysfs' 'wrt160nl:amber:wps'option 'trigger' 'heartbeat'
WLAN led
config 'led' 'wlan_led'option 'name' 'WLAN'option 'sysfs' 'tl-wr1043nd:green:wlan'option 'trigger' 'netdev'option 'dev' 'wlan0'option 'mode' 'link tx rx'
3G led
当USB正确注册到3G / EDGE / GPRS网络时,此指示灯点亮。
config 'led'option 'name' '3G'option 'sysfs' 'asus:blue:3g'option 'trigger' 'netdev'option 'dev' '3g-wan'option 'mode' 'link'
Timer led - 500ms ON, 2000ms OFF
config 'led'option 'sysfs' 'wrt160nl:blue:wps'option 'trigger' 'timer'option 'delayon' '500'option 'delayoff' '2000'
led服务脚本
/etc/init.d/led
#!/bin/sh /etc/rc.common
# Copyright (C) 2008 OpenWrt.orgSTART=96load_led() {local namelocal sysfslocal triggerlocal devlocal portslocal modelocal defaultlocal delayonlocal delayofflocal intervalconfig_get sysfs $1 sysfsconfig_get name $1 name "$sysfs"config_get trigger $1 trigger "none"config_get dev $1 devconfig_get ports $1 portconfig_get mode $1 modeconfig_get_bool default $1 default "nil"config_get delayon $1 delayonconfig_get delayoff $1 delayoffconfig_get interval $1 interval "50"config_get port_state $1 port_stateconfig_get delay $1 delay "150"config_get message $1 message ""config_get gpio $1 gpio "0"config_get inverted $1 inverted "0"if [ "$trigger" = "rssi" ]; then# handled by rssileds userspace processreturnfi[ "$trigger" = "usbdev" ] && {# Backward compatibility: translate to the new triggertrigger="usbport"# Translate port of root hub, e.g. 4-1 -> usb4-port1ports=$(echo "$dev" | sed -n 's/^\([0-9]*\)-\([0-9]*\)$/usb\1-port\2/p')# Translate port of extra hub, e.g. 2-2.4 -> 2-2-port4[ -z "$ports" ] && ports=$(echo "$dev" | sed -n 's/\./-port/p')}[ -e /sys/class/leds/${sysfs}/brightness ] && {echo "setting up led ${name}"printf "%s %s %d\n" \"$sysfs" \"$(sed -ne 's/^.*\[\(.*\)\].*$/\1/p' /sys/class/leds/${sysfs}/trigger)" \"$(cat /sys/class/leds/${sysfs}/brightness)" \>> /var/run/led.state[ "$default" = 0 ] &&echo 0 >/sys/class/leds/${sysfs}/brightnessecho $trigger > /sys/class/leds/${sysfs}/trigger 2> /dev/nullret="$?"[ $default = 1 ] &&cat /sys/class/leds/${sysfs}/max_brightness > /sys/class/leds/${sysfs}/brightness[ $ret = 0 ] || {echo >&2 "Skipping trigger '$trigger' for led '$name' due to missing kernel module"return 1}case "$trigger" in"netdev")[ -n "$dev" ] && {echo $dev > /sys/class/leds/${sysfs}/device_namefor m in $mode; do[ -e "/sys/class/leds/${sysfs}/$m" ] && \echo 1 > /sys/class/leds/${sysfs}/$mdoneecho $interval > /sys/class/leds/${sysfs}/interval};;"timer"|"oneshot")[ -n "$delayon" ] && \echo $delayon > /sys/class/leds/${sysfs}/delay_on[ -n "$delayoff" ] && \echo $delayoff > /sys/class/leds/${sysfs}/delay_off;;"usbport")local pfor p in $ports; doecho 1 > /sys/class/leds/${sysfs}/ports/$pdone;;"port_state")[ -n "$port_state" ] && \echo $port_state > /sys/class/leds/${sysfs}/port_state;;"gpio")echo $gpio > /sys/class/leds/${sysfs}/gpioecho $inverted > /sys/class/leds/${sysfs}/inverted;;switch[0-9]*)local port_mask speed_maskconfig_get port_mask $1 port_mask[ -n "$port_mask" ] && \echo $port_mask > /sys/class/leds/${sysfs}/port_maskconfig_get speed_mask $1 speed_mask[ -n "$speed_mask" ] && \echo $speed_mask > /sys/class/leds/${sysfs}/speed_mask[ -n "$mode" ] && \echo "$mode" > /sys/class/leds/${sysfs}/mode;;esac}
}start() {[ -e /sys/class/leds/ ] && {[ -s /var/run/led.state ] && {local led trigger brightnesswhile read led trigger brightness; do[ -e "/sys/class/leds/$led/trigger" ] && \echo "$trigger" > "/sys/class/leds/$led/trigger"[ -e "/sys/class/leds/$led/brightness" ] && \echo "$brightness" > "/sys/class/leds/$led/brightness"done < /var/run/led.staterm /var/run/led.state}config_load systemconfig_foreach load_led led}
}
openwrt中LED的控制相关推荐
- MT7621方案 LED 灯控制 (基于OpenWrt平台)
注:出处不明,最开始是在这里看到的,图竟然没有...没有...相关资料也几乎木有...datasheet里也没有寄存器配置说明......MT7621还真是坑爹啊! 目前市面上大部分路由器方案是基于M ...
- 完整适配LUCI界面的Openwrt中EC20的QMI拨号
目前4G模块应用已经非常普及,跟之前的3G不同,3G基本使用ppp拨号,usbserial驱动,Linux内核自带支持,此应用非常简单. 4G模块由于速率较高,usbserial驱动性能满足不了,因此 ...
- led显示屏控制卡接线图解_Led显示屏出现花屏是什么原因
Led显示屏已经成为现在人们推广的一种形式了,很多地方都是离不开led显示屏的使用的.由于Led显示屏的五彩绚烂,也更加吸引人们的眼球.不过在使用过程中,也会遇到Led显示屏花屏的情况.那么,Led显 ...
- 二、点亮LED(GPIO控制)
二.点亮LED(GPIO控制) 文件状态: [ ] 草稿 [ ] 正在修改 [ √ ] 正式发布 文件标识: 当前版本: V1.1 作 者: Skymixos 完成日期: 2022年10月02日 版 ...
- Linux设备树led,linux设备树下LED灯控制
linux设备树下LED灯控制 linux设备树下LED灯控制 原理图: 所以在设备树下子节点下插入gpioled节点: gpioled { #address-cells = <1>; # ...
- python led屏控制_【教程】简易Python上位机之LED控制
电子爱好者应该不会对"上位机"这个词感到陌生,毕竟或多或少有过接触.但若是说到上位机的开发的话,大家就不一定熟悉了.很多电子爱好者完全没有接触过上位机的开发工作,他们真的没有相应的 ...
- FS210开发平台板载LED灯控制实验
作者:朱老师,华清远见嵌入式学院讲师. 目 录 1.实验目的 - 2 - 2.实验设备 - 2 - 3.实验内容 - 2 - 4.实验步骤 - 3 - ...
- 《STM32单片机开发应用教程(HAL库版)—基于国信长天嵌入式竞赛实训平台(CT117E-M4)》第四章4.1 LED显示控制实验
写在前面-- <STM32单片机开发应用教程(HAL库版)-基于国信长天嵌入式竞赛实训平台(CT117E-M4)>第四章4.1,本节将通过LED显示控制实验,学习STM32G431的开发技 ...
- 手动编译LUCI 到 openwrt中 并且解决'/bin/po2lmo': Permission denied问题
放个自己在卖的东西的链接,望朋友们多多支持,中央控制器控制舞台灯光的设备 https://item.taobao.com/item.htm?scm=12306.300.0.0&id=38169 ...
最新文章
- 敲响警钟!智能汽车数据正在被“偷运出境”!
- AAAI 2020| 一文看尽腾讯优图10篇入选论文
- 物联网细分领域-车联网(OBD)市场分析
- cacti sendmail发送告警邮件
- back在java里面是什么意思,手机APP中使用history.back()的问题
- 仅完成部分的readprocessmemory或write_王者荣耀:三种李小龙获取方式!无需完成任务、28号即可兑换...
- linux数组拼接_Linux中Shell数组的笔记
- 机器学习第四回——神经网络
- bresenham算法画圆mfc实现_kd-tree理论以及在PCL 中的代码的实现
- win2008 401 - 未授权: 由于凭据无效,访问被拒绝。解决方法
- WPS Office.10.1.0.6445绿色免安装版下载
- 新店铺怎么做?淘宝店铺如何引流做好基础销量?
- ucore Lab1 系统软件启动过程
- uWSGI, Gunicorn, 啥玩意儿?
- matlab2018a课后答案,[2018年最新整理]matlab习题及答案.doc
- 我想深入学习Go语言
- 设计模式—清晰头脑写代码赚金币
- vscode 状态栏图标异常问题
- 朴素贝叶斯模型、SVM模型笔记
- 欧拉角,轴角,四元数与旋转矩阵详解