Problema con Modem 3G (ZTE MF622) al tratar de instalar USB_MODESWITCH
Hola a todos, antes que nada les quiero contar esta pequeña historia para que sepan el contexto de mi problema (opcional de leer, si quieren lean directamente MI PROBLEMA):
HISTORIA:
Este verano como buen geek que soy se me ocurrió adentrarme al mundo de Linux, leí bastante información sobre que distribución elegir, como se hacían las cosas básicas, etc. y finalmente quede ente Debian y Ubuntu. Finalmente decidí iniciarme con Debian ya que era la distribución madre, más complicada y aparte era con la que mas iba a aprender a la fuerza jeje (en todo momento supe con lo que me estaba metiendo).
Fui a la página oficial de Debian y copie los link de los CDs oficiales de Lenny y se los pasé a un amigo que tiene ADSL para que me los fuera descargando de apoco con el Flashget. Lo instalé y me di cuenta que Linux sin estar conectado a internet es como estar en una cueva totalmente oscura iluminándote con una cajita de fósforos, sobre todo porque no podía instalar cosas con sólo hace apt-get PAQUETE, ni buscar información para resolver problemas (porque si tengo alguna duda tengo que entrar al Windows y navegar desde allí y después guardar la info en un pendrive para poder leerla en Debian). Aparte no me reconocía algunas cosas de la notebook como el wifi, la webcam y el lector de huellas (pero eso es otro tema que después voy a tratar de resolver). Lo principal para mí era encontrar la forma de conectarme a internet desde mi modem 3G y después resolver todo lo demás, y en un futuro si todo marcha bien abandonar Windows para siempre.
Desde Windows conectado a internet, busqué cómo hacer para que Debian me lo reconociera y encontré varios post al respecto en diferentes webs, todos decían más o menos lo mismo, que había que instalar un programita usb_modeswitch para que Linux reconozca al dispositivo como modem y no como pendrive o un CD; también wvdial para conectarse a internet, y libusb. En el wiki de esta web: http://www.esdebian.org/wiki/modem-usb-zte-mf626-debian vi que lo reconocía sin el usb_modeswitch porque tenía el kernel 2.6.30 (yo tengo el kernel 2.6.26-2-amd64) y como yo no tengo ni idea de compilar el núcleo (bah, en realidad he leído algo pero no me animo mucho sin tener acceso a internet para solventar dudas) decidí descargar las fuentes del usb_modeswitch de la web oficial de este programa y lo guarde en un pendrive. A los otros programas mencionados los instale desde los CDs utilizando el gestor de paquetes Synaptic y aquí viene el problema.
MI PROBLEMA:
Cuando intente instalar el usb_modeswitch (primero lo descomprimí en el directorio /opt) y luego voy hasta el directorio donde se encuentran los archivos desde la consola y cuando lanzo make install (como ROOT) me sale el siguiente error:
ztrike@Matrix:~$ pwd
/home/ztrike
ztrike@Matrix:~$ cd /opt/usb-modeswitch-1.1.0
ztrike@Matrix:/opt/usb-modeswitch-1.1.0$ su
Contraseña:
Matrix:/opt/usb-modeswitch-1.1.0# make install
gcc -Wall -l usb -o usb_modeswitch usb_modeswitch.c
usb_modeswitch.c:66:17: error: usb.h: No existe el fichero o el directorio
usb_modeswitch.c: In function ‘main’:
usb_modeswitch.c:343: warning: implicit declaration of function ‘usb_init’
usb_modeswitch.c:346: warning: implicit declaration of function ‘usb_set_debug’
usb_modeswitch.c:348: warning: implicit declaration of function ‘usb_find_busses’
usb_modeswitch.c:349: warning: implicit declaration of function ‘usb_find_devices’
usb_modeswitch.c:397: error: dereferencing pointer to incomplete type
usb_modeswitch.c:398: error: dereferencing pointer to incomplete type
usb_modeswitch.c:400: warning: implicit declaration of function ‘usb_open’
usb_modeswitch.c:400: warning: assignment makes pointer from integer without a cast
usb_modeswitch.c:407: error: dereferencing pointer to incomplete type
usb_modeswitch.c:409: error: dereferencing pointer to incomplete type
usb_modeswitch.c:411: error: dereferencing pointer to incomplete type
usb_modeswitch.c:561: warning: implicit declaration of function ‘usb_close’
usb_modeswitch.c: In function ‘deviceDescription’:
usb_modeswitch.c:576: error: dereferencing pointer to incomplete type
usb_modeswitch.c:577: warning: implicit declaration of function ‘usb_get_string_simple’
usb_modeswitch.c:577: error: dereferencing pointer to incomplete type
usb_modeswitch.c:586: error: dereferencing pointer to incomplete type
usb_modeswitch.c:587: error: dereferencing pointer to incomplete type
usb_modeswitch.c:596: error: dereferencing pointer to incomplete type
usb_modeswitch.c:597: error: dereferencing pointer to incomplete type
usb_modeswitch.c: In function ‘deviceInquire’:
usb_modeswitch.c:629: warning: implicit declaration of function ‘usb_claim_interface’
usb_modeswitch.c:634: warning: implicit declaration of function ‘usb_clear_halt’
usb_modeswitch.c:636: warning: implicit declaration of function ‘usb_bulk_write’
usb_modeswitch.c:642: warning: implicit declaration of function ‘usb_bulk_read’
usb_modeswitch.c:669: warning: implicit declaration of function ‘usb_release_interface’
usb_modeswitch.c: In function ‘resetUSB’:
usb_modeswitch.c:685: warning: implicit declaration of function ‘sleep’
usb_modeswitch.c:687: warning: implicit declaration of function ‘usb_reset’
usb_modeswitch.c: In function ‘switchConfiguration’:
usb_modeswitch.c:753: warning: implicit declaration of function ‘usb_set_configuration’
usb_modeswitch.c: In function ‘switchAltSetting’:
usb_modeswitch.c:769: warning: implicit declaration of function ‘usb_set_altinterface’
usb_modeswitch.c: In function ‘switchHuaweiMode’:
usb_modeswitch.c:786: warning: implicit declaration of function ‘usb_control_msg’
usb_modeswitch.c:786: error: ‘USB_TYPE_STANDARD’ undeclared (first use in this function)
usb_modeswitch.c:786: error: (Each undeclared identifier is reported only once
usb_modeswitch.c:786: error: for each function it appears in.)
usb_modeswitch.c:786: error: ‘USB_RECIP_DEVICE’ undeclared (first use in this function)
usb_modeswitch.c:786: error: ‘USB_REQ_SET_FEATURE’ undeclared (first use in this function)
usb_modeswitch.c: In function ‘switchSonyMode’:
usb_modeswitch.c:872: warning: assignment makes pointer from integer without a cast
usb_modeswitch.c: In function ‘detachDriver’:
usb_modeswitch.c:909: warning: implicit declaration of function ‘usb_get_driver_np’
usb_modeswitch.c:926: warning: implicit declaration of function ‘usb_detach_kernel_driver_np’
usb_modeswitch.c: In function ‘checkSuccess’:
usb_modeswitch.c:982: warning: assignment makes pointer from integer without a cast
usb_modeswitch.c:986: error: dereferencing pointer to incomplete type
usb_modeswitch.c:986: error: dereferencing pointer to incomplete type
usb_modeswitch.c: In function ‘search_devices’:
usb_modeswitch.c:1093: warning: implicit declaration of function ‘usb_get_busses’
usb_modeswitch.c:1093: warning: assignment makes pointer from integer without a cast
usb_modeswitch.c:1093: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1095: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1095: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1097: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1097: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1098: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1119: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1126: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1126: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1128: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1138: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1142: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1144: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1146: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1147: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1153: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1153: error: dereferencing pointer to incomplete type
usb_modeswitch.c: In function ‘find_first_bulk_output_endpoint’:
usb_modeswitch.c:1176: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1179: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1180: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1181: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1181: error: ‘USB_ENDPOINT_TYPE_MASK’ undeclared (first use in this function)
usb_modeswitch.c:1181: error: ‘USB_ENDPOINT_TYPE_BULK’ undeclared (first use in this function)
usb_modeswitch.c:1182: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1182: error: ‘USB_ENDPOINT_DIR_MASK’ undeclared (first use in this function)
usb_modeswitch.c:1183: error: dereferencing pointer to incomplete type
usb_modeswitch.c: In function ‘find_first_bulk_input_endpoint’:
usb_modeswitch.c:1194: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1197: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1198: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1199: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1199: error: ‘USB_ENDPOINT_TYPE_MASK’ undeclared (first use in this function)
usb_modeswitch.c:1199: error: ‘USB_ENDPOINT_TYPE_BULK’ undeclared (first use in this function)
usb_modeswitch.c:1200: error: dereferencing pointer to incomplete type
usb_modeswitch.c:1200: error: ‘USB_ENDPOINT_DIR_MASK’ undeclared (first use in this function)
usb_modeswitch.c:1201: error: dereferencing pointer to incomplete type
make: *** [usb_modeswitch] Error 1
Matrix:/opt/usb-modeswitch-1.1.0# ¿Qué es lo que hice mal? ¿Qué es lo que debería hacer para conectarme a internet? Por favor que alguien me ayude, no se por donde seguir, estoy desesperado !! 
- Inicie sesión o regístrese para enviar comentarios
- 3183 lecturas


Pues lo que yo veo con el fósforo es que si realmente estas haciendo lo que sea que diga el README el primer error que te sale es que le falta el archivo usb.h
que paquetes de modeswith descargaste, hya que fijarse bien en las dependencias, mira aqui
http://packages.debian.org/sid/usb-modeswitch los que estan en rojo son las dependencias asi que para que funcione debes tenerlas todas instaladas.
Ahora dices que el kernel 2.6.30 te reconoce el modem.....pues fácil, cuadra tus repositorios para que apunten a debian squeeze (testing) y de ahy instalas el kernel 2.6.32, no creo que haya problema al hacerlo, es mas, probablemente te reconocerá los dispositivos de tu laptop que el kernel 2.6.26 no reconoce, y en esos mismos repositorios estan los paquetes de modeswith, asi que solo tendras que darles instalar.
Intenta hacerlo de esta forma y te aseguro que mejoraran las cosas, asi me sucedió a mi, me reconoció todos los dispositivos, para hacer esto deberas conectarte a internet de otra forma, cableada seria la mas valida (dices que ni el wifi funciona), que alguen te preste la conexión si no tienes.
Hace poco tuve una experiencia similar con la rama lenny/stable; así que en principio modifiqué los repositorios y tuve un sistema mixto unos días, para ello -como había visto en otro hilo del foro- cree el archivo /etc/apt/apt.conf con la línea:
APT::Default-Release "testing";
Tras editar /etc/apt/sources.list añadiendo los repositorios squeeze/testing, ejecuté #aptitude update e instalé usb-modeswitch desde los repositorios. (Más tarde me decidí a actualizar todo el sistema a testing, pero eso es otra historia).
Una vez instalado usb-modeswitch, hay que editar el archivo de configuración /etc/usb-mosdeswitch.conf descomentando las líneas que se refieren a tu marca y modelo de modem, tal y como se indica en el mismo archivo de configuración. En mi caso:
########################################################
# Novatel MC990D
#
# Contributor: Joakim Wennergren
DefaultVendor= 0x1410
DefaultProduct= 0x5020
Interface= 0
# only for reference and 0.x versions
# MessageEndpoint=0x01
MessageContent="5553424312345678000000000000061b000000020000000000000000000000"
########################################################
El programa usb-modeswitch se ejecuta como usb_modeswitch. La primera vez que lo ejecuté, no me reconocía el modem, así que jugue con los valores de la variable Interface, cambié el valor por defecto de la variable Interface= 5 por el de Interface= 0 , y sí me lo reconoció. Luego puedes ver con #lsusb los cambios, y con #dmesg algo más de información sobre el modem. Espero que te sirva, un saludo.
que paquetes de modeswith descargaste, hya que fijarse bien en las dependencias, mira aqui
http://packages.debian.org/sid/usb-modeswitch los que estan en rojo son las dependencias asi que para que funcione debes tenerlas todas instaladas.
Ahora dices que el kernel 2.6.30 te reconoce el modem.....pues fácil, cuadra tus repositorios para que apunten a debian squeeze (testing) y de ahy instalas el kernel 2.6.32, no creo que haya problema al hacerlo, es mas, probablemente te reconocerá los dispositivos de tu laptop que el kernel 2.6.26 no reconoce, y en esos mismos repositorios estan los paquetes de modeswith, asi que solo tendras que darles instalar.
Intenta hacerlo de esta forma y te aseguro que mejoraran las cosas, asi me sucedió a mi, me reconoció todos los dispositivos, para hacer esto deberas conectarte a internet de otra forma, cableada seria la mas valida (dices que ni el wifi funciona), que alguen te preste la conexión si no tienes.
Muchas gracias guilbert. Una pregunta ¿Puedo descargar los archivos de las dependencias y guardarlos en un pendrive y después instalarlos con Synaptic? Porque no tengo forma de conectarme a internet si no es con este modem.
Y con el tema de pasarme a testing (Squeeze) ¿Lo podría hacer descargando el primer Cd desde la web oficial usando Windows?
O de ultima intentare compartir la conexión con un cable de red cruzado con una PC de un amigo que tiene XP (una vez ya lo intenté pero renegué un buen rato y no logré)
Hace poco tuve una experiencia similar con la rama lenny/stable; así que en principio modifiqué los repositorios y tuve un sistema mixto unos días, para ello -como había visto en otro hilo del foro- cree el archivo /etc/apt/apt.conf con la línea:
APT::Default-Release "testing";
Tras editar /etc/apt/sources.list añadiendo los repositorios squeeze/testing, ejecuté #aptitude update e instalé usb-modeswitch desde los repositorios. (Más tarde me decidí a actualizar todo el sistema a testing, pero eso es otra historia).
Una vez instalado usb-modeswitch, hay que editar el archivo de configuración /etc/usb-mosdeswitch.conf descomentando las líneas que se refieren a tu marca y modelo de modem, tal y como se indica en el mismo archivo de configuración. En mi caso:
########################################################
# Novatel MC990D
#
# Contributor: Joakim Wennergren
DefaultVendor= 0x1410
DefaultProduct= 0x5020
Interface= 0
# only for reference and 0.x versions
# MessageEndpoint=0x01
MessageContent="5553424312345678000000000000061b000000020000000000000000000000"
########################################################
El programa usb-modeswitch se ejecuta como usb_modeswitch. La primera vez que lo ejecuté, no me reconocía el modem, así que jugue con los valores de la variable Interface, cambié el valor por defecto de la variable Interface= 5 por el de Interface= 0 , y sí me lo reconoció. Luego puedes ver con #lsusb los cambios, y con #dmesg algo más de información sobre el modem. Espero que te sirva, un saludo.
Muchísimas gracias por tu ayuda, el problema sería que para realizar todo esto tendría que poder acceder a internet desde Debian.
¿No lo podría hacer desde algún Cd de Debian (yo tengo grabados hasta el 10 de Lenny) e instalándolo con el gestor de paquetes Synaptic (que es con el que me manejo)?
usb.h es un archivo de cabecera que se encuentra en los linux-headers
yo intentaría instalarlos a ver si así me funciona el make install
una opcion que te doy es que vallas a un cibercafe y que te dejen conectar tu maquina para hacer las respectivas actualizaciones, eso solo lo harías una vez, ya que la idea es que al instalar el nuevo kernel y modeswitch funcione tu modem 3G, la otra seria que descargaras los DVD's del alpha 1 de squeeze (testing),o el cd 1 y lo agregas al synaptic y actualizas el kernel, y para el modeswitch ya te habia dado el enlase, descargas el .deb y lo instalas ejecutando en consola como root gdebi-gtk
una opcion que te doy es que vallas a un cibercafe y que te dejen conectar tu maquina para hacer las respectivas actualizaciones, eso solo lo harías una vez, ya que la idea es que al instalar el nuevo kernel y modeswitch funcione tu modem 3G, la otra seria que descargaras los DVD's del alpha 1 de squeeze (testing),o el cd 1 y lo agregas al synaptic y actualizas el kernel, y para el modeswitch ya te habia dado el enlase, descargas el .deb y lo instalas ejecutando en consola como root gdebi-gtk
Un millón de gracias guilber !!!!!! Es justo lo que necesitaba saber
. Ya mismo me voy a poner a probar alguna de tus soluciones y cualquier cosa te aviso.
Hola UFO, perdona no haberte respondido a la brevedad, pues ya te dieron varias pistas y como siempre digo en GNU/Linux hay mil formas de lograr el mismo resultado, esta desde que instales Debian version squeeze, hasta hacer las cosas de forma manual, la buena noticia era que Squeeze ya tiene el kernel 2.6.32 y muchisimas mejoras al sistema, dentro de las cualees te puedo comentar refiriendonos especificamente al modem que Debian te instala automáticamente los archivos de configuración de USB_MODESWITCH.
Para hacer un poco más entendible los conceptos, usb_modeswtich lo unico que hace es expulsar el modo CDROM del modem para que este se reinicialize y monte la microSD (sdX) y simultaneamente se active el modem, eso es lo unico que hace, en el tutorial explico que no uso USB_Modeswtich por que aparte de confuso era a mi parecer inestable, y lo que hago es realizar el proceso de cambio (expulsion del CDROM) manualmente, ya sea por medio de entorno grafico (como se ve en el tutorial) o en terminal usando el comando:
#eject srXDonde X es la nomenclatura de unidad CDROM que el sistema asigno al disco virtual de tu modem (0,1,n segun las unidades de cd-dvdrom tengas), bueno con Squeeze olvidate de todo esto ya todo es automático, lo unico que tienes que configurar es a wvdial como explico en el tutorial, y los apliques graficos no los uso, prefiero la consola, rapido y seguro:
#wvdial zteTu tienes el mismo problema que yo tenia al principio, mi unico modo de conexion a internet era el modem, si no quieres bajarte una imagen de Squeeze, puedes bajar archivos manualmente e instalar, ya sea por medio de tu windows o en un ciber y un pendrive, basicamente requieres estos archivos para que los integres a Lenny:
1.- http://packages.debian.org/squeeze/linux-image-2.6.32-3-amd64
2.- http://packages.debian.org/squeeze/amd64/wvdial/download
3.- http://packages.debian.org/squeeze/amd64/libwvstreams4.6-base/download
4.- http://packages.debian.org/squeeze/amd64/libuniconf4.6/download
5.- http://packages.debian.org/squeeze/amd64/libwvstreams4.6-extras/download
IMPORTANTE: Probablemente no sean todos, la idea es que instales manualmente wvdial y todas sus dependencias, si te faltan algunas los mensajes de error te indicaran que paquetes te faltan.Como ultimo paso es que te ubiques en el directorio donde descargaste tus paquetes deb (o binarios debian) y ejecutes como root en terminal o consola (en Debian casi no acostumbramos SUDO como en Ubuntu, siempre ejecutamos SU e ingresamos la clave root):
#dpkg -i nombredetupaquete.debE inicia la instalación, te aconsejo por instalar primero la imagen del kernel 2.6.32, despues las dependencias de wvdial, al ultimo wvdial, ya que tienes todo resuelto, solo resta que configures tu conexion editando tu archivo wvdial.conf ubicado en el directorio /etc.
¿Porqué te doy estos consejos?, porque lo más sencillo es bajar Squeeze y bajarlo, el problema radica en que desconozco en que disco del set de disco se encuentra wvdial, ya que en el disco 1 no esta, yo lo resolvi de esta forma, bajando manualmente los paquetes que necesitaba para activar el modem, ya cuando tenemos el modem trabajando, ya es más sencillo arreglar lo necesario para que nuestro sistema funcione, el paso obvio es actualizar todo el sistema a TESTING (Squeeze) configurando nuestro archivo sources.list.
En resumen, usa el metodo que mejor te adapte e instala Squeeze, altamente estable y automátizado, cada día Debian esta dejando de ser menos complejo de cara al usuario final, eso de que es complejo en su uso ya esta pasando a ser un mito.
Saludos y si algo no te queda claro no dudes en preguntar.
PD: A veces tardo en conectarme, ya que este modem es mi unico medio de conexion a internet y pues el servicio es caro, a veces hay dinero para contratar el servicio a veces no, pero siempre estoy pendiente.