Entry tags:
wifitoggle для OpenWRT позволяет включать/выключать WiFi при помощи кнопки WPS на роутере
Для прошивки OpenWRT для роутеров существует множество различных пакетов. Больше всего мне нравятся блокировщик рекламы adblock и отключение wi-fi по расписанию Wi-Fi Schedule. К счастью, эти пакеты также предлагают luci пакеты для того, чтобы можно было изменять настройки из панели управления роутера.
Ещё один полезный для меня пакет - wifitoggle, который позволяет включать/выключать Wi-Fi на роутеру по нажатию кнопки на нём. При этом данная кнопка настраивается. Поскольку большинство роутеров идёт с кнопкой WPS, пользоваться которой всё равно не приходится (из-за небезопасности WPS), то проще всего использовать именно эту кнопку.
Установить wifitoggle можно и из панели управления роутера (зайдите на https://openwrt.lan и выберите в меню System -> Software). Также пакет можно установить и в командой строке, тем более что настраивать его придётся там же.
Ещё один полезный для меня пакет - wifitoggle, который позволяет включать/выключать Wi-Fi на роутеру по нажатию кнопки на нём. При этом данная кнопка настраивается. Поскольку большинство роутеров идёт с кнопкой WPS, пользоваться которой всё равно не приходится (из-за небезопасности WPS), то проще всего использовать именно эту кнопку.
Установить wifitoggle можно и из панели управления роутера (зайдите на https://openwrt.lan и выберите в меню System -> Software). Также пакет можно установить и в командой строке, тем более что настраивать его придётся там же.
- Для начала подключитесь к https://openwrt.lan с логином root и вашем паролем, используя SSH клиент (например, Putty)
- Для установки пакета введите команду
opkg update && opkg install wifitoggle
- Посмотреть настройки можно при помощ команды uci show wifitoggle
uci show wifitoggle
- По умолчанию timer имеет значение 600, что означает, что Wi-Fi автоматически отключится через 600 секунд (10 минут) после нажатия на кнопку WPS. Я изменил значение на 7200 секунд (2 часа) при помощи команды
uci set wifitoggle.@wifitoggle[0].timer=7200
- Также настроил автоматическое выключение Wi-Fi при помощи следующих команд
uci set wireless.@wifi-device[0].disabled=1
uci set wifitoggle.@wifitoggle[0].persistent=0 - Можно показывать статус работы Wi-Fi при помощи светодиода. Для вывода списка светодиодов можно использовать команду
ls /sys/class/leds/
У роутера Linksys EA3500 в списке появляется всего один диод. А вот WNR3500L их гораздо больше. В том числе есть диод для Wi-Fi и для WPS. Я использовал светодиод для WPS, а не Wi-Fiuci set wifitoggle.@wifitoggle[0].led_sysfs="название_диода"
По умолчанию Wi-Fi светодиод на WNR3500L при использовании wifitoggle работал довольно странно. Он переставал постоянно гореть при включенном Wi-Fi, но зато мерцал при передаче данных на подключенное устройство по Wi-Fi.
С WPS диодом происходила другая странность. Он горел при выключенном Wi-Fi, независимо от значениеwifitoggle.@wifitoggle[0].led_disable_default
равного 1 или 0 и не горел при включённом. Перезагрузка роутера не помогала. Помогите разобраться. - Не всегда кнопка на роутере называется WPS. Чтобы показать названия кнопок, выполните в командой строке:
mkdir -p /etc/hotplug.d/button
cat << "EOF" > /etc/hotplug.d/button/buttons
logger "the button was ${BUTTON} and the action was ${ACTION}"
EOF
Далее нажмите на кнопку на роутере, после чего выполните командуlogread
Для кнопки wps у меня получилосьThu Feb 20 09:02:07 2020 user.notice root: the button was wps and the action was pressed
Thu Feb 20 09:02:07 2020 user.notice root: the button was wps and the action was released
Кстати, openwrt позволяет вешать различные действия на кнопки при коротком и длинном нажатии.
Например, мои настройки выглядят так:
wifitoggle.@wifitoggle[0]=wifitoggle
wifitoggle.@wifitoggle[0].button='wps'
wifitoggle.@wifitoggle[0].persistent='0'
wifitoggle.@wifitoggle[0].timer='7200'
wifitoggle.@wifitoggle[0].led_enable_trigger='timer'
wifitoggle.@wifitoggle[0].led_enable_delayon='500'
wifitoggle.@wifitoggle[0].led_enable_delayoff='500'
wifitoggle.@wifitoggle[0].led_disable_default='0'
