Openwrt wifi on off

Заметки эникейщика

Статьи и заметки об установке и настройке Windows, Linux, маршрутизаторов и т.д.

Включение и выключение WiFi кнопкой на роутере с OpenWrt

Операция проводилась на роутере TP-Link TL-WR1043ND с прошивкой OpenWrt Backfire 10.03.1 (r29592) по инструкции с официального сайта.
Подключаемся к роутеру по ssh и создаем директорию
# mkdir -p /etc/hotplug.d/button
переходим в эту директорию
# cd /etc/hotplug.d/button
создаем в ней файл
# touch 00-button
и вписываем туда
# vi 00-button
следующие строки

. /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" ] && < [ -z "$min" -o -z "$max" ] && eval $handler [ -n "$min" -a -n "$max" ] && < [ $min -le $SEEN -a $max -ge $SEEN ] && eval $handler >> > config_load system config_foreach do_button button

в файл
# vi /etc/config/system
дописываем следующие строки

config button option 'button' 'BTN_1' option 'action' 'pressed' option 'handler' '/usr/bin/wifionoff'

переходим в директорию
# cd /usr/bin
создаем файл
# touch wifionoff
меняем права доступа
# chmod 777 wifionoff
вписываем туда
# vi wifionoff
следующие строки
#!/bin/sh
SW=$(uci -q get wireless.@wifi-device[0].disabled)
[ «$SW» == «1» ] && uci set wireless.@wifi-device[0].disabled=0
[ «$SW» == «1» ] || uci set wireless.@wifi-device[0].disabled=1
wifi

перезагружаем роутер
# reboot

Источник

Wi-Fi on/off buttons

Quite a bit of devices come with at least one button (apart from the omnipresent reset/recovery button, which isn’t convenient to press), which in the stock firmware is used for WPS, toggling Wi-Fi, or whatever, and on OpenWrt is not usually connected to any function.

In this article we will install and configure a package called wifitoggle, which allows us to configure one of such buttons as a Wi-Fi on/off (toggle) button.

Setup steps

This package lacks a graphical interface so for the setup we will need to connect to the OpenWrt device using SSH (remote terminal).

# uci show wifitoggle wifitoggle.@wifitoggle[0]=wifitoggle wifitoggle.@wifitoggle[0].button='wps' wifitoggle.@wifitoggle[0].timer='600' wifitoggle.@wifitoggle[0].persistent='0' 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'

wifitoggle uci section

The wifitoggle section contains these settings:

Читайте также:  Ubuntu wifi config file
Name Type Required Default Description
button String yes wps internal name of the button to use. Usually the internal name is similar to what the button did in stock firmware. See notes below this table.
persistent Boolean yes 0 Commit changes to wireless config file, persistent after reset. Always 0 if Timer enabled
timer Integer yes 600 Seconds for Wi-Fi to be turned off, 0 for no timer
led_sysfs String no none Led to use, see Led configuration for possible values
led_enable_trigger String yes timer led trigger name, see Led configuration for other possible led trigger names
led_enable_delayon Integer yes 500 Milliseconds to turn led on after button pressed
led_enable_delayoff Integer yes 500 Milliseconds to turn led off after button pressed
led_disable_default Boolean yes 0 Led state for Wi-Fi disabled, 1 to turn it off if Wi-Fi is off

Common internal names for button (by searching through the source code) are:

wps = Wi-Fi protected service, most likely to be free in OpenWrt and also default in wifitoggle

wifi = also used for buttons that toggle Wi-Fi on/off in stock firmware, yes there is a bit of creativity going on.

power = used to power up some devices, may be bound already to system shutdown function

Here’s a way to identify the internal name of your button if just trying the above list blindly does not work.

Troubleshooting

If the script isn’t working on your Wi-Fi networks, or it works only on some but not all, try deleting and creating again the ones that don’t work.

Default Wi-Fi networks look like this in the config, and it seems the script can’t parse that.

wireless.default_radio0=wifi-iface wireless.default_radio0.device='radio0' wireless.default_radio0.network='lan' wireless.default_radio0.mode='ap' wireless.default_radio0.ssid='myWifi' wireless.default_radio0.encryption='psk2+tkip+ccmp' wireless.default_radio0.key='password' wireless.default_radio0.disabled='1'

This is how it looks after I deleted and created it again (and is actually working)

wireless.@wifi-iface[0]=wifi-iface wireless.@wifi-iface[0].device='radio0' wireless.@wifi-iface[0].mode='ap' wireless.@wifi-iface[0].ssid='myWifi' wireless.@wifi-iface[0].encryption='psk2+tkip+ccmp' wireless.@wifi-iface[0].key='password'

Anyone that can fix the script please send a PR from the link below.

Читайте также:  Wi fi area maps

Wi-Fi disable after boot

If you like to have Wi-Fi disabled after power on, set it disabled by default and then set wifitoggle to NOT save Wi-Fi state changes to permanent memory (so that whatever the state was on reboot it would reset to disabled) with the following:

uci set wireless.@wifi-device[0].disabled=1 uci set wifitoggle.@wifitoggle[0].persistent=0 uci commit

Or add this to /etc/rc.local or in Startup (LuCI System — Startup):

uci set wireless.@wifi-device[0].disabled=1 wifi

Behind-the-scenes info for additional tweaking

This package drops a script called 50-wifitoggle into /etc/hotplug.d/button and this script relies on the OpenWrt Hotplug infrastructure to be called when you press the button.
The other component of its package is the uci configuration file to integrate it with the uci system. See the source here

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website. OK More information about cookies

Self-registration in the wiki has been disabled.
If you want to contribute to the OpenWrt wiki, please post HERE in the forum or ask on IRC for access.

Except where otherwise noted, content on this wiki is licensed under the following license:
CC Attribution-Share Alike 4.0 International

Источник

wifitoggle для OpenWRT позволяет включать/выключать WiFi при помощи кнопки WPS на роутере

Для прошивки OpenWRT для роутеров существует множество различных пакетов. Больше всего мне нравятся блокировщик рекламы adblock и отключение wi-fi по расписанию Wi-Fi Schedule. К счастью, эти пакеты также предлагают luci пакеты для того, чтобы можно было изменять настройки из панели управления роутера.

Ещё один полезный для меня пакет — wifitoggle, который позволяет включать/выключать Wi-Fi на роутеру по нажатию кнопки на нём. При этом данная кнопка настраивается. Поскольку большинство роутеров идёт с кнопкой WPS, пользоваться которой всё равно не приходится (из-за небезопасности WPS), то проще всего использовать именно эту кнопку.

Читайте также:  Леново b590 есть wifi

Установить wifitoggle можно и из панели управления роутера (зайдите на https://openwrt.lan и выберите в меню System -> Software). Также пакет можно установить и в командой строке, тем более что настраивать его придётся там же.



    Для начала подключитесь к https://openwrt.lan с логином root и вашем паролем, используя SSH клиент (например, WinSCP для Windows, Putty для Linux). В Ubuntu достаточно выполнить ssh в Ubuntu в терминале:

Например, мои настройки выглядят так:

wifitoggle.@wifitoggle[0]=wifitoggle
wifitoggle.@wifitoggle[0].button=’wps’
wifitoggle.@wifitoggle[0].persistent=’0′
wifitoggle.@wifitoggle[0].timer=’7200′
wifitoggle.@wifitoggle[0].led_enable_tri gger=’timer’
wifitoggle.@wifitoggle[0].led_enable_del ayon=’500′
wifitoggle.@wifitoggle[0].led_enable_del ayoff=’500′
wifitoggle.@wifitoggle[0].led_disable_de fault=’0′


По умолчанию timer имеет значение 600, что означает, что Wi-Fi автоматически отключится через 600 секунд (10 минут) после нажатия на кнопку WPS. Я изменил значение на 7200 секунд (2 часа) при помощи команды

uci set wifitoggle.@wifitoggle[0].timer=7200

uci set wireless.@wifi-device[0].disabled=1
uci set wifitoggle.@wifitoggle[0].persistent=0

На Linksys EA3500 работающий Wi-Fi может быть не на radio0, а на radio1 или radio2. Конечно же при этом Wi-Fi Toggle начинает работать включать/выключать Wi-Fi при нажатии на кнопку WPS, только если выполнить одну из следующих команд:

uci set wireless.@wifi-device[1].disabled=1
uci set wireless.@wifi-device[2].disabled=1

Для внесения изменений введите команду

У роутера Linksys EA3500 в списке появляется всего один диод. А вот WNR3500L их гораздо больше. В том числе есть диод для Wi-Fi и для WPS. Я использовал светодиод для WPS, а не Wi-Fi

uci set wifitoggle.@wifitoggle[0].led_sysfs=»наз вание_диода»

По умолчанию Wi-Fi светодиод на WNR3500L при использовании wifitoggle работал довольно странно. Он переставал постоянно гореть при включенном Wi-Fi, но зато мерцал при передаче данных на подключенное устройство по Wi-Fi.

mkdir -p /etc/hotplug.d/button

cat /etc/hotplug.d/button/buttons
logger «the button was $ and the action was $»
EOF

Далее нажмите кнопку на роутере, после чего выполните команду

Для кнопки 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

Источник

Оцените статью
Adblock
detector