Enviado por admin el
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:
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:
Comentarios recientes