BAM 3G Digitel en Debian

sábado, agosto 15, 2009

Hoy por fin tuve la oportunidad de jugar con un aparitico USB de Digitel; de esos que llaman Banda Ancha Móvil (un Huawei E160 para ser exáctos) y decidí configurarlo para conectarme desde Debian.

Anteriormente había tenido la oportunidad de configurar unas tarjetas Kiocera y unos CDU-680 de Movilnet, así que imaginé que no debía ser muy diferente, o sea una conexión ppp, unos parámetros de usuario, un número telefónico para marcar, bla, bla, bla y listo! internet parejo.

Sin embargo la cuestión es un tanto diferente respecto a los mencionados arriba, así que me tocó investigar y googlear un buen rato. Todas las soluciones que encontré lo configuraban usando wvdial, pero como soy terco quería hacerlo con ppp así que tuve que leer un poco sobre los chatscripts y hacer unas cuantas pruebas, hasta que dí con ésta solución.

Lo primero es conectar el dispositivo y ejecutar como root el comando dmesg. Deberíamos ver algo como:

USB Serial support registered for GSM modem (1-port)
option 1-5:1.0: GSM modem (1-port) converter detected
usb 1-5: GSM modem (1-port) converter now attached to ttyUSB0
option 1-5:1.1: GSM modem (1-port) converter detected
usb 1-5: GSM modem (1-port) converter now attached to ttyUSB1
usbcore: registered new interface driver option
option: v0.7.2:USB Driver for GSM modems

Ese mensaje nos indica que el dispositivo fue reconocido correctamente y está bajo el puerto ttyUSB0.

Ahora instalamos el pppconfig:
# aptitude install pppconfig
Posteriormente ejecutamos el pppconfig como root y creamos una conexión nueva. Para ello debemos completar el asistente con los siguientes parámetros:

Nombre del proveedor: conexion (aquí ponemos el nombre que queremos darle a la conexión)
DNS: Dinámico
Método de autenticación: CHAP
Nombre de usuario: digitel
Contraseña: 0000
Método de marcado: Tone
Número a marcar: *99#
Detectar automáticamente el modem: No
Puerto del modem: /dev/ttyUSB0

Guardamos y salimos del asistente.

Ahora la parte divertida (y la que me tomó tiempo en descifrar) es configurar el script de chat de la conexión que acabamos de crear para que funcione correctamente. Lo que tenemos que hacer es abrir (como root) el archivo /etc/chatscripts/conexion con nuestro editor favorito y en la sección # modem init colocar esto:

'' ATZ
'' ATZ+CPIN="0000"
OK 'ATQ0 V1 E1 +FCLASS=0'
OK 'AT+CGDCONT=1,"IP","gprsweb.digitel.ve"'

Un chatscript es una secuencia de pares "cadena esperada" "cadena enviada", es decir, siempre esperas algo antes de enviar algo.

Si queremos enviar algo sin esperar nada debemos usar una cadena vacía al inicio (indicada por '') y de la misma manera si queremos esperar algo sin enviar nada. Es necesario saber que si queremos esperar/enviar una cadena conformada por varias palabras, debemos encerrarla entre comillas para que sea una sola entidad para el script.

Dicho esto, procedo a explicar el script de chat que he creado para la conexión digitel. Primero inicializamos el modem. Observen que no esperamos nada del modem y enviamos la cadena ATZ:

'' ATZ
Luego enviamos el PIN de la SIM Card (si lo han conectado desde Windows se habrán dado cuenta que el software que trae el dispositivo pide el código PIN al momento de iniciar la conexión):

'' ATZ+CPIN="0000"
Ahora enviamos una trama de autenticación (aún no tengo muy clara su función) esperando un OK de la fase anterior pero entre comillas porque tiene varias palabras:

OK 'ATQ0 V1 E1 +FCLASS=0'
Y por último enviamos la información del servidor DNS:

OK 'AT+CGDCONT=1,"IP","gprsweb.digitel.ve"'
y voilá! El archivo /etc/chatscripts/conexion debería quedar algo así:

# This chatfile was generated by pppconfig 2.3.18.
# Please do not delete any of the comments. Pppconfig needs them.
#
# ispauth CHAP
# abortstring
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TO$
# modeminit
'' ATZ
'' ATZ+CPIN="0000"
OK 'ATQ0 V1 E1 +FCLASS=0'
OK 'AT+CGDCONT=1,"IP","gprsweb.digitel.ve"'
# ispnumber
OK-AT-OK "ATDT*99#"
# ispconnect
CONNECT \d\c
# prelogin

# ispname
# isppassword

Ahora vamos a probar la conexión. En un terminal ejecutaremos el siguiente comando para monitorear el progreso de la conexión:

# tail -f /var/log/messages
y en otro terminal escribiremos:

# pon conexion
El script se ejecutará, enviará las tramas que hemos especificado en la inicialización del modem y marcará el número que indicamos en la configuración de la conexión ppp para luego asignarnos una IP. Si vemos en el log la palabra Failed o Exit es porque la conexión no se realizó con éxito y debemos ejecutar nuevamente el comando pon conexion como root. El terminal ejecutando el tail de /var/log/messages mostrará el progreso de la conexión, algo como:

Aug 15 21:04:33 belzebu pppd[3615]: pppd 2.4.4 started by root, uid 0
Aug 15 21:04:34 belzebu chat[3617]: abort on (BUSY)
Aug 15 21:04:34 belzebu chat[3617]: abort on (NO CARRIER)
Aug 15 21:04:34 belzebu chat[3617]: abort on (VOICE)
Aug 15 21:04:34 belzebu chat[3617]: abort on (NO DIALTONE)
Aug 15 21:04:34 belzebu chat[3617]: abort on (NO DIAL TONE)
Aug 15 21:04:34 belzebu chat[3617]: abort on (NO ANSWER)
Aug 15 21:04:34 belzebu chat[3617]: abort on (DELAYED)
Aug 15 21:04:34 belzebu chat[3617]: send (ATZ^M)
Aug 15 21:04:34 belzebu chat[3617]: send (ATZ+CPIN="0000"^M)
Aug 15 21:04:34 belzebu chat[3617]: expect (OK)
Aug 15 21:04:34 belzebu chat[3617]: ATZ^M^M
Aug 15 21:04:34 belzebu chat[3617]: OK
Aug 15 21:04:34 belzebu chat[3617]: -- got it
Aug 15 21:04:34 belzebu chat[3617]: send (ATQ0 V1 E1 +FCLASS=0^M)
Aug 15 21:04:34 belzebu chat[3617]: expect (OK)
Aug 15 21:04:34 belzebu chat[3617]: ^M
Aug 15 21:04:34 belzebu chat[3617]: ATZ+CPIN="0000"^M^M
Aug 15 21:04:34 belzebu chat[3617]: ERROR^M
Aug 15 21:04:34 belzebu chat[3617]: ATQ0 V1 E1 +FCLASS=0^M^M
Aug 15 21:04:34 belzebu chat[3617]: OK
Aug 15 21:04:34 belzebu chat[3617]: -- got it
Aug 15 21:04:34 belzebu chat[3617]: send (AT+CGDCONT=1,"IP","gprsweb.digitel.ve"^M)
Aug 15 21:04:35 belzebu chat[3617]: expect (OK)
Aug 15 21:04:35 belzebu chat[3617]: ^M
Aug 15 21:04:35 belzebu chat[3617]: AT+CGDCONT=1,"IP","gprsweb.digitel.ve"^M^M
Aug 15 21:04:35 belzebu chat[3617]: OK
Aug 15 21:04:35 belzebu chat[3617]: -- got it
Aug 15 21:04:35 belzebu chat[3617]: send (ATDT*99#^M)
Aug 15 21:04:35 belzebu chat[3617]: expect (CONNECT)
Aug 15 21:04:35 belzebu chat[3617]: ^M
Aug 15 21:04:35 belzebu chat[3617]: ATDT*99#^M^M
Aug 15 21:04:35 belzebu chat[3617]: CONNECT
Aug 15 21:04:35 belzebu chat[3617]: -- got it
Aug 15 21:04:35 belzebu chat[3617]: send (\d)
Aug 15 21:04:36 belzebu pppd[3615]: Serial connection established.
Aug 15 21:04:36 belzebu pppd[3615]: Using interface ppp0
Aug 15 21:04:36 belzebu pppd[3615]: Connect: ppp0 <--> /dev/ttyUSB0
Aug 15 21:04:37 belzebu pppd[3615]: CHAP authentication succeeded
Aug 15 21:04:37 belzebu pppd[3615]: CHAP authentication succeeded
Aug 15 21:04:37 belzebu kernel: [ 1953.295830] PPP BSD Compression module registered
Aug 15 21:04:37 belzebu kernel: [ 1953.314554] PPP Deflate Compression module registered
Aug 15 21:04:39 belzebu pppd[3615]: Could not determine remote IP address: defaulting to 10.64.64.64
Aug 15 21:04:39 belzebu pppd[3615]: local IP address 10.68.174.162
Aug 15 21:04:39 belzebu pppd[3615]: remote IP address 10.64.64.64
Aug 15 21:04:39 belzebu pppd[3615]: primary DNS address 204.59.152.208
Aug 15 21:04:39 belzebu pppd[3615]: secondary DNS address 57.73.127.195

Para finalizar la conexión y retirar el modem basta con ejecutar como root:

# poff conexion
y esperar que se apague el led del aparato.

Es todo, ahí tenemos nuestra flamante conexión de banda ancha desde Debian :) Cualquier otra información útil o sugerencia es bienvenida.

Cambio y fuera

17 comentarios:

udolug dijo...

gracias por la info man, muy agradecido

Anónimo dijo...

Saludos.

En mis primeros pasos bajo linux Debian, segui tus instrucciones para configurar mi modem inalambrico usb huawei de digitel pero al parecer no existe el archivo "/etc/chatscripts/conexion". Lo cree con gedit pero aun pon conexion no genera ninguna actividad que indique conexion y sugiere no encontrar el archivo conexion en el directorio pppers o algo asi, en verdad, mucho agradeceria tu ayuda.

Anónimo dijo...

Saludos

Una pregunta, cuando logras conectarte el led del Modem enciende con luz azul? Yo estoy con Ubuntu 10.04 y efectivamente me logro conectar, pero nunca con luz azul, sino la verde. Y bueno, con Windows el modem si toma el modo de alta velocidad.

Gracias de antemano por tu respuesta.

Anónimo dijo...

Saludos.

Te confirmo que efectivamente tus pasos me funcionaron sin problemas en Ubuntu 10.04, obteniendo así la tan ansiada luz azul.

Con el NetworkConnectios de Ubuntu, nunca logré obtener el modo alta velocidad por lo que creo que al menos para autenticarte contra Digitel, ese método no sirve de mucho. Pero el que tu comentas parece tener esa traza extra e información para Digitel.


Mil Gracias por la ayuda que me diste.

Unknown dijo...

Sí Anónimo, efectivamente. El método que publiqué en ésta entrada lo obtuve interceptando los comandos AT que envía el cliente desde Windows. Es por eso que contiene la información exacta.

Saludos y gracias por tus comentarios

Unknown dijo...

Hola amigo.Te cuento mi historia: Tengo mas de 2 años usando este modem, y en realidad no me quejo de el pero lo usaba en gûindous porq en realidad era una papaya compartir la conexion desde mi laptop viejita y rota a las 2 otras compus de mi casa. En la personal siempre he usado linux, variando de OpenSuse, a Mandriva y fedora en ambientes kde, pero siempre he sido el tipo usuario final y nunca habia tocado la terminal, pero hace 30 dias mas o menos decidi cambiar eso, me cambie a Debian y cambie a debian la laptop sin monitor ni teclado, Squeeze me reconoce de forma directa el modem, y por el network manager tambien fue una papaya compartir mi conexion a internet, pero tengo un problema q no se me presentaba en windows, se me cae la conexiòn demasiado seguido, y para levantarla no se pude ir directamente al network manager y hacerlo dado q desaperece, ni con reiniciar el demonio puedo hacerlo ya q aunq vuelve a aparecer, no levanta la conexion, tengo q desconectar y conectar el modem ademas de reiniciar el demonio para q pueda volverme a conectar por lo cual he decidido hacerlo al mas bajo nivel posible, incluso mas bajo q wvdial q me dio problemas con las compresiones y no-deflate, ademas q nunca supe poner lo de la autenticificacion PAP, mi pregunta luego de tan larga introducciòn es. ¿Tu metodo utiliza el marcado directo de pppd?Hay un nivel de marcado mas bajo que este? tienes algùn scrip para que se conecte apenas se pierda la conexiòn y q siga intentando hasta conseguirla? Te felicito antemano por el post, es bastante grafico y facil de seguir, y no solo por el post sino por el espiritu q profesas al enseñar con el ejemplo de ayudarnos los unos a los otros. Gracias de antemano y hasta luego.

Unknown dijo...

cabe destacar q se q es una conexion a digitel pero como buscando en google aparecio q habias instalado el cdu.680 y te graduaste con el digitel, me gustaria saber si tienes una solucion a mis problemas.

Unknown dijo...

Saludos hermano.estoy nuevo en canaima y mi dispositivo es Movilnet. Seguí tus pasos pero no me reconoce el comando. De antemano muchas gracias y disculpa las molestias

Unknown dijo...

Hola ruben es cdma o gsm?

Anónimo dijo...

mira pero esto tambien sirve para el bam digitel 3G E1752 responde por favor plisss

juanfuens dijo...

Ayuda por favor. Trato de desbloquear la sim de mi bam y me dice que hay que hacerlo desde la.UI. de la wwan. Y no tengo idea de qué es eso. Ayuda por favor

Unknown dijo...

Hola maestro!, este sistema funciona actualmente??

Unknown dijo...

Papa esta información me sirvió para mi nexus 7 sólo WiFi ya q vía otg puse un pen nokia de Digitel y me gusto q pusiste el user y password de este pero estoy necesitando el de movilnet usuario y password la sabes?

Unknown dijo...

Papa esta información me sirvió para mi nexus 7 sólo WiFi ya q vía otg puse un pen nokia de Digitel y me gusto q pusiste el user y password de este pero estoy necesitando el de movilnet usuario y password la sabes?

Victor Melendez Bello dijo...

Buen día, pana te cuento, me puse exquisito a inventar con mi maquina, sucede que ella trabaja bajo jessie, y perfectamente conectaba a internet con mi bam E177, pero requería tener acceso al buzón de MSM para gestionar mi cuenta, entonces intente instalar el software de la empresa (GRAVE ERROR) no solo no se instaló si no que tampoco puedo conectar el equipo a la internet, luego intente corregir mi error siguiendo tu tutorial pero...
enfin pana te dejo la salida del comando: tail -f /var/log/messages

Dec 22 22:29:41 napoleon pppd[1715]: pppd 2.4.6 started by victor, uid 0
Dec 22 22:29:42 napoleon chat[1717]: abort on (BUSY)
Dec 22 22:29:42 napoleon chat[1717]: abort on (NO CARRIER)
Dec 22 22:29:42 napoleon chat[1717]: abort on (VOICE)
Dec 22 22:29:42 napoleon chat[1717]: abort on (NO DIALTONE)
Dec 22 22:29:42 napoleon chat[1717]: abort on (NO DIAL TONE)
Dec 22 22:29:42 napoleon chat[1717]: abort on (NO ANSWER)
Dec 22 22:29:42 napoleon chat[1717]: abort on (DELAYED)
Dec 22 22:29:42 napoleon chat[1717]: send (ATZ^M)
Dec 22 22:29:42 napoleon chat[1717]: expect (OK)
Dec 22 22:30:27 napoleon chat[1717]: alarm
Dec 22 22:30:27 napoleon chat[1717]: send (AT^M)
Dec 22 22:30:27 napoleon chat[1717]: expect (OK)
Dec 22 22:31:12 napoleon chat[1717]: alarm
Dec 22 22:31:12 napoleon chat[1717]: Failed
Dec 22 22:31:13 napoleon pppd[1715]: Exit.

Sí tienes alguna solucion que me evite el reinstalar el sistema lo agradeceré.

Anónimo dijo...

Buenas tarde una pregunta conecto mi bam digitel a mi pc pero no lo reconoce pero si elbamprende la lucesitas azul y verde que seria?

cesar dijo...

muy bien el script de secuencia en la inicialisacion del modem el comando dice que te funciono con el pincho de digitel para la conexion y jugar. mi pregunta es la direccion ip desde el servidor cliente porque tiene el prefijo con una ip privada es decir con el puerto udp bloqueado yo conecte con ese pincho de digitel al principio y me daba una ip publica entonce el gran servidor de digitel decidieron bloquear los puerto udp via remota,