2 de febrer del 2013

Wifi ON/OFF amb un botó a Gargoyle (TP-Link TL-WR1043ND)

Tal com vaig "amenaçar" després de posar Gargoyle (Openwrt) a un router  TP-Link TL-WR1043ND, penso continuar escrivint sobre el mateix tema. Concretament, avui serà sobre com utilitzar el botó de QSS de l'encaminador per activar/desactivar la xarxa sense fils.


Ja fa molt de temps que procuro tenir la xarxa sense fils desactivada quan no l'utilitzo. Alguns encaminadors porten un botó per fer-ho, però n'hi ha pocs. I el meu flamant TP-Link TL-WR1043ND no és un d'aquests.

Però, justament, la gràcia de posar-hi un firmware de codi obert és la llibertat d'afegir noves funcionalitats. De fet, hi ha un paquet anomenat wifitoggle que hauria de fer la feina, però que fins fa dos dies (literalment) estava trencat. I encara caldrà esperar fins que arribi una versió de Gargoyle on estigui corregit. Així que, de moment, ho solucionarem d'una altra manera.

En primer lloc, accedim a l'encaminador per ssh i creem un script anomenat wifionoff, copiant-lo a /sbin i sense oblidar-nos de fer que sigui executable:
#!/bin/sh

# Copiar a /sbin/wifionoff
# Fer executable amb chmod +x /sbin/wifionoff
# Afegir controls del butons a /etc/config/system

SW=$(uci -q get wireless.@wifi-device[0].disabled)

if [ "$SW" == "0" ] ; then
 echo 0 > /sys/class/leds/tp-link\:green\:qss/brightness
else
 echo 1 > /sys/class/leds/tp-link\:green\:qss/brightness
 echo timer > /sys/class/leds/tp-link\:green\:qss/trigger
 echo 2000  > /sys/class/leds/tp-link\:green\:qss/delay_off
 echo 2000  > /sys/class/leds/tp-link\:green\:qss/delay_on
fi

[ "$SW" == "1" ] && uci set wireless.@wifi-device[0].disabled=0
[ "$SW" == "1" ] || uci set wireless.@wifi-device[0].disabled=1
wifi
Tot seguit, haurem d'afegir controls pels botons a /etc/config/system (editant amb vi):
config 'button' 'wifionoff'              
        option 'button' 'wps'            
        option 'action' 'pressed'        
        option 'handler' '/sbin/wifionoff'
                                          
config led 'led_onoff'                    
        option 'sysfs' 'tp-link:green:qss'
        option 'trigger' 'timer'          
        option 'mode' 'link'              
        option 'default' '1'              
        option 'delayon' '2000'           
        option 'delayoff' '2000'          
I bàsicament ja ho tenim. Reiniciem l'encaminador amb reboot i ara el botó QSS ens permet engegar i parar la xarxa sense fils quan vulguem (sense haver d'utilitzar la interfície web). A més, el LED de dalt de tot, QSS, parpelleja lentament quan la xarxa sense fils està activa.

Útil, veritat?

Cap comentari:

Publica un comentari a l'entrada