25 October 2012

(DD-WRT) WHR-AM54G54でWifi LEDを有効化するスクリプト

BUFFALO WHR-AM54G54 無線ブロードバンドルータにDD-WRTをインストールすると、802.11aのLEDが点灯しなくなり、802.11b/gのLEDも最初に通信が行われるまで点灯しない。

このLEDをWifiに接続された機器がある時のみ点灯するように、スクリプトを作成してみる。

DD-WRTのWeb設定画面より、管理 → コマンド実行 のタブを開き、実行コマンドの入力欄に次のシェルスクリプを入力して「起動時スクリプトとして保存」を押す。

#!/bin/sh # get interface name associate with wifi ch-0 and ch-1 WL0_NAME=`nvram get wl0_ifname` WL1_NAME=`nvram get wl1_ifname` WAN_NAME=`nvram get wan_ifname` while sleep 1;do # 802.11b/g LED if [ -z `wl -i $WL0_NAME assoclist` ] then /sbin/gpio enable 3 else /sbin/gpio disable 3 fi # 802.11a LED if [ -z `wl -i $WL1_NAME assoclist` ] then /sbin/gpio enable 2 else /sbin/gpio disable 2 fi # Bridge LED on by wan interface traffic TRANS=`ifconfig $WAN_NAME|grep bytes` if [ "$TRANS" != "$TRANS_PREV" ] then /sbin/gpio disable 1 else /sbin/gpio enable 1 fi TRANS_PREV=$TRANS done

ちなみに、$WL0_NAME = eth1, $WL1_NAME = eth2, $WAN_NAME = vlan1 が設定される。
どの変数に、何の値がセットされているのかは、

# nvram show

というコマンドで表示できる。

詳しくは、DD-WRTのスクリプト マニュアル

Hardware (nvramコマンドについて説明)
Wl command
Script Execution
LED Scripts