Activar 3G en TP-Link TL-MR3220

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).

Posible inestable 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.

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).

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)

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

Una vez descargados bastaría con ejecutar (estando en /tmp):

      root@OpenWrt:/tmp# opkg install *.ipk
      root@OpenWrt:/tmp# reboot

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.

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á.

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.

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).

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.


1)
El comando sysupgrade funciona correctamente con esta versión -usando la imagen openwrt-ar71xx-generic-tl-mr3220-v1-squashfs-sysupgrade.bin-, probado con éxito tanto en consola como a través de LuCI.
2)
Por ejemplo, el anclaje usb de algunos teléfonos android necesitaría los paquetes de kmod-usb-net, kmod-usb-net-cdc-ether y kmod-usb-net-rndis -instalando este último con acceso a internet se instalan automáticamente las otras dependencias- y crear un interfaz con un cliente dhcp conectado con usb0.
3)
Aunque también es posible realizar casi todas las operaciones que se describen a continuación en la consola del telnet inicial, a la hora de ejecutar el opkg update sobre la conexión 3g necesitaremos haber reiniciado para que funcione correctamente.
4)
Caso de no disponer de nano, aún podemos recurrir a vi, aunque sea poco amistoso. Ejecutamos vi /etc/chatscripts/3g.chat, nos situamos en la línea correspondiente y editamos el número de teléfono -importante que sólo cambiemos el número, que es por defecto
*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.
5)
Quizá debido a la ausencia de resolveip en el sistema base instalado.
6)
El error de “pagina mal formada” en la función “join nertwork” es un bug en español y sólo parece funcionar cuando tenemos seleccionado el idioma inglés manualmente.
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2019/03/22 15:03
  • by vgaetera