會員 ![]() | 【腳本】WifiToggle - 以 Reset/WPS/QSS 按鈕當作無線開關 曾經有網友詢問支援硬體無線開關的無線分享器, 小弟約略在網購找了一下, EDIMAX & SMC & ZyXEL & LevelOne 等把硬體無線開關設計成On/Off, Buffalo 則是On/Off/Auto, 此外還有某些品牌支援定時 (排程) 功能, 雖然軟體開關或定時也可以達到控制無線訊號的目的, 但有時還是不如硬體開關來得方便, 然而並非每台分享器都有此設計, 於是小弟參考OpenWrt 的教學文章, 提供網友以利用率較低的Reset/WPS/QSS 等按鈕當作無線開關, 並且根據按下的時間長短產生不同的作用 首先, 請準備一台OpenWrt/X-Wrt/Gargoyle 所支援的無線分享器, 並將韌體更換成Kamikaze 8.09.2 (Gargoyle 1.2) 或Backfire 10.03.1 (Gargoyle 1.3), 若是安裝Trunk 版, 則請先檢查是否已安裝kmod-button-hotplug 套件: 語法: root@OpenWrt:~# opkg list_installed | grep button kmod-button-hotplug 語法: root@OpenWrt:~# opkg update root@OpenWrt:~# opkg install kmod-button-hotplug 接著找出Reset/WPS/QSS 等按鈕的內部代碼, 請編輯 /etc/hotplug.d/button/01-log-button-actions: 語法: #!/bin/sh logger "'$BUTTON' was '$ACTION' for $SEEN seconds" 語法: root@OpenWrt:~# logread -f Mar 15 21:39:37 OpenWrt user.notice root: 'reset' was 'pressed' for 0 seconds Mar 15 21:39:38 OpenWrt user.notice root: 'reset' was 'released' for 1 seconds Mar 15 21:39:40 OpenWrt user.notice root: 'reset' was 'pressed' for 0 seconds Mar 15 21:39:42 OpenWrt user.notice root: 'reset' was 'released' for 2 seconds 語法: $BUTTON = [reset|wps|QSS] (僅供參考) $ACTION = [pressed|released] $SEEN = [button pressed till released] 單位為秒, 小數以下不計 語法: . /etc/functions.sh do_button () { local button local action local handler local min local max config_get button "$1" button config_get action "$1" action config_get handler "$1" handler config_get min "$1" min config_get max "$1" max [ "$ACTION" = "$action" -a "$BUTTON" = "$button" -a -n "$handler" ] && { if [ -z "$min" ]; then [ -z "$max" -o "$max" -ge $SEEN ] && eval $handler elif [ -z "$max" ]; then [ $min -le $SEEN ] && eval $handler else [ $min -le $SEEN -a $max -ge $SEEN ] && eval $handler fi } } #logger "'$BUTTON' was '$ACTION' for $SEEN seconds" config_load system config_foreach do_button button 語法: config 'button' 'woggle' option 'button' 'reset' option 'action' 'released' option 'handler' '/sbin/woggle' option 'min' '0' option 'max' '1' config 'button' 'reset' option 'button' 'reset' option 'action' 'released' option 'handler' 'firstboot && reboot' option 'min' '30' option 'max' '60' 語法: 按下 reset 0-1 秒, 則開啟或關閉無線 (執行 /sbin/woggle) 按下 reset 30-60 秒, 則恢復OpenWrt 預設值 (執行 firstboot && reboot) 雖然開關無線只需執行 "wifi up" 或 "wifi down", 然而針對不同硬體, 有時可能還需要其他特殊處置, 或者以燈號顯示無線狀態, 所以以下將適用於FON2201 (Kamikaze/Atheros) 和ASUS WL-HDD2.5 (Backfire/brcm47xx) 的腳本分開處理, 另請留意不同韌體版本 (Backfire/Kamikaze, ar71xx/atheros/brcm-2.4/brcm47xx) 可能需要採用不同語法, 請自行研究 FON2201 (Kamikaze/atheros): ASUS WL-HDD2.5 (Backfire/brcm47xx): 儲存後再把 /sbin/woggle 設定為可執行: 語法: root@OpenWrt:~# chmod +x /sbin/woggle 如果網友和小弟一樣, AP 開機時預設不啟用無線, 那麼還需於AP 開機之後以燈號反映正確的無線狀態, 請編輯 /etc/init.d/custom-user-startup: 語法: #!/bin/sh /etc/rc.common START=98 start() { /sbin/woggle led } 語法: root@OpenWrt:~# chmod +x /etc/init.d/custom-user-startup root@OpenWrt:~# /etc/init.d/custom-user-startup enable 最後, 由於Backfire 之下可透過LuCI 或 /etc/config/system 控制LED, 所以還需留意是否會和 /proc/diag/led 衝突, 請只控制其中之一, 以ASUS WL-HDD2.5 (Backfire/brcm47xx) 為例: 語法: root@OpenWrt:~# ls /proc/diag/led power usb 語法: config 'led' option 'name' 'radio' option 'sysfs' 'b43-phy0::radio' option 'default' '1' option 'trigger' 'netdev' option 'dev' 'wlan0' option 'mode' 'tx rx' Hardware Button - OpenWrt Wiki System configuration - OpenWrt Wiki LED System Load Monitor - OpenWrt Wiki Wifi Toggle - OpenWrt Wiki Netgear WNDR3700 - OpenWrt Wiki - Monitor button actions 相關連結: 【韌體】ASUS WL-HDD2.5 改刷 OpenWrt Kamikaze with X-Wrt Webif² - PCZONE 討論區 【腳本】WifiToggle for DD-WRT - 以Reset 按鈕當作無線開關, 無線閒置則自動關閉訊號 - PCZONE 討論區 【韌體】Gargoyle Router Management Utility - PCZONE 討論區 此篇文章於 2011-04-27 06:24 PM 被 FYI 編輯。. |
回覆 |
散人 ![]() | 回覆: 【腳本】WifiToggle - 以 Reset/WPS/QSS 按鈕當作無線開關 感謝! 先收起來..... 寫韌體真的是很好玩。 |
回覆 |
|
![]() | ||||
主題 | 主題作者 | 討論版 | 回覆 | 最後發表 |
【腳本】WifiToggle for DD-WRT - 以Reset 按鈕當作無線開關, 無線閒置則自動關閉訊號 | FYI | -- 網 路 技 術 版 | 3 | 2010-04-10 09:49 PM |
請問如何遠端 reboot/reset VDSL ? | wureka | -- FTTB / FTTC / FTTH 光纖寬頻討論版 | 7 | 2009-09-27 05:48 PM |
【問題】Alcatel T07AW Reset | jamesex | ---- ADSL 軟 硬 體 技 術 | 1 | 2006-07-27 09:54 PM |
【求助】關於Alcatel T07A RESET | Kuang | ---- ADSL 軟 硬 體 技 術 | 12 | 2006-03-29 04:54 PM |
【求助】POWER & RESET | Daniel | -- 電 腦 硬 體 討 論 版 | 6 | 2003-05-08 02:52 PM |
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。