Por fin he conseguido encender y apagar el wifi con los botones y que se indique mediante un led. Voy a explicar lo que me ha funcionado, después de muchas pruebas, por si alguien quiere hacerlo. Primero aclarar que en mi compilación no funcionaba ni el botón ni el led del wifi (no sé si con parches posteriores funcionan) por lo que use el botón RESTART y el led DSL. Todo sacado de
http://wiki.openwrt.org/doc/howto/hardware.button1º Identificar el nombre de los botones.
A) Nos conectamos por ssh
B) mkdir -p /etc/hotplug.d/button
C) nos vamos a ese directorio.
D) Creamos el archivo “button” (debe ser ejecutable) con el siguiente contenido:
#!/bin/sh
logger $BUTTON
logger $ACTION
E) Pulsamos un botón. (En mi caso utilice RESTART)
F) Logread
G) Como salida de logread al final del todo aparecerá algo así:
Jan 1 00:01:15 OpenWrt user.notice root: BTN_1
Jan 1 00:01:15 OpenWrt user.notice root: pressed
Jan 1 00:01:16 OpenWrt user.notice root: BTN_1
Jan 1 00:01:16 OpenWrt user.notice root: released
Esto quiere decir que hemos pulsado el botón BTN_1 (ese es su nombre) y después lo hemos liberado. Repitiendo estos 2 pasos con cada botón tendremos el nombre de cada uno.
2º Configuración del botón.
A) wget -O /etc/hotplug.d/button/00-button
http://dev.openwrt.org/export/21216/trunk/target/linux/atheros/base-files/etc/hotplug.d/button/00-button La alternativa a esto es crear /etc/hotplug.d/button/00-button con el siguiente contenido:
. /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
Se trata de un script y debe ser ejecutable.
B) Editar /etc/config/system y añadirle al final:
config button
option button wps
option action released
option handler "/usr/bin/wifionoff"
option min 0
option max 3
C) Crear el archivo ejecutable /usr/bin/wifionoff con el siguiente contenido:
#!/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
Con esto con pulsar RESTART (parte trasera junto a la toma de alimentación) se enciende y apaga el wifi.
3º Configurar el LED para que se encienda y se apague junto con el wifi.
Yo lo he configurado desde LUCI aunque me ha dado un problema.
Entramos en LUCI y nos vamos a sistema – configuración led.
Aparecen varias casillas:
Nombre: aquí pones el que quieras, yo puse wifi.
Nombre de LED: Eliges el que quieras que se encienda, en mi caso elegí el DSL.
Estado: Si quieres que este activado por defecto lo marcas (en mi caso lo marque así si el wifi se activa el led se enciende y si se desactiva se apaga).
Trigger en castellano creo que es lanzador. Aquí está el problema, aparece “NONE” como única opción. Así llegados a este punto guarde y aplique los cambios edite /etc/config/system donde ya aparecía la sección LED y añadí
option 'trigger' 'netdev'
Guardas el cambio y vuelves a LUCI – SYSTEM – Config LED
En mi caso ya aparecían el resto de las opciones:
Device: En mi caso seleccione wlan0.
Trigger mode: En mi caso seleccione Link.
Eso es todo.