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