WR703n OpenWrt 按网络流量闪烁LED

#UPDAT130215: 感谢 @dword1511 提醒,闪灯是自带功能直接设置即可:

echo phy0tx > /sys/class/leds/tp-link\:blue\:system/trigger

另外,除了 phy0tx,trigger 还有几个可选值:
[none] default-on timer phy0rx phy0tx phy0assoc phy0radio phy0tpt netdev usbdev

当然本文脚本还是有一定价值的:比如可以一眼区分出 100KiB/s 与 1MiB/s
———-

前几天TB上搞了一个火柴盒形的路由器,TP-Link WR703n
单RJ45口,USB2.0,改外置天线改 64M 内存,改 8M Flash,刷了 OpenWrt 便于折腾。

盒子上只有一颗蓝色 LED,开机后常亮,写了个脚本让它随网络流量闪烁:
以 1Hz 频率闪烁,根据流量调节占空比。无流量时常灭,满带宽时常亮。

下载脚本前,需要安装几个东西:

opkg update
opkg install lmbench-msleep bc

lmbench-msleep用来做毫秒级延时,bc用来计算小数。不是很大,各种依赖加起来几百K吧好像..)

脚本如下,修改好设置保存任意地方,加入rc.local开机自启动就好~

#!/bin/sh
#set -x
export PATH="/bin:/sbin:/usr/sbin:/usr/bin"

IFNAME="eth0"
FULLSPEED=1200  # KiB/s
LED='/sys/class/leds/tp-link:blue:system/brightness'

while [ True ]
do

# Get traffic data:
str=$(ifconfig $IFNAME | grep 'RX bytes')
str=${str#*'RX bytes:'}
str=${str%' ('*}
str=${str%' ('*}
now=$((str/1024))

speed=$((now-last))
if [ "$speed" -gt "$FULLSPEED" ] ; then
        speed="$FULLSPEED"
fi
last="$now"

# Flash LED:
ratio=`echo "scale=3;$speed/$FULLSPEED*1000"|bc`
ontime=${ratio%'.'*}
offtime=$((1000-ontime))
#echo "$ontime"

if [ "$ontime" -gt "0" ] ; then
        echo 255 > "$LED"
        msleep "$ontime"
fi

if [ "$offtime" -gt "0" ] ; then
        echo 0 > "$LED"
        msleep "$offtime"
fi

#sleep 10
done

开头有两处可能要修改的地方:
IFNAME 为接口(interface)名称,ifconfig 里显示的那个,eth0、wlan0、pppoe-xxx 什么的都可以
FULLSPEED 为网络带宽,单位KiB/s,想调低常亮阈值就改小些…
如果不是 WR730n,可能还需要修改 LED

第一次写(超过10行的)bash 脚本,感觉好奇葩啊..各种蛋疼..
估计有的地方有绕圈子了?至少能运行了..要不是8M小路由器舍不得装 Python 我才不用 bash 嘞…

似乎还是狂闪的那种比较好看?但是好麻烦的样子…

WR703n OpenWrt 按网络流量闪烁LED》上有2条评论

    1. Null 文章作者

      那么小的路由器,成天插个U盘看着多不舒服…
      要是可以塞一个 USB Hub + U盘 到路由器内部倒是挺好的…

      回复

所有评论已归档,无法添加新的评论。请直接邮件与我联系,谢谢。