motivación
La idea es utilizar este módem 3G junto a una Raspberry Pi para proporcionar conectividad a una pequeña red doméstica o empresarial. La ventaja de utilizar este dispositivo es que el kernel de linux lo reconoce correctamente. Además, no genera problemas con la dualidad propia (también es un almacenamiento usb) que tienen otros dispositivos similares.
comprobaciones iniciales para el Huawei E220
Como he dicho anteriormente, este dispositivo está soportado por el kernel y además está documentado por Debian, así que tenemos documentación oficial acerca de él. Concretamente en https://wiki.debian.org/Huawei/E220, se puede consultar el proceso de instalación. Primero es necesario comprobar que cuando se inserta el USB deben aparecer varios dispositivos nuevos.
# ls -l /dev/ttyUSB* crw-rw---- 1 root dialout 188, 0 nov 4 16:21 /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 1 nov 4 16:21 /dev/ttyUSB1 crw-rw---- 1 root dialout 188, 2 nov 4 16:21 /dev/ttyUSB2 crw-rw---- 1 root dialout 188, 3 nov 4 16:21 /dev/ttyUSB3
instalación de software necesario
Puesto que las conexiones vía 3G son conexiones ppp necesitamos un dialer que realice las acciones necesarias. En este caso voy a utilizar wvdial con la configuración apropiada de mi operador móvil.
# apt-get install wvdial
Una vez instalado wvdial y sus dependencias toca configurar. En /etc/wvdial.conf tendremos que poner:
[Dialer Defaults] New PPPD = yes Stupid Mode = 1 Modem Type = 3G Modem Baud = 460800 Modem = /dev/ttyUSB0 ISDN = 0 [Dialer poweron] Init1 = AT+CFUN=1 [Dialer poweroff] Init1 = AT+CFUN=0 [Dialer movistar] Init2 = AT Init3 = AT&F&D2&C1E0V1S0=0 Init4 = AT+IFC=2,2 Init5 = ATS0=0 Init6 = AT Init7 = AT&F&D2&C1E0V1S0=0 Init8 = AT+IFC=2,2 Phone = *99***1# Password = MOVISTAR Username = MOVISTAR
En mi caso he quitado el pin de la tarjeta SIM. Si la tarjeta tuviera el pin establecido, tocaría descomentar la tercera línea del apartado movistar, para que wvdial se lo pase al módem.
Para realizar la llamada se lanza el comando:
# wvdial movistar
wvdial inicializa el módem pasando además los parámetros de conexión indicados en wvdial.conf realizando finalmente la conexión a través de ppp. En caso de que la conexión sea correcta se nos proporciona una dirección IP, un GATEWAY y un par de DNS. Podemos comprobarlo con un ifconfig.
ppp0 Link encap:Point-to-Point Protocol inet addr: ip_publica P-t-P: gw Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:990 errors:0 dropped:0 overruns:0 frame:0 TX packets:12 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:80742 (78.8 KiB) TX bytes:341 (341.0 B)
Iniciando ppp0 al inicio
Ya hemos visto como realizar la conexión como un cliente 3G convencional, pero para sacar provecho real en un dispositivo que actúa como servidor, es necesario que la conexión esté disponible desde el arranque.
Inicialmente tenemos que modificar el archivo /etc/network/interfaces con:
iface ppp0 inet wvdial provider movistar
En provider hay que declarar el nombre que hemos usado en /etc/wvdial.conf
Ahora bien, como estamos tratando de un dispositivo USB y que además tenemos que tener en cuenta que se tiene que registrar en la red 3G del proveedor, podemos encontrarnos con que cuando el sistema intente realizar la llamada ppp el dispositivo no esté disponible para ello.
Yo he optado por una solución efectiva pero que seguro se podría mejorar. En concreto, si añadimos un sleep 20 y lanzamos ifup ppp0 en el /etc/rc.local le damos tiempo al pincho 3G a que se inicie correctamente antes de realizar la llamada.
También hay que tener la precaución de quitar la línea auto ppp0 en caso de haberla configurado en /etc/network/interfaces.
2 Comments
Martin Garmendia
¡Gracias! no te imaginas que alegría saber que puedo usar un modem que tenía por ahí guardado con la pi.
He probado la configuración de movistar y sin problemas. Por si a alguien le interesa dejo aquí la configuración para Masmovil que es la misma que para FreedomPop:
[Dialer masmovil]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
Init3 =
Init4 = AT+CGDCONT=1,”IP”,”internetmas”,””,0,0
Baud = 3600000
Username = off
Password = off
New PPPD = yes
Phone = *99*#
Dial Command = ATDT
Stupid Mode = 1
Compuserve = 0
Force Address =
Idle Seconds = 0
Carrier Check = no
ISDN = 0
Auto DNS = 1
Remote Name = “*”
jvalera
Gracias por la información que nos aportas!