Asterisk 1.6.2.X en Ubuntu 10.04 Desktop con modulo chan_datacard - Segunda Parte

Después de la primera parte, ha llegado el momento de configurar mi modem Huawei E1692 con el modulo chan_datacard. Antes que nada quiero aclarar que gran parte de la información de esta guía la he sacado de la lista de Asterisk-es de Google, mil gracias a Paco por su ayuda, del wiki dedicado al modulo chan_datacard y de los archivos de configuración contenidos en el paquete.

El modem Huawei E1692, como se ha dicho, en Italia se vende desbloqueado y con el canal voz activado. Para averiguarlo he usado el programa DC-unlocker. Lo bajamos, lo instalamos en windows y, después de conectar el E1692 lo iniciamos.

En la pantalla principal dejamos los valores por defecto y hundimos el icono detect modem:

datacard1

En mi caso el resultado ha sido:

Found modem         : E1692
Model               : Huawei E169/E169G
IMEI                : 35310803479XXXX
Serial NR.          : B14CAB1022418XXX
Firmware            : 11.126.08.00.192
Compile date / time : Oct 22 2009 19:30:16
Dashboard version   : UTPS15.001.02.02.192_MAC13.305.06.02.192_LNX13.305.06.02.192
Chipset             : Qualcomm MSM6290
Voice feature       : enabled
SIM Lock status     : unlocked
Wrong codes entered : 0 (unlock attempts left : 10)

Las dos líneas en negrita nos dicen que el modem tiene la voz habilitada y está desbloqueado.

Volvemos a Ubuntu Desktop 10.04 y conectamos el modem. Miramos si está conectado:

lsusb

Bus 002 Device 003: ID 12d1:1446 Huawei Technologies Co., Ltd.

el primer valor 12d1 indica el productor mientras el segundo que esté en modalidad cd-rom.

Para pasarlo a modalidad datos tenemos que utilizar la utilidad usb-modeswitch. La instalamos:

sudo nano /etc/usb-modeswitch.conf

creamos un archivo de configuración para cambiar la modalidad del modem:

sudo nano /etc/usb-modeswitch.conf

pegamos las siguientes líneas:

# Huawei E1692
DefaultVendor=  0x12d1
DefaultProduct= 0x1446

TargetVendor=   0x12d1
TargetProduct=  0x140c

MessageContent="55534243000000000000000000000011060000000000000000000000000000"

CheckSuccess=5

Guardamos los cambios y ejecutamos la utilidad:

sudo usb_modeswitch

el resultado final debería ser:

Mode switch succeeded. Bye.

El modem se reinicia e podemos controlar el cambio:

lsusb

Bus 002 Device 013: ID 12d1:140c Huawei Technologies Co., Ltd

ya lo tenemos en modalidad modem. En la carpeta /dev deben aparecer cuatro nuevos dispositivos (ttyUSB0, ttyUSB1, ttyUSB2 y ttyUSB3)

La segunda parte es instalar el modulo chan_datacard. Descargamos la ultima versión disponible:

cd /usr/src
sudo svn checkout http://datacard.googlecode.com/svn/trunk/ datacard-read-only
cd datacard-read-only

y la compilamos:

sudo autoconf && sudo automake -a
sudo ./configure
sudo make
sudo make install

copiamos el archivo de configuración predefinido en la carpeta de Asterisk:

cd etc
sudo cp datacard.conf /etc/asterisk

lo abrimos:

sudo nano /etc/asterisk/datacard.conf

en este archivo tenemos tres bloques:

La parte general:

[general]

interval=15 ; numero de segundo entre cada intento de conectarse al dispositivo

El bloque default que funciona como plantilla para todos los dispositivos conectados. Se pueden modificar los parámetros en la configuración de cada dispositivo

[default]
context=default
         ; contexto de entrada de las llamadas
group=0                    ; grupo del dispositivo
rxgain=0                ; para aumentar o disminuir el volumen del audio entrante
txgain=0                ; para aumentar o disminuir el volumen del audio saliente
autodeletesms=yes       ;para borrar en automático los SMS de la SIM una vez recibidos
resetdatacard=yes       ; para resetear el dispositivo durante la inicialización con el comando ATZ
usecallingpres=yes        ; si el identificativo de llamada se envía o no
callingpres=allowed_passed_screen ; utiliza la presentación del identificativo de llamada como está configurada por el operador móvil
disablesms=no           ; recepción SMS habilitada. En algunos caso si llega un SMS durante una llamada el modulo puede caerse
language=en                ; el idioma de las locuciones para el canal
smsaspdu=yes            ; envía los SMS en PDU (Protocol Description unit) mode (máximo 70 caracteres)
mindtmfgap=45           ; Intervalo mínimo entra un DTMF y otro (en milisegundos)
mindtmfduration=80      ; Durada mínima de un DTMF (en milisegundos)
mindtmfinterval=200     ; Intervalo mínimo entre DTMF de los mismos dígitos
callwaiting=auto        ; usa la configuración de llamada en espera configurada por la red móvil
disable=no                ; con yes, ignora la configuración del dispositivo
exten=+1234567890        ; este parámetro se utiliza para indicar la extensión donde llegaran las llamadas en entrada (si no está disponible el numero telefónico asociado a la SIM  del dispositivo)
dtmf=relax

El ultimo bloque es donde se configura el dispositivo:

[datacard0] ; el nombre del dispositivo
audio=/dev/ttyUSB2        ; puerto tty pera el audio
data=/dev/ttyUSB3        ; puerto tty para los datos

Si queremos que el modulo chan_datacard se haga cargo de encontrar los puertos automáticamente indicamos el IMEI del dispositivo (y comentamos los parámetros audio y data):

imei=35310803479XXXX

y podemos configurar cualquier parámetro del bloque default para que sea especifico de este dispositivo:

exten=+57312681XXXX
context=comcel-in
language=es
callwaiting=no

Guardamos los cambios y entramos en la consola de Asterisk:

sudo nano asterisk –rvvvvvvvvvvvvvvvvvvvvv

Cargamos el modulo:

CLI> module load chan_datacard

Si todo sale bien, después de unos segundos veremos el dispositivo:

CLI> datacard show devices

ID           Group State      RSSI Mode Submode Provider Name  Model      Firmware          IMEI             IMSI             Number       
datacard0    0     Free       19   3    3       COMCEL 3GSM    E1692      11.126.08.00.192  35310803479XXXX  73210120987XXXX  Unknown

Con la SIM Movistar:

ID           Group State      RSSI Mode Submode Provider Name  Model      Firmware          IMEI             IMSI             Number       
datacard0    0     Free       22   3    3       movistar       E1692      11.126.08.00.192  35310803479XXXX  73212341693XXXX  Unknown

Para una lista de comandos disponibles con el modulo:

CLI> help datacard

Salimos de la consola:

CLI> quit

En las fuentes del modulo hay un dialplan especifico para este canal. Para nuestras pruebas, borramos el predefinido y copiamos éste en la carpeta de configuración de Asterisk:

sudo rm /etc/asterisk/extensions.conf

sudo cp extensions.conf /etc/asterisk

Lo abrimos:

sudo nano /etc/asterisk/extensions.conf

y los modificamos:

[general]

contexto de entrada de la SIM de Comcel

[comcel-in]

Para recibir los mensajes USSD (Unstructured Supplementary Service Data) que normalmente se reciben a frente de un serie de códigos enviados desde el celular y/o navegando en los menú específicos del operador móvil. Estos mensajes llegarán en la extension ussd:

exten => ussd,1,Noop(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})})
exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD}: ${BASE64_DECODE(${USSD_BASE64})}' >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()
Estos mensajes los guardamos en el archivo de texto ussd.txt Para los SMS vale lo mismo:

exten => sms,1,Noop(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})})
exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD} - ${CALLERID(num)}: ${BASE64_DECODE(${SMS_BASE64})}' >> /var/log/asterisk/sms.txt)
exten => sms,n,Hangup()

Enviamos las llamadas en entrada a la extensión 1000 (configurada el sip.conf durante la instalación de Asterisk)

exten => s,1Dial(SIP/1000,45)
exten => s,n,Hangup

[phones]
contexto definido para la extensión 1000. Para enviar SMS:

exten => 10,1,DatacardSendSMS(datacard0, "+18004005422", Mensaje de prueba?, 1440, yes)
exten => 10,s,Hangup

Para las llamadas salientes a celulares de Colombia

exten => 3XXXXXXXXX,1,Dial(Datacard/g0/${EXTEN})
exten => 3XXXXXXXXX,n,Hangup

En lugar del grupo podemos indicar el operador movil o el IMEI del modem:

exten => *611,1,DIAL(Datacard/i:35310803479XXXX/${EXTEN})
exten => *611,n,Hangup

;exten => *611,1,DIAL(Datacard/p:COMCEL 3GSM/${EXTEN})
;exten => *611,n,Hangup

*611 es el numero de atención al cliente

Estos son pequeños ejemplos. Mire el archivo extensions.conf que viene con las fuentes del módulos para ver más.

Recargamos el dialplan:

sudo asterisk –rvvvvvvvvvvvvvvv

CLI> dialplan reload

y miramos que pasa en la consola cuando se recibe un SMS:

[datacard0] Got SMS from 312681XXXX: 'Datacard component work fine'
    -- Executing [sms@datacard-in:1] Set("Local/sms@datacard-in-266a;1", "sms=Datacard component work fine") in new stack
    -- Executing [sms@datacard-in:2] System("Local/sms@datacard-in-266a;1", "echo '2011-01-18 08:44:00 - datacard0 - 312681XXXX: Datacard component work fine' >> /var/log/asterisk/sms.txt") in new stack
    -- Executing [sms@datacard-in:3] Hangup("Local/sms@datacard-in-266a;1", "") in new stack
  == Spawn extension (datacard-in, sms, 3) exited non-zero on 'Local/sms@datacard-in-266a;1'

El mensaje ha sido guardado en el archivo sms.txt

Esta es una lista de modem huawei presente en el wiki del programa:

datacard2

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo
Suscribirse a Comentarios de "Asterisk 1.6.2.X en Ubuntu 10.04 Desktop con modulo chan_datacard - Segunda Parte" Suscribirse a VozToVoice - Todos los comentarios