找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 8339|回复: 9

关于tp wr840n的openwrt按钮开关无线

[复制链接]
发表于 2013-1-8 16:57 来自手机 | 显示全部楼层 |阅读模式
关于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


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 楼主| 发表于 2013-1-8 22:29 | 显示全部楼层
求指导,求高手
 楼主| 发表于 2013-1-9 09:54 来自手机 | 显示全部楼层
继续自己顶自己
 楼主| 发表于 2013-1-9 21:18 | 显示全部楼层
继续自己顶自己
 楼主| 发表于 2013-1-10 18:45 | 显示全部楼层
继续自己顶自己
发表于 2013-1-10 22:53 | 显示全部楼层
额,在哪里思考的啊?求教
 楼主| 发表于 2013-1-28 22:57 | 显示全部楼层
继续等待高手
发表于 2013-1-28 23:42 | 显示全部楼层
等待高手吧
发表于 2013-1-28 23:46 来自手机 | 显示全部楼层
这个文件叫啥?在哪个目录下?etc/int下?其实楼主自己多对比几个人到的固件模仿写就好了。
发表于 2013-10-10 21:55 | 显示全部楼层
请问高手,怎么才能写到路由器里去呢??俺纯白哦。拜谢啦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-31 01:13

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表