Cómo conectarse a internet usando una red Wi-Fi o una Data Card desde una Raspberry Pi B+
· Actualizado el
¿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 esta se conecte a internet usando una Data Card?.
Si continúas 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:
El vídeo original ya no está disponible.
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

Crear el archivo de configuración de sakis3g:
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="1234"
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+!
Agradezco a Ncubo por brindarme el equipo necesario para realizar el post.