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的控制相关推荐

  1. MT7621方案 LED 灯控制 (基于OpenWrt平台)

    注:出处不明,最开始是在这里看到的,图竟然没有...没有...相关资料也几乎木有...datasheet里也没有寄存器配置说明......MT7621还真是坑爹啊! 目前市面上大部分路由器方案是基于M ...

  2. 完整适配LUCI界面的Openwrt中EC20的QMI拨号

    目前4G模块应用已经非常普及,跟之前的3G不同,3G基本使用ppp拨号,usbserial驱动,Linux内核自带支持,此应用非常简单. 4G模块由于速率较高,usbserial驱动性能满足不了,因此 ...

  3. led显示屏控制卡接线图解_Led显示屏出现花屏是什么原因

    Led显示屏已经成为现在人们推广的一种形式了,很多地方都是离不开led显示屏的使用的.由于Led显示屏的五彩绚烂,也更加吸引人们的眼球.不过在使用过程中,也会遇到Led显示屏花屏的情况.那么,Led显 ...

  4. 二、点亮LED(GPIO控制)

    二.点亮LED(GPIO控制) 文件状态: [ ] 草稿 [ ] 正在修改 [ √ ] 正式发布 文件标识: 当前版本: V1.1 作 者: Skymixos 完成日期: 2022年10月02日 版 ...

  5. Linux设备树led,linux设备树下LED灯控制

    linux设备树下LED灯控制 linux设备树下LED灯控制 原理图: 所以在设备树下子节点下插入gpioled节点: gpioled { #address-cells = <1>; # ...

  6. python led屏控制_【教程】简易Python上位机之LED控制

    电子爱好者应该不会对"上位机"这个词感到陌生,毕竟或多或少有过接触.但若是说到上位机的开发的话,大家就不一定熟悉了.很多电子爱好者完全没有接触过上位机的开发工作,他们真的没有相应的 ...

  7. FS210开发平台板载LED灯控制实验

    作者:朱老师,华清远见嵌入式学院讲师. 目 录 1.实验目的 - 2 -         2.实验设备 - 2 -         3.实验内容 - 2 -         4.实验步骤 - 3 - ...

  8. 《STM32单片机开发应用教程(HAL库版)—基于国信长天嵌入式竞赛实训平台(CT117E-M4)》第四章4.1 LED显示控制实验

    写在前面-- <STM32单片机开发应用教程(HAL库版)-基于国信长天嵌入式竞赛实训平台(CT117E-M4)>第四章4.1,本节将通过LED显示控制实验,学习STM32G431的开发技 ...

  9. 手动编译LUCI 到 openwrt中 并且解决'/bin/po2lmo': Permission denied问题

    放个自己在卖的东西的链接,望朋友们多多支持,中央控制器控制舞台灯光的设备 https://item.taobao.com/item.htm?scm=12306.300.0.0&id=38169 ...

最新文章

  1. 敲响警钟!智能汽车数据正在被“偷运出境”!
  2. AAAI 2020| 一文看尽腾讯优图10篇入选论文
  3. 物联网细分领域-车联网(OBD)市场分析
  4. cacti sendmail发送告警邮件
  5. back在java里面是什么意思,手机APP中使用history.back()的问题
  6. 仅完成部分的readprocessmemory或write_王者荣耀:三种李小龙获取方式!无需完成任务、28号即可兑换...
  7. linux数组拼接_Linux中Shell数组的笔记
  8. 机器学习第四回——神经网络
  9. bresenham算法画圆mfc实现_kd-tree理论以及在PCL 中的代码的实现
  10. win2008 401 - 未授权: 由于凭据无效,访问被拒绝。解决方法
  11. WPS Office.10.1.0.6445绿色免安装版下载
  12. 新店铺怎么做?淘宝店铺如何引流做好基础销量?
  13. ucore Lab1 系统软件启动过程
  14. uWSGI, Gunicorn, 啥玩意儿?
  15. matlab2018a课后答案,[2018年最新整理]matlab习题及答案.doc
  16. 我想深入学习Go语言
  17. 设计模式—清晰头脑写代码赚金币
  18. vscode 状态栏图标异常问题
  19. 朴素贝叶斯模型、SVM模型笔记
  20. 欧拉角,轴角,四元数与旋转矩阵详解

热门文章

  1. 从母语学习规律中推断出英语学习的规律
  2. 爱数:AI+SHU=?
  3. Ribbon客户端负载
  4. 简单的金额小写转成读出来的大写
  5. 如何查看cudnn当前版本_Linux上查看已安装的CUDA和cuDNN版本号
  6. zabbix监控硬件
  7. 玩转云服务器——前言
  8. 拼单点外卖,AA付款
  9. 教育行业如何选呼叫中心系统
  10. vivado sdk中xil_out函数对指定的BRAM地址写数据为什么会导致程序挂起?