|
关于tp wr840nv1的openwrt开关,求高手解答
自己用的是tp的840n无线路由,刷了110901的z大为3420,841nv7,300r等编译的版本,路由只有一个qss/rst的双功能按钮,qss功能没有什么用,想要实现一键多功能,自己参照网上的帖子自己瞎整了一个,能实现按一下开关wifi,还想用其他功能,请大侠帮忙修改下按钮配置.
要求如下:
Qss/rst
1s开关wifi (或者按下抬起以后生效,不知道是上升沿还是下降沿自己感觉应该是松手后才生效,否则其他长按功能没法实现了,)wifi灯跟随状态亮灭
长按3s开始TR下载 qss灯闪烁
长按5S卸载移动盘 qss灯熄灭
长按 8s以上,复位系统
此段是自己根据网上的内容改的,可以按下按键瞬间立即开启关闭wifi,led也能正常显示开关状态;重启以后默认开wifi,无论关闭前是何状态.这个留给大家有需求的做参考.
#!/bin/sh
[ "$BUTTON" = "BTN_0" ] && [ "$ACTION" = "pressed" ] && {
SW=$(uci get wireless.@wifi-device[0].disabled)
[ $SW == '0' ] && uci set wireless.@wifi-device[0].disabled=1
[ $SW == '0' ] || uci set wireless.@wifi-device[0].disabled=0
wifi
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
路由原有的配置文件不是为840n准备的,因为840n只有一个钮,并且qss灯和系统灯等等也只是一个颜色,并没有红色的.而941等型号有两个按钮,灯也有双色.
配置如下,需要高手修改的就在此段,可能有些配置是注释掉了,按钮值应该是BTN_0
tl-wr941的文件夹我可以自己改. debug_log不知道是否有用.没用可以去掉吧.
#!/bin/sh
# button reset Script VER 1.1 2011.1.6 for openwrt by zjhzzyf
# reset up 4s is reset on 3s wifi wps is up 3s umount 1s start_tr
debug_log=0
stop_tr(){
HOST=localhost
PORT=$(uci get transmission.@transmission[0].rpc_port)
RPC_AUTH=$(uci get transmission.@transmission[0].rpc_authentication_required)
USER=$(uci get transmission.@transmission[0].rpc_username)
PASS=$(uci get transmission.@transmission[0].rpc_password)
[ "$RPC_AUTH" = "" ] &&RPC_AUTH=0
if [ "$RPC_AUTH" = "1" ] ;then
COMMAND="transmission-remote ${HOST}{PORT} --auth ${USER}{PASS} "
else
COMMAND="transmission-remote ${HOST}{PORT} "
fi
tr_id=$($COMMAND -l | grep -v Sum:|grep -v ID | awk '{ print $1; }')
for Downloading_id in $tr_id ;do
$COMMAND --torrent $Downloading_id --stop > /dev/null
done
/etc/init.d/transmission stop
}
start_tr(){
# /etc/init.d/transmission start
echo "transmission start"
#echo 0 > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:green:qss/brightness
#echo 0 > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:red:qss/brightness
#echo 1 > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:green:qss/brightness
}
umount_disk(){
swapoff -a
swapoff -a
dev_name=$(df |grep /mnt/sd |grep -v /overlay | awk '{ print $1; }')
for dev_id in $dev_name;do
umount -l ${dev_id}
done
echo 0 > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:green:qss/brightness
echo 0 > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:red:qss/brightness
# echo none > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:red:qss/trigger
echo none > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:green:qss/trigger
echo heartbeat > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:red:qss/trigger
}
wifi_switch(){
if [ "`uci get wireless.@wifi-device[0].disabled`" = 1 ];
then
uci set wireless.@wifi-device[0].disabled=0 && wifi up&
#echo 1 > /proc/diag/led/power
else
uci set wireless.@wifi-device[0].disabled=1 && wifi down&
#echo f > /proc/diag/led/power
fi
uci commit wireless
}
pres_time(){
old_time=$(cat /tmp/prestime)
new_time=$(date +%s)
totle_time=$(($new_time - $old_time ))
}
# reset wps button for 941N v2 Backfire (10.03, r24197) --------btn0 reset
[ "$BUTTON" = "BTN_0" -a "$ACTION" = "pressed" ]&& echo `date +%s` > /tmp/prestime
if [ "$BUTTON" = "BTN_0" -a "$ACTION" = "released" ];
then
pres_time
[ "$debug_log" = "1" ]&&echo pres_time{pres_time} >>/root/button
if [ "$totle_time" -gt "4" ] ;
then
echo 0 > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:green:qss/brightness
echo 0 > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:red:qss/brightness
echo 1 > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:red:qss/brightness
mtd -r erase rootfs_data
fi
rm -rf /tmp/prestime
fi
[ "$BUTTON" = "BTN_1" -a "$ACTION" = "pressed" ]&& echo `date +%s` > /tmp/prestime
if [ "$BUTTON" = "BTN_1" -a "$ACTION" = "released" ];
then
pres_time
[ "$debug_log" = "1" ]&&echo pres_time{pres_time} >>/root/button
if [ "$totle_time" -gt "2" ] ;
then
stop_tr > /dev/null
umount_disk > /dev/null
fi
if [ "$totle_time" -le "1" ] ;
then
wifi_switch > /dev/null
fi
rm -rf /tmp/prestime
fi
# reset wps button for 841N V3 KAMIKAZE (bleeding edge, r24860)-----------
# reset button for v6 rc4 reset
[ "$BUTTON" = "reset" -a "$ACTION" = "pressed" ]&& echo `date +%s` > /tmp/prestime
if [ "$BUTTON" = "reset" -a "$ACTION" = "released" ];
then
pres_time
[ "$debug_log" = "1" ]&&echo pres_time{pres_time} >>/root/button
if [ "$totle_time" -gt "4" ] ;
then
echo 0 > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:green:qss/brightness
echo 0 > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:red:qss/brightness
echo 1 > /sys/devices/platform/leds-gpio/leds/tl-wr941nd:red:qss/brightness
mtd -r erase rootfs_data
fi
rm -rf /tmp/prestime
fi
[ "$BUTTON" = "wps" -a "$ACTION" = "pressed" ]&& echo `date +%s` > /tmp/prestime
if [ "$BUTTON" = "wps" -a "$ACTION" = "released" ];
then
pres_time
[ "$debug_log" = "1" ]&&echo pres_time{pres_time} >>/root/button
if [ "$totle_time" -gt "2" ] ;
then
stop_tr > /dev/null
umount_disk > /dev/null
fi
if [ "$totle_time" -le "1" ] ;
then
wifi_switch > /dev/null
fi
rm -rf /tmp/prestime
fi
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
请不要胡乱输入以及粘贴、复制等方式灌水
请尊重作者、并共同维护网站的正常阅读,否则账户将会被限制发帖、回帖,并且积分可能会被清零,站内短信以及阅读权限等都会受到影响,谢谢。
具体限制方式:https://www.right.com.cn/forum/thread-8307840-1-1.html
|
|