В корпусе роутера TP-Link WDR4900 имеется целая одна аппаратная кнопка, промаркированная как “WPS/Reset”. Задействуем ее в OpenWrt для переключения Wi-Fi передатчиков, а на случай непредвиденностей добавим на эту же кнопку функцию самоуничтожения сброса настроек (командой firstboot).
Составим скрипт 00-wifi и разместим его в каталог /etc/hotplug.d/button:
# Hardware button handler for WDR4900 # Copyright (C) 2013 Erinome.net . /lib/functions/leds.sh if [ "$BUTTON" = "reset" ] ; then if [ "$ACTION" = "released" ] ; then rlock="/var/run/.resetreq.lock" if [ -e $rlock ] ; then if [ $SEEN -ge 15 ] ; then logger 'hotplug.button: performing reset' led_timer "tp-link:blue:system" 500 500 firstboot -y reboot else logger 'hotplug.button: reset cancelled' led_on "tp-link:blue:system" rm $rlock fi exit fi if [ $SEEN -ge 15 ] ; then logger 'hotplug.button: reset requested' led_timer "tp-link:blue:system" 100 100 touch $rlock exit fi if [ $SEEN -ge 2 ] ; then radionum="radio1" else radionum="radio0" fi logger "hotplug.button: switching wireless $radionum" case "$(uci -q get wireless.$radionum.disabled)" in 1) uci set wireless.$radionum.disabled=0 wifi up $radionum ;; *) uci set wireless.$radionum.disabled=1 wifi down $radionum ;; esac fi fi
Теперь возможны следующие действия:
- Короткое нажатие (менее 2 с) – включает или отключает Wi-Fi передатчик на 5 ГГц;
- Среднее нажатие (более 2 с) – включает или отключает Wi-Fi на 2.4 ГГц;
- Длительное нажатие (более 15 с) – активирует режим ожидания подтверждения сброса.
При переходе в этот режим системный светодиод (второй слева на передней панели) начинает мигать с частотой 10 Гц. Для подтверждения сброса и перехода к исходным настройкам необходимо повторно нажать и удерживать кнопку не менее 15 с, для отмены сброса необходимо просто однократно нажать на ту же кнопку. В процессе сброса системный светодиод мигает с частотой 2 Гц, после выполнения возврата к исходным настройкам роутер автоматически перезапустится.
Чтобы данный скрипт не пропал при обновлении прошивки, не забудьте добавить его в /etc/sysupgrade.conf.
Данный скрипт позволяет быстро и относительно удобно переключать состояние беспроводных сетей, а также выполнить ресет настроек на случай допущения серьезных ошибок при переконфигурировании устройства.