Estas aquiContenido / Modem USB 3,5G ZTE MF de Movistar con Mandriva Linux 2010
Modem USB 3,5G ZTE MF de Movistar con Mandriva Linux 2010
Por Fernando Acero
Siguiendo con la serie de artículos en la que explico la forma en la que hacer funcionar los distintos modelos de modem USB [1], [2], [3], [4], en esta ocasión le toca al ZTE MF 626 de Telefónica. A la vista de que el Escritorio Movistar para Linux no tiene soporte para Mandriva 2010 por el momento, me he puesto a trastear y lo he logrado hacer funcionar con esta distribución, aunque he de decir que el sistema no es demasiado fino.
El principal problema de este dispositivo, es que se comporta como un CDROM, como un módem 3,5G y como un lector de tarjetas MicroSD y todo ello, usando un mismo Interfaz USB. Además, cuando se configura como módem monta cuatro dispositivos ttyUSB, numerados desde el 0 al 3 (Nota: estos números pueden cambiar en función de diversos factores ya que se asignan de forma dinámica)...
Hacerlo funcionar es relativamente sencillo, una vez que he descubierto que aunque el módem acepta mandatos por el dispositivo ttyUSB1, acepta mandatos y recibe y envía datos a través del dispositivo ttyUSB3, que en teoría no está soportado por la configuración que proporciona Mandriva en este momento. Por ello, lo primero que tenemos que hacer, es preparar el Centro de redes de Mandriva para que funcione con este módem y lo más sencillo, es hacerlo a las bravas, logrando que las variables usb_control_device y tty_device apunten al dispositivo ttyUSB3, en lugar de a cualquiera de los otros dispositivos que monta el módem. Hay que señalar, que esta modificación puede que haga que nuestro programa no funcione con otros dispositivos, por lo que es conveniente guardar el programa original sin modificar, aunque lo más normal, es que usemos siempre el mismo módem.
Para ello haremos lo siguiente:
1) Abrimos una consola como root y vamos al directorio del programa mediante el mandato cd /usr/lib/libDrakX/network/connection
2) Copiamos el archivo mediante el mandato cp cellular_card.pm cellular_card.pm.bak
3) Editamos el programa cellular_card.pm para que en lugar de esto:
"/dev/ttyUSB0";
}
sub get_control_device {
my ($self) = @_;
my $tty_device = $self->get_tty_device;
if ($tty_device eq "/dev/ttyUSB0") {
for my $id (2, 1) {
my $usb_control_device = "/dev/ttyUSB". $id;
return $usb_control_device if -e $usb_control_device;
}
}
$tty_device;
}
aparezca esto otro:
"/dev/ttyUSB3";
}
sub get_control_device {
my ($self) = @_;
my $tty_device = $self->get_tty_device;
if ($tty_device eq "/dev/ttyUSB3") {
my $usb_control_device = "/dev/ttyUSB3";
return $usb_control_device if -e $usb_control_device;
}
$tty_device;
}
4) Lo grabamos y salimos.
5) Ahora, insertamos el módem en un puerto USB y esperamos un momento hasta que se monte como unidad cdrom, que más o menos, será unos segundos después de que se encienda la luz roja (asumimos que la tarjeta tiene activado el PIN). Seguidamente, haremos clic en el icono de control de los dispositivos USB, seguido de clic sobre el dispositivo movistar y finalmente sobre la flecha hacia arriba que aparece a la derecha del cuadro de diálogo. Con ello, desmontaremos la unidad de cdrom. Como veremos, se apaga la luz roja del dispositivo, y al rato se vuelve a encender; eso significa que ya se ha configurado como módem en el sistema.


6) Ahora, si hacemos clic sobre el icono del Centro de Redes, aparecerá el módem ZTE. Durante la configuración, el sistema nos preguntará por el PIN de la tarjeta y el operador, que en este caso es España y Movistar. Tras introducir todos estos datos, el sistema detectará si hay cobertura del operador, lo que nos lo indicará mediante el medidor de señal a la derecha y la palabra movistar, a la izquierda del Centro de redes.

7) Para acceder a Internet, bastará con hacer clic sobre el botón Conectar. Si el proceso falla, lo mejor es desconectar el módem, volverlo a insertar en el puerto USB, tras esperar unos segundos y empezar desde cero. Lo mismo debemos hacer, si nos hemos desconectado y queremos volvernos a conectar de nuevo. Mediante el botón Supervisar, accederemos a una ventana mediante la podemos controlar los bytes que hemos subido o bajado y así controlar el consumo.

Trasteando con esto, me he dado cuenta de que el botón "Show detailed network statistics" del Network monitor, que nos serviría para ver los consumos acumulados, no funciona adecuadamente (ver imagen superior).
Revisando el contenido de /var/log/messages, he visto que el demonio vnstatd lanza el siguiente error:
vnstatd[xxxx]: Error: Database load failed even when using backup. Aborting.
Lo mismo se obtiene si se usa el mandato nvstat desde una consola de root.
La solución es abrir una consola como root, ir al directorio /var/lib/vnstat y eliminar todos los archivos que hay en él, teniendo en cuenta que hay archivos ocultos, por ejemplo usando los mandatos, que eliminarían la base de datos principal y la de seguridad (archivo oculto) de la interfaz eth0.
rm -rf eth0 rm -rf .eth0
Después, crearemos la base de datos nueva mediante el mandato.
vnstat -u -i eth0
Este mandato hay que repetirlo con cada interfaz que tengamos en el sistema, por ejemplo, si usamos el módem usb, también debemos crear una base de datos para la interfaz pp0 mediante el mandato:
vnstat -u -i pp0
Ye he enviado el correspondiente aviso del error. Por cierto, de nada sirve actualizar el programa a una versión posterior, si no se eliminan las bases de datos que dan problemas.
AUTOMATIZACIÓN DEL PROCESO DE EXPULSIÓN DE LA UNIDAD DE CDROM
Como hemos dicho, para que el sistema funcione, es necesario expulsar (no vale desmontar) la Unidad de CDROM, que es como se reconoce el dispositivo inicialmente cuando se inserta el el puerto USB, lo que se puede automatizar. Para ello, basta con crear archivo /etc/udev/rules.d/zte_eject.rules y escribir en su interior lo siguiente:
SYSFS{idVendor}=="19d2", SYSFS{idProduct}=="2000", RUN+="/usr/bin/eject%k", OPTIONS+="last_rule"
EL PROBLEMA CON MANDRIVA 2008.1
Para que el sistema reconozca el módem y aparezca en el Centro de redes de Mandriva 2008.1, además de todo lo anterior, es necesario crear el archivo /etc/udev/rules.d/zte_device.rules con el siguiente contenido:
SYSFS{idVendor}=="19d2", SYSFS{idProduct}=="0066", RUN+="/sbin/modprobe
usbserial vendor=19d2 product=0066", OPTIONS+="last_rule"
Esta regla de udev, carga el módulo correspondiente (usbserial) para que funcione el módem, como se puede ver, el producto tiene el código 0066, pero puede ser distinto en función del modelo o el fimware de mismo, más adelante explico la forma en la que se puede descubrir el valor adecuado.
Y el archivo
/usr/share/hal/fdi/information/20thirdparty/20-zte-mf626.fdi, con el siguiente contenido:
<!– -*- SGML -*- –> <deviceinfo version=”0.2?> <device> <!– ZTE MF626 HSDPA USB Modem –> <match key=”@info.parent:usb.vendor_id” int=”0×19d2?> <match key=”@info.parent:usb.product_id” int=”0×0066?> <match key=”@info.parent:usb.interface.number” int=”3?> <append key=”modem.command_sets” type=”strlist”>GSM-07.07</append> <append key=”modem.command_sets” type=”strlist”>GSM-07.05</append> <append key=”info.capabilities” type=”strlist”>modem</append> </match> </match> </match> </device> </deviceinfo>
Hay que recordar, que la línea:
<match key="@info.parent:usb.product_id" int=”0×0066?>
puede cambiar en función del número de dispositivo que se cree al expulsar la unidad de CDROM.
Como Mandriva 2008.1 no dispone de soporte para las redes españolas, debemos configurar los datos de conexión manualmente. En el caso de Movistar hay que introducir los siguientes datos:
Nombre del punto de acceso: movistar.es Usuario de la cuenta: movistar Contraseña de la cuenta: movistar
INSTRUCCIONES ÚTILES PARA DESCUBRIR COSAS SOBRE EL MÓDEM 3,5G
Lo primero que debemos hacer antes de ponernos a trastear es activar la consola de mensajes, a la que accederemos mediante la combinación de teclas Alt + Ctrl + F12 en nuestra Mandriva 2010. Para ello, usaremos el icono "Configurar su computadora" del menú Herramientas | Herramientas del sistema y tras introducir la contraseña de root, seleccionaremos la secuencia de mandatos Seguridad | Configurar sistema de seguridad, permisos y auditoría. En el cuadro de diálogo que nos aparece, seleccionaremos la pestaña System security y buscaremos la variable ENABLE_CONSOLE_LOG. Tras hacer doble clic sobre ella, seleccionaremos como New value "Yes", seguido de la pulsación del botón Aceptar y un clic sobre el icono con forma de disco duro que hay en la parte superior izquierda de la ventana. Finalmente aceptaremos los cambios y cerraremos las ventanas.
Ahora, cuando reiniciemos el sistema y usemos la combinación de teclas Alt + Ctrl + F12, nos aparecerán los mensajes que produce el módem cuando lo insertamos en el puerto USB, o le enviamos mandatos. Para volver al sistema gráfico, hay que usar la combinación de teclas Alt + Ctrl + F7.
Para conocer los puertos ttyUSB que usa el módem para recibir las instrucciones y/o enviar y recibir datos, he utilizado los mandatos:
export COMGTPIN="xxxx"
xxxx se corresponde con el pin de nuestra tarjeta SIM, que se almacena en una variable de entorno.
y
comgt -d /dev/ttyUSBx PIN [enter]
En el que he variado el valor de x, para probar los cuatro puertos que usa el módem (del 0 al 3). Si el módem no recibe mandatos por ese puerto, nos aparecerá algo parecido a esto:
***SIM ERROR*** Check device port configuration. Check SIM is inserted Test SIM in a mobile phone?
Cuando el dispositivo acepte el PIN cambiará el color de la luz de rojo a azul parpadeante.
Otro mandato interesante, es lsusb. Cuando se conecta el módem al puerto USB, si no hemos modificado los archivos de /etc/udev/ rules.d/ y tecleamos lsusb como root, nos aparecerá el listado de los dispositivos USB conectados a nuestro sistema. Uno de ellos será:
Bus 002 Device 001: ID 19d2:2000
Este se corresponde a la unidad de CDROM que monta el sistema inicialmente. Tras expulsar la unidad CDROM, si usamos de nuevo el mandato lsusb, nos aparecerá esto, es decir, el dispositivo se reconoce como un módem 3,5G:
Bus 002 Device 001: ID 19d2:0066
El número 19d2 es el código del fabricante. Los números 2000 y 0066, son los números de dispositivo (lector de CDROM y módem 3,5G). Estos son los valores que he utilizado para crear las reglas adecuadas en /etc/udev/rules.d.
Es posible que con distintas versiones del firmware, o que con otros dispositivos de ZTE estos valores puedan variar, por lo que deberemos adaptar nuestros mandatos a esos valores.
NOTA: En ocasiones, Mandriva 2008.1 no coge bien las DNS, o tarda mucho en cogerlas, por lo que es necesario cerrar la sesión, desconectar el módem del puerto USB y comenzar de nuevo.
Copyleft 2010 Fernando Acero Martín. Verbatim copying, translation and distribution of this entire article is permitted in any digital medium, provided this notice is preserved
- Conecta o crea cuenta para participar

Fernando, no sé si lo recuerdas, pero hace unos añitos publiqué una solución para Fedora 8, en la que se hacía uso de la utilidad usb_modeswitch para cambiar la "personalidad" del usb del modem.
http://oasis.dit.upm.es/~jantonio/personal/mf620/
El comando usb_modeswitch es ahora standard en Fedora 12. De hecho este modem se soporta
de serie con el NetworkManager. No sé si existe en Madriva, pero no debe ser demasiado
complicado el portarlo
Un saludo
Jonsy
Gegen die Dummheit kämpfen selbst die Götter vergebens - Schiller
Hola Jonsito:
Sí, efectivamente, usb_switch también está disponible para Mandriva (usb_modeswitch-1.1.0-2mdv2010.0.i586.rpm), después de probar varias configuraciones, al final logré que funcionase, siendo el principal problema el contenido de las líneas:
MessageContent="5553424312345678000000000000061b000000030000000000000000000000"
Y
TargetProduct= 0x0031
Que debe ser:
TargetProduct= 0x0066
Pero el efecto es el mismo que hacer eject, pasando el dispositivo de 2000 a 0066 y al ser más complicado de configurar, opté por la primera opción.
A los que instalen usb_modeswitch desde la página del proyecto, les recomiendo que se bajen e instalen el paquete usb_modeswitch-data y el archivo usb_modeswitch.conf más actualizado. Hay que recordar que de este archivo hay que retirar los comentarios "#" y ";" de las líneas correspondientes a nuestro dispositivo.
Un saludo, Fernando Acero
Bueno primero un saludo a todos! mi problema es el siguiente: Hace un par de semanas instale Mandriva free 2010 la de 64 bits con KDE, soy nuevo en esto de los SO Linux y en mandriva aun mas! algunas cosas no las puedo hacer como navegar con el modem ZTE MF100 de tigo (prepago), antes usaba ubuntu 9.10 y no me costo configurar el modem! pero con mandriva es diferente he tratado de descargar el usb_modeswitch con ejecutable para mandriva y no lo encuentro! al menos no el que necesito para la version que tengo instalada y luego esta el problema de la instalacion! necesito que me ayuden!!!!! si no me tengo que volver a ubuntu y la verdad me gusta mas mandriva!... por cierto Fernando Acero quisiera que me explicaras mas los primeros pasos de tu manual( disculpa la ignorancia).... mis agradecimientos de antemano y ¡¡¡Larga Vida al Rock & Roll!!!
Si no funciona el procedimiento con Mandriva 2008.1, cambiar el contenido del archivo zte_device.rules de este:
SYSFS{idVendor}=="19d2", SYSFS{idProduct}=="0066", RUN+="/sbin/modprobe
usbserial vendor=19d2 product=0066", OPTIONS+="last_rule"
A este otro:
SYSFS{idVendor}=="19d2", SYSFS{idProduct}=="0066", RUN+="/sbin/modprobe
usbserial vendor=0x19d2 product=0x0066", OPTIONS+="last_rule"
Es decir, poniendo los valores tras vendor y product en hexadecimal.
Asimismo, en el archivo /usr/share/hal/fdi/information/20thirdparty/20-zte-mf626.fdi las líneas:
deberían ser:
Es decir, que los símbolos de interrogación deberían ser comillas. Cosas del copiar y pegar desde la consola al navegador.
También quiero decir que este procedimiento me ha funcionado adecuadamante tanto en Mandriva como en Ubuntu usando otros dispositivos de ZTE. Solamente se tiene que tener la precaución de cambiar el valor de la variable product por el adecuado al dispositivo que estemos usando. Recordad que para saber ese valor es necesario usar el mandato lsusb.
Un saludo, Fernando Acero