Activar 3G en TP-Link TL-MR3220
Introducción
Objetivo
El objetivo de este manual es explicar los pasos a seguir para activar la conexión del módem 3G en el modelo TP-Link TL-MR3220, especialmente en el caso de que no dispongamos de conexión a internet cableada que nos permita instalar los paquetes adicionales. En inglés puede consultarse este hilo del foro, y también para ver otras posibles opciones que no sean el servidor vsftpd en Linux.
Para una instalación genérica nos sirven los detalles indicados en tl-mr3420
Y para la configuración básica las notas de checks_and_troubleshooting
Sin embargo la página 3gdongle quizá nos falle en el tema de los paquetes requeridos (al ser genérico es poco concreto), aunque también va a depender de la versión de OpenWrt que vayamos a instalar. En este caso elegimos http://downloads.openwrt.org/snapshots/trunk/ar71xx/ que es la última compilación disponible (r29844 en el momento de escribir este manual).
Las últimas compilaciones pueden contener errores y siempre se corre cierto riesgo al instalarlas, por eso es bueno comprobar en los foros que no esté dando problemas con este modelo de router e informar de errores tras la instalación. | Algunas funciones pueden estar temporalmente fuera de servicio, por lo que si nos encontramos con una versión que funcione correctamente es buena idea tener una copia de seguridad (tanto de la imagen como paquetes adicionales necesarios) antes de probar suerte con una nueva compilación. |
Descargar paquetes
Lo primero es obtener todo lo que vamos a necesitar:
Descargamos la imagen “factory”1) http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-mr3220-v1-squashfs-factory.bin Y los paquetes adicionales http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/:
Para poder instalar con opkg desde nuestro servidor FTP:
- packages.gz
Teniendo en cuenta que los números de versión de los paquetes pueden haber variado en el snapshot actual, para disponer del editor Nano necesitamos:
- nano_2.2.6-1_ar71xx.ipk
- terminfo_5.7-5_ar71xx.ipk
- libncurses_5.7-5_ar71xx.ipk
Para tener acceso al módem 3G (como el MF190 del ejemplo, puesto que algunos modelos necesitan módulos específicos adicionales 2) ):
- chat_2.4.5-4_ar71xx.ipk
- comgt_0.32-9_ar71xx.ipk
- kmod-usb-serial_2.6.39.4-1_ar71xx.ipk
- kmod-usb-serial-option_2.6.39.4-1_ar71xx.ipk
- kmod-usb-serial-wwan_2.6.39.4-1_ar71xx.ipk
- libusb_0.1.12-2_ar71xx.ipk
- usb-modeswitch_1.2.0-2_ar71xx.ipk
- usb-modeswitch-data_20111023-1_ar71xx.ipk
Opcional es el soporte para discos USB (usb-drives) y los ya incluidos en la compilación genérica en su versión r29844
- kmod-usb2_2.6.39.4-1_ar71xx.ipk
- kmod-usb-core_2.6.39.4-1_ar71xx.ipk
- kmod-usb-ohci_2.6.39.4-1_ar71xx.ipk
Algunos puede que ya estén incluidos en el squashfs (o partición base de sólo lectura): podemos comprobarlo con el comando “opkg list” más adelante antes de ejecutar el wget. La razón de instalar el editor Nano es que en principio no disponemos de asistente web de configuración, así que es importante disponer de un editor de texto básico con el que estemos cómodos, aunque el comando uci nos resuelve casi todos los problemas. Estos paquetes siempre se pueden eliminar posteriormente, así que no estorban mientras aún quede espacio libre en la partición adicional jffs2 (aunque no sea mucho en nuestro caso).
Activar servidor FTP en nuestro PC
A continuación necesitamos instalar y activar un servidor FTP. En Ubuntu o Linux en general suele haber un montón de aplicaciones que nos servirían. En este caso usamos vsftpd, que es una variante sencilla y con un buen nivel de seguridad. Una vez instalado el paquete debemos configurarlo para aceptar clientes anónimos (está deshabilitado por defecto en Ubuntu), así que editamos /etc/vsftpd.conf -de nuestro pc- y nos aseguramos de que quede así:
# Allow anonymous FTP? (Disabled by default) anonymous_enable=YES
Con “sudo status vsftpd” vemos si el servidor FTP está activo, y en ese caso bastará ejecutar “sudo restart vsftpd” para que acepte la nueva configuración.
El servidor FTP está situado por defecto (generalmente) en /srv/ftp, así que deberemos copiar todos los paquetes ipk previamente descargados a ese lugar (claro está como root).
Con esto se supone que ya tenemos todo lo necesario. Ya sólo basta instalar el firmware, hacer el telnet a 192.168.1.1 para configurar la contraseña de root y entrar a continuación con SSH: “ssh root@192.168.1.1”3)
Método 1: Instalación manual
Copiar paquetes al router
Para instalar los paquetes que necesitamos primero hay que copiarlos a la memoria temporal.
Si ya establecimos la clave SSH los transferimos con SCP desde la PC:
scp *.ipk root@192.168.1.1/tmp/
Si por algún motivo seguimos usando telnet, hay que hacerlo desde el router. Si la dirección ip de nuestro pc es 192.168.1.101, eso lo hacemos con:
root@OpenWrt:~# cd /tmp root@OpenWrt:/tmp# wget ftp://192.168.1.101/blkid_1.41.12-2_ar71xx.ipk root@OpenWrt:/tmp# wget ftp://192.168.1.101/chat_2.4.5-4_ar71xx.ipk root@OpenWrt:/tmp# wget ...
y repetimos el wget con cada uno de los archivos (con tal que no tengamos activo ningún cortafuegos para la red local, si no, basta con desactivarlo temporalmente).
Para no hacer tantos wget, podemos hacer 1 solo paquete en la PC con todo lo que vamos a subir:
tar -cf stuff.tar *.ipk
Para luego descargarlo, en 1 solo paso, en el router:
wget -O- ftp://192.168.1.101/stuff.tar | tar -xC /tmp
Instalar con opkg
Una vez descargados bastaría con ejecutar (estando en /tmp):
root@OpenWrt:/tmp# opkg install *.ipk root@OpenWrt:/tmp# reboot
Método 2: Instalación automática
Como se explica en tl-mr3420.build también es posible configurar /etc/opkg.conf para acceder al servidor FTP local:
sed -i -e "s=http://.*$=ftp://192.168.1.100/packages=" /etc/opkg.conf opkg update opkg install comgt kmod-usb-serial-option kmod-usb-serial-wwan usb-modeswitch-data rm /overlay/etc/opkg.conf
Siempre que 192.168.1.100 sea la dirección que obtiene nuestro PC automáticamente, y en el directorio /srv/ftp/packages haya una colección de paquetes compatibles (ya sea descargada o compilada por nosotros).En caso de ser paquetes sueltos que no hayamos compilado nosotros deberemos haber descargado también el archivo packages.gz para que funcione correctamente.
Editar network y 3g.chat
Tras el reinicio podemos ver la configuración con “uci show network”. Para activar la conexión 3G debemos rellenar los valores correspondientes a nuestro módem, en este ejemplo un ZTE MF190 de Movistar España (que edito directamente con un nano /etc/config/network):
config 'interface' 'wan' option 'ifname' 'ppp0' option 'proto' '3g' option 'pincode' '1234' option 'device' '/dev/ttyUSB4' option 'apn' 'movistar.es' option 'service' 'umts' option 'username' 'movistar' option 'password' 'movistar'
O también lo puedo editar con UCI:
uci set network.wan.ifname=ppp0 uci set network.wan.proto=3g uci set network.wan.pincode=1234 uci set network.wan.device=/dev/ttyUSB4 uci set network.wan.apn=movistar.es uci set network.wan.service=umts uci set network.wan.username=movistar uci set network.wan.password=movistar uci commit network /etc/init.d/network restart
También debemos cambiar o revisar que sea correcto el número de teléfono de /etc/chatscripts/3g.chat, así que podemos ejecutar nano /etc/chatscripts/3g.chat o vi4) y dejarlo en (caso de Movistar):
OK "ATD*99#"
En ambos casos se cita sólo la parte de los archivos que necesitan modificarse (la interfaz wan y el número de teléfono), el resto se deja como está.
Problemas con el DNS en la conexión 3G
Si hay un error en la generación del archivo /tmp/resolv.conf.auto 5) se puede usar /tmp/resolv.conf.ppp (o añadir los servidores DNS manualmente en los PC que queramos tengan acceso a internet). Esto lo podemos hacer editando directamente /etc/config/dhcp (nuevamente, sólo se cita la opción que necesitamos modificar, el resto se deja como esté):
config 'dnsmasq' option 'resolvfile' '/tmp/resolv.conf.ppp'
Actualizando la página correspondiente en LuCI o por medio del comando uci en la consola SSH, como en este ejemplo:
uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.ppp uci commit dhcp /etc/init.d/dnsmasq reload
En caso de que se usen múltiples interfaces de red (a través del multiwan), esta configuración puede generarnos algún problema si cambiamos automáticamente a otro interfaz de red.
y listo...
Basta con pinchar el módem USB y reiniciar para que se inicie la conexión móvil ADSL, aunque podemos probar antes con “ifup wan” y a continuación “ifconfig”, que nos mostraría algo así como:
3g-wan Link encap:Point-to-Point Protocol inet addr:xx.xx.xx.xx P-t-P:10.64.64.64 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:9234 errors:0 dropped:0 overruns:0 frame:0 TX packets:8518 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:5994334 (5.7 MiB) TX bytes:1182206 (1.1 MiB)
A partir de este momento ya disponemos de conexión a internet, por lo que podemos descargar los paquetes directamente con el comando opkg y añadir cualquier otro que nos interese. Por ejemplo LuCI (de luci.essentials): 6)
root@OpenWrt:~# opkg update root@OpenWrt:~# opkg install luci root@OpenWrt:~# opkg install luci-proto-3g root@OpenWrt:~# opkg install luci-i18n-spanish root@OpenWrt:~# /etc/init.d/uhttpd enable root@OpenWrt:~# /etc/init.d/uhttpd start
Sin embargo instalar LuCI significa agotar prácticamente el espacio libre para nuevos paquetes, razón por la que es omitido por defecto. Si no vamos a experimentar con el router el entorno LuCI es bastante completo y permite administrar el router de forma sencilla. Pero aunque se consiga algo de espacio extra eliminando nano (más ncurses y terminfo), parece insuficiente si queremos incluir el soporte para discos USB, por ejemplo (es decir, en ese caso hay que hacerse amigo de la consola y de “uci”... , al menos hasta disponer de espacio libre disponible si nos decantamos por un extrootfs).
Recuperar tras un error de configuración
El failsafe funciona perfectamente en este router y esta versión de OpenWrt. Se saca al encender el router, pulsando el botón frontal -el QSS- repetidamente hasta que el led parpaeda con rapidez. Para acceder al router necesitamos configurar nuestra red manualmente, por ejemplo con 192.168.1.2 /24 y el resto en blanco o con 192.168.1.1, y hacemos telnet sobre 192.168.1.1:
root@(none):/ mount_root root@(none):/ rm -r /overlay/* root@(none):/ reboot -f
Con esto hemos limpiado la configuración conflictiva y al reiniciar el router volvemos al estado inicial antes de que configurásemos nada. Recomendable: generar una copia de seguridad en la página de LuCI con una configuración que funcione, para ahorrarnos el paso de configurar todo de nuevo manualmente (al restaurar también se incluye la clave que tuviéramos configurada entonces).
Sin embargo, si sabemos con seguridad que el problema se debe a un error presente en la configuración del archivo network, podríamos utilizar un método para regenerarlo con los valores iniciales por defecto y dejar el resto de la configuración intacta:
root@(none):/ mount_root root@(none):/ mv /overlay/etc/network /overlay/etc/network.fail root@(none):/ /rom/etc/uci-defaults/network root@(none):/ reboot -f
Nota sobre tftpboot
En el caso de que os veáis en la necesidad de acceder al puerto serie, el servidor tftp que he utilizado con éxito (y sin necesidad de configurar nada) ha sido tftpd-hpa, y la ruta donde colocar el “code.bin” es /var/lib/tftpboot.
*99***1#y dejemos las comillas y el ATD tal cual-, pulsamos :w para guardar, :q para salir. Un detalle a destacar: en este ejemplo debemos borrar asteriscos, pero si necesitamos introducir estos caracteres es mejor se use nano.