¿Te gustaría realizar un script para que busque automáticamente las redes Wi-Fi conocidas alrededor de la Raspberry Pi B+ y dado el caso que no se encuentre ninguna, que está se conecte a internet usando una Data Card?.
Si continuas leyendo este post, encontrarás posibles soluciones que te ayudarán a lograr esto de una forma muy sencilla.
Precondiciones
Adaptador Wireless USB usado: EW-7811Un (EDIMAX)
- Data Card usada: Huawei E173u-6
- Hardware usado: Raspberry Pi B+ (debería funcionar para cualquier familia de Raspberry Pi u otro hardware).
- Sistema Operativo usado: Raspbian.
Pasos:
Únicamente debe ejecutar estos simples comandos en la terminal de la Raspberry Pi:
# Archivo para configurar la salida a internet (Editar (i), guardar (Esc + :w) y salir (Esc + :x)) sudo vim.tiny /etc/network/interfaces
Este archivo debería de contener algo muy similar a esto:
auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
En este mismo archivo se podría hacer la configuración de la red Wi-Fi, pero para este ejemplo se va a usar wpa_supplicant. Ingrese en la terminal:
wpa_cli # Busca las redes Wi-Fi > scan OK # Muestra las redes. Esto es IMPORTANTE, ya que aquí se muestra # el nombre de la red a usar, la autenticación y el tipo de # encriptación a usar para la posterior configuración. > scan_results # Agregar una red > add_network 0 > set_network 0 ssid "NombreDeLaRedWiFi" OK > set_network 0 psk "ContraseñaDeLaRedWiFi" OK # Protocolos: WPA y/o RSN. > set_network 0 proto RSN OK # Este es la clave de administración o el tipo de seguridad de la # red, puede ser WPA-PSK (WPA/WPA2), WPA-EAP, NONE(Abierta/WPE), # IEEE8021X , WPA-PSK-SHA256 o WPA-EAP-SHA256 > set_network 0 key_mgmt WPA-PSK OK # Este es el tipo de encriptación de la red, puede ser # CCMP(WPA2), TKIP(WPA) o NONE > set_network 0 pairwise TKIP OK # Lista IEEE 802.11 de algoritmos de autenticación permitidos: # OPEN (requerido para WPA/WPA2), SHARED, y LEAP. > set_network 0 auth_alg OPEN OK # Con este comando la RPI se debería de conectar a internet > enable_network 0 OK # Guardar la configuración > save_config OK # Salir > quit
Todo debería dar OK. Importante tener claro que esta aplicación lo que hace es modificar este archivo:
sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
El mismo debería de verse muy similar a esto:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="NombreDeLaRedWiFi" psk="ContraseñaDeLaRedWiFi" proto=RSN key_mgmt=WPA-PSK pairwise=TKIP auth_alg=OPEN }
Por otro lado, si la RPI aún no se ha conectado a internet, puede:
# Desconectar la interface wlan0 sudo ifdown wlan0 # Y luego volverla a levantar sudo ifup wlan0
Ahora usted tiene acceso a internet desde su Raspberry Pi (usar ifconfig para ver la Ip asignada). Pero qué pasa si está fuera del rango dado por su red Wi-Fi conocida, pues podría usar una Data Card con una SIM preferida por su proveedor de telefonía móvil, en este caso, para Costa Rica se usará una del ICE (Kolbi). Tan solo debe de ingresar estos comandos en la terminal de la RPI:
# Instalar ppp sudo apt-get install usb-modeswitch ppp # Descargar sakis3g sudo wget https://www.dropbox.com/s/chdacgf6svzvddm/sakis3g.tar.gz?dl=0 sudo mv sakis3g.tar.gz\?dl\=0 sakis3g.tar.gz sudo tar -xzvf sakis3g.tar.gz sudo chmod +x sakis3g sudo mkdir -p /opt/ncubo/ sudo mv sakis3g /opt/ncubo/ sudo chown root:root /opt/ncubo/sakis3g sudo ln -s /opt/ncubo/sakis3g /usr/bin
Para dar permisos ingrese en la consola:
# Añadir al final de siguiente archivo: su-usuario ALL = NOPASSWD: /opt/ncubo/sakis3g sudo visudo
Para ver los pasos de la instalación de la Data Card (sudo sakis3g –interactive), puede ver el siguiente video:
Si está usando una SIM del ICE, se pone el PIN de la SIM (en el caso que lo requiera), en el APN_USER y APN_PASS se usó “kolbi3g”. Una vez terminado de ver y establecer la configuración dada en el video, debería de tener acceso a internet con la Data Card (tome en cuenta que si tiene un plan prepago, podría verse disminuido su saldo).
Dado que esta configuración es temporal, o sea, cuando la RPI se reinicie, es necesario volver a establecer la configuración. Para evitar esto y lograr que se conecte automáticamente cuando inicia la RPI se deben ejecutar estos simples pasos:
Si está usando una SIM del ICE, se pone el PIN de la SIM (en el caso que lo requiera), en el APN_USER y APN_PASS se usó “kolbi3g”. Una vez terminado de ver y establecer la configuración dada en el video, debería de tener acceso a internet con la Data Card (tome en cuenta que si tiene un plan prepago, podría verse disminuido su saldo).
Dado que esta configuración es temporal, o sea, cuando la RPI se reinicie, es necesario volver a establecer la configuración. Para evitar esto y lograr que se conecte automáticamente cuando inicia la RPI se deben ejecutar estos simples pasos:
# Copiar el ID de la Data Card (como se muestra en la imagen de abajo) lsusb
sudo vim.tiny /etc/sakis3g.conf
Y agregar este texto, junto con el ID visto anteriormente, junto con el APN y el PIN:
USBDRIVER="option" USBINTERFACE="0" APN="kolbi3g" APN_USER="kolbi3g" APN_PASS="kolbi3g" SIM_PIN="5998" MODEM="12d1:1436"
Crear un script para la configuración automática de la Data Card:
sudo vim.tiny /etc/init.d/autoconnectnet
Luego se agrega el siguiente código:
#*************************************************** #! /bin/sh # /etc/init.d/autoconnectnet ### BEGIN INIT INFO # Provides: noip # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Simple script to start a program at boot # Description: A simple script from www.stuffaboutcode.com which will start / stop a program a boot / shutdown. ### END INIT INFO case "$1" in start) sleep 10 echo "connecting via sakis3g" # run application you want to start /opt/ncubo/sakis3g --sudo "connect" ;; stop) echo "dissconnecting via sakis3g" # kill application you want to stop /opt/ncubo/sakis3g --sudo "disconnect" ;; *) echo "Usage: /etc/init.d/autoconnectnet {start|stop}" exit 1 ;; esac exit 0 #*********************************************************
Y por último, ejecutar en terminal:
# Dar permisos de ejecución sudo chmod 755 /etc/init.d/autoconnectnet # Inicializar la Data Card sudo /etc/init.d/autoconnectnet start # Hacer que este script se ejecute automáticamente cuando la RPI inicia sudo update-rc.d autoconnectnet defaults
¡A disfrutar del acceso a internet desde su Raspberry Pi B+!