Ese modulo/canal sirve para trasformar los modems USB con conexión GSM para conectarse a internet
para usarlos como gateway GSM/SMS.
Chan_sebi adapta nuestro módem USB para ser usado tanto para recibir como para realizar llamadas
y mensajes de texto SMS en nuestro servidor asterisk.
En principio se ha hecho pensando en los E169/K3520 de Huawei, modems estos que tienen capacidades
de llamada de voz. Internamente utilizan un chipset de Qualcomm (de la serie MSM7200). Con un modem
usb de estos modelos tenemos un gateway de voz que además no tiene que hacer conversiones de audio
como las que se hacen con un FXO analogico ni los problemas de señalización inherentes a los canales
analógicos, ya que toda la gestión de audio y de señalización se hace de forma digital (bien a
través del canal de audio, bien a través del canal de datos), pudiendo ser comparado a un router
RDSI⇒GSM de un puerto.
Chan_sebi está en actualmente en fase de desarrollo.
Todas las versiones de los parches son “release-candidate” por lo que no son recomendadas para
sistemas en producción.
IMPORTANTE:
No todos los firmwares tienen soporte de voz activado. Con lo que puede que las llamadas no funcionen. Los firmwares posibles:
NOTA: Recomendamos la instalación directa por SVN para no tener que aplicar los parches.
Directamente desde el svn de asterisk-es-rsp en el branch beta testing de Odicha:
team/Odicha/unestable/asterisk-addons-1.4.9 team/Odicha/unestable/chan_sebi
Obtendremos las versiones ya parcheadas de asterisk-addons:
[root@asterisk-es-rsp ~]# svn checkout http://asterisk-es-rsp.irontec.com/svn/asterisk-es-rsp/team/Odicha/unestable/asterisk-addons-1.4.9 addons-sebi
Esto nos creará una carpeta addons-sebi con la siguiente estructura:
addons-sebi
Para poder utilizar chan_sebi es necesaria la instalación de asterisk, dahdi-linux, dahdi-tools y librpi. Nosotros recomendamos hacerlo directamente mediante la instalación completa de instalacion asterisk-es-rsp.
Una vez instalado seguimos con asterisk-addons:
[root@asterisk-es-rsp ~]# cd ../addons-sebi [root@asterisk-es-rsp ~]# ./configure [root@asterisk-es-rsp ~]# make menuselect; make clean && make && make install [root@asterisk-es-rsp ~]# make config
Es importante pasa por el make menuselect y seleccionar chan_sebi, ya que este viene desactivado por defecto.
Los puertos ttyUSBx que se crean al conectar el modem tienen que tener permiso de lectura y escritura para el usuario que ejecuta Asterisk, si no es así no será posible que Asterisk se comunique con el modem. Si no se ejecuta asterisk como root lo mejor es agregar el usuario que corre asterisk al grupo propietario de los puertos que en funcion de distros y kernels puede variar (en Fedora es uucp, por ej.). Algo como esto por ej.
[root@asterisk-es-rsp ~]# chmod 660 /dev/ttyUSB* [root@asterisk-es-rsp ~]# chown asterisk:uucp /dev/ttyUSB* [root@asterisk-es-rsp ~]# echo 'KERNEL=="ttyUSB[0-9*]", MODE="0660", OWNER="asterisk", GROUP="uucp"' >> /etc/udev/rules.d/92-sebi.rules
Si hicimos un make samples al instalar asterisk-addons ya tendremos un fichero sebi.conf que tendremos que adaptar.
[huawei1] imei=35XXXXXXXXXXX ; imei of modem ;pin=1234 ; pin (use only if sim card has pin request enabled) csca=+34607003110 ; SMS centre number (Vodafone ES – example) sms=yes ; Enable sms send/receive voice=yes ; Enable voice for calls context=from-pstn ; dialplan context for incoming calls group=1 ; this phone is in channel group 1 volume=5 ; Modem Volume (1-5) language=es ; Channel language ;nocallsetup=yes ; set this only if you want override call status notifications
El campo imei del canal es el que combina la información de configuración del módem con el equipo físico. No olviden que el numero de puerto ttyUSB depende del orden en que se cargan o de la cantidad de dispositivos usb que están conectados en cada momento. Los demás campos de configuración creo que están claros, prácticamente se describen solos. Es interesante hacer notar que el nombre del canal lo asignamos nosotros libremente en el identificador de sección (en el ejemplo [huawei1])
Si lo instalamos y arrancamos, si tenemos todo correcto, el canal analizará los dispositivos usb que tenemos conectados y generará un fichero /etc/asterisk/sebi_devices.conf que contendrá algo similar a esto:
[2-1] data = /dev/ttyUSB2 voice = /dev/ttyUSB1 imei = 35413702XXXXXXX
Para enviar y recibir sms, usaremos convenciones muy similares a las de chan_mobile. Para recibir un sms y guardarlo en la base de datos tendremos las instruccciones correspondientes en el dialplan (por cierto, solo procesa sms recibidos mientras está activo, por el momento)
[from-pstn] exten => sms,1,Verbose(Incoming SMS from ${SMSSRC} ${SMSTXT}) exten => sms,n,Set(DB(SMS/${SMSSRC})=${SMSTXT}) exten => sms,n,Hangup
Para enviar un sms desde el CLI:
[root@asterisk-es-rsp ~]# originate sip/109 application SebiSendSMS huawei1|647324xxx|”texto de prueba del sms”
Añadimos la siguiente regla udev para que el Kernel nos coja correctamente el dispositivo (en este caso el K3520). Esto debería funcionar para todos los kernels.
/etc/udev/rules.d/99-huawei.rules:
# k3520
SYSFS{idVendor}=="12d1", SYSFS{idProduct}=="1001", RUN+="/bin/mknod /dev/ttyUSB0 c 188 0", GROUP="dialout"
SYSFS{idVendor}=="12d1", SYSFS{idProduct}=="1001", RUN+="/bin/mknod /dev/ttyUSB1 c 188 1", GROUP="dialout"
SYSFS{idVendor}=="12d1", SYSFS{idProduct}=="1001", RUN+="/bin/mknod /dev/ttyUSB2 c 188 2", GROUP="dialout"
SUBSYSTEM=="block", ACTION=="add", SYSFS{idVendor}=="12d1", SYSFS{idProduct}=="1001", OPTIONS="ignore_device"
SYSFS{idVendor}=="12d1", SYSFS{idProduct}=="1001", RUN+="/sbin/modprobe -q usbserial vendor=0x12d1 product=0x1001"
El S.O. debe ser capaz de montar los subid 00, 01 y 02 del modem huawei como usbTTYx. Los kernels antiguos (por debajo de 2.6.20 generalmente) no son capaces de hacerlo automaticamente por lo que habrá que modificar algunas cosas para que se detecten de la forma adecuada y sean cargados por usbserial. Normalmente es suficiente con /sbin/modprobe usbserial vendor=0×12d1 product=0×1003 o bien /sbin/modprobe usbserial vendor=0×12d1 product=0×1001 dependiendo de si el modem es 1001 (169,k3520,e270,etc…) o es 1003 (e220…). A veces también entran en conflicto con el driver de option resolviendose añadiendo al blacklist el modulo ”option”. Si aun asi sigue intentando cargar puede intentar resolverse eliminando el fichero option.ko y ejecutando un depmod después.
Podría chan_sebi utilizarse para el envio massivo de SMS?
Chan_sebi está pensado para dar solución a uno o dos dispositivos módem USB. Por lo tanto no es adecuado para el envio massivo de SMS. Más de 6 u 8 aparatos se sale del ámbito para el que esta pensado eso. Para más te recomendaríamos un banco GSM profesional.