HOWTO + Review: chan_mobile

Hace ya tiempo que escribí un howto para utilizar chan_cellphone con Asterisk, pero como comenté hace poco, ya no es necesario parchear nada, ya que el nuevo chan_mobile viene incluido en la rama trunk de asterisk-addons.

En este post voy a comentar la manera de realizar la instalación, así como los resultados de las pruebas realizadas y una sección TODO, en la que indicaré pruebas que me gustaría realizar.

HOWTO

Lo primero que tenemos que hacer es preparar nuestra máquina para funcionar con los dispositivos bluetooth. Para ello, añadiremos los siguientes repositorios a nuestro fichero /etc/apt/sources.list:

#bluetooth
deb http://bluez.sourceforge.net/download/debian/ ./
deb-src http://bluez.sourceforge.net/download/debian/
./

A continuación, instalamos los paquetes necesarios:

apt-get install bluetooth bluez-utils libbluetooth2 libbluetooth2-dev

Una vez tenemos los paquetes necesarios instalados, configuramos el subsistema bluetooth editando el fichero /etc/bluetooth/hci.conf, dejándolo así:

options {
autoinit yes;
security auto;
pairing multi;
passkey «1234»;
}
device {
name «asteriskpbx»;
class 0x000100;
iscan enable; pscan enable;
lm accept;
lp rswitch,hold,sniff,park;
}

Reiniciamos el subsistema bluetooth:

#/etc/init.d/bluetooth restart

Para más información acerca de este fichero, podéis preguntarle al señor man. 🙂

Ya tenemos el subsistema bluetooth listo, ya podemos comenzar a instalar Asterisk. El chan_mobile solo esta disponible en la versión trunk de asterisk-addons, por lo que realizaremos una instalación de Asterisk bajándolo del servidor SVN:

#cd /usr/src
#svn co http://svn.digium.com/svn/zaptel/trunk zaptel-trunk
#cd zaptel-trunk
#./configure
#make && make install


#cd ..
#svn co http://svn.digium.com/svn/asterisk/trunk asterisk-trunk
#cd asterisk-trunk
#./configure
#make && make install

#cd ..
#svn co http://svn.digium.com/svn/asterisk-addons/trunk asterisk-adons-trunk
#cd asterisk-addons-trunk
#./configure
#make menuselect

Aquí nos aseguramos de que chan_mobile esta marcado, y acontinuación ejecutamos:

#make && make install && make samples

Ya tenemos Asterisk listo, comencemos la configuración del chan_mobile!

Lo primero que necesitamos saber es la dirección MAC del adaptador bluetooth que hemos conectado a nuestro servidor, que podemos obtener ejecutando:

#hcitool dev

Obtendremos una salida como esta:

asterisk-debian:/etc/asterisk# hcitool dev
Devices:
hci0 00:02:72:C9:6E:33

Ahora editamos el fichero mobile.conf y añadimos una sección con la configuración de nuestro adaptador:

[adapter]
id=bluekosa
address=00:02:72:C9:6E:33

Ya tenemos el adaptador «bluekosa» conectado, ahora tenemos que localizar el móvil. Para ello arrancamos Asterisk y desde el CLI ejecutamos:

*CLI>mobile search

Del resultado de la búsqueda, anotamos la MAC del dispositivo y el puerto que utiliza. A continuación paramos Asterisk y editamos otra vez el fichero mobile.conf y añadimos la sección correspondiente al teléfono:

[n70]
address=00:17:4B:13:71:CC
port=1
context=incoming-mobile
adapter=bluekosa

Ahora ejecutamos el siguiente comando, de manera que nuestro servidor sea visible. Después lo emparejamos con nuestro móvil, utilizando la contraseña que indicamos en el fichero /etc/bluetooth/hci.conf (passkey).

dbus-send --system --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.SetMode string:discoverable

Ya podemos arrancar Asterisk, y si todo ha ido bien, podremos ver algo parecido a esto:

scr1.jpg

Ya casi esta, solo nos queda configurar el dialplan para hacer y recibir llamadas con el móvil. Para recibir llamadas, creamos el contexto inoming-mobile que hemos especificado en el fichero mobile.conf, por ejemplo yo he realizado las pruebas así:

[incoming-mobile]
exten => s,1,Answer
exten => s,n,Playback(demo-congrats)
exten => s,n,Echo

De esta manera podemos comprobar tanto el envío como la recepción de audio. Para las llamadas salientes, podemos utilizar esta configuración:

exten => _0X.,1,Dial(Mobile/n70/${EXTEN:1})

Voila! Ya tenemos nuestro Asterisk con chan_mobile funcionando! 😀

Review

Las pruebas realizadas han sido sencillas, hacer y recibir llamadas con un softphone en un PC, a través del móvil que estaba encima de la mesa 🙂

Los resultados han sido muy buenos, la calidad era perfecta (he llamado a mi padre y ni se ha dado cuenta xD).

PERO PERO PERO, me he encontrado con una pequeña pega: al llamar a un teléfono fijo, no se detectaba el colgado. Esto al parecer es un pequeño bug, así que espero que se resuelva pronto. No obstante, las llamadas a móviles funcionan correctamente.

ToDo

Me hubiera gustado probar el envío y recepción de SMS, pero al hacer el scan con Asterisk, este me dice que no tengo esa posibilidad… no se si es por el adaptador o por el móvil, así que haré más pruebas…

También me hubiera gustado probar un manos libres bluetooth, y recibir con él llamadas, pero no tengo ninguno… A alguien le sobra uno? 🙂

Y hasta aquí hemos llegado, espero que os sirva y que disfrutéis tal y como yo lo he hecho haciendo pruebas y escribiendo estas líneas. Njoy! 😀

58 thoughts on “HOWTO + Review: chan_mobile

  1. Solo un pequeño detalle sobre el Bluetooth. A mi no me funcionaba lo del passkey (ni ninguna de las otras soluciones que encontre por internet). Al final descubri el verdadero problema gracias a /var/sys/log:


    pin_code_request (sba=00:11:5B:26:BF:CF, dba=00:07:BB:2A:51:5C)
    call_passkey_agent(): no agent registered

    Al no tener instalado un entorno de ventanas no habia registrado ningun agente que recibiera la llamada. Asi que la solucion fue compilar un pequeño agente que viene con el paquete bluez-utils:

    cd /usr/share/doc/bluez-utils/examples
    gzip -dc passkey-agent.c.gz >passkey-agent.c
    apt-get install pkg-config libdbus-1-dev
    make
    rm passkey-agent.c
    mv passkey-agent /usr/local/bin/
    /usr/local/bin/passkey-agent –default 1234 &

    Como se puede ver al ejecutar el comando hay que poner & al final para que lo deje en segundo plano ya que sino se queda a la espera.

    Espero que le venga bien a alguien por que yo estuve un monton de tiempo hasta encontrar la solucion.

    Un saludo!

  2. Pues yo esto lo he probado en un PC con solo Debian base y todo a pelo, y no he necesitado nada, pero gracias por el tip, igual alguien tb lo necesita! 😉

  3. Disculpa la ignorancia pero no hay preguntas tontas, solo tontos que no preguntan 🙂

    Entiendo que el chan_mobile permite llamar hacia un mobil con bluetooth activado. Mi pregunta es… el mobil debe tener alguna aplicacion instalada para poder recibir/hacer llamadas?

    Gracias de antemano,

  4. Jeje 🙂
    No, no hace falta nada, solo vincularlos y listo! Supongo que será como si le pusieras un manos libres… 🙂

  5. yo todavia no me he comprado un cel nokia , pero planeo pronto es mas le tengo ganas al nokia N90 o E70 serán estos compatibles con las librerias del bluetooth , y compatibles con SIP para pegarte por wifi al *

    saludes buen tip-howto …

  6. Siendo Nokia seguro que si 🙂 Y aunque el teléfono no tenga SIP, siempre puedes instalarle Fring.

  7. Pregunta tb fruto de la ignorancia, pero siempre he creido que el alcance del bluetooth es muy limitado (unos 10 metros como maximo), y nuestro asterisk esta en la sala de servidores.

    Pregunta: ¿ Hay posibilidad de aumentar el alcance con antenas bluetooth o similares que se puedan poner en algun punto estrategico ? (se que para eso esta el wifi, pero todos los telefonos tienen bluetooth y no todos wifi…)…. ¿ conoces algun «workaround» para dicha funcionalidad ?

  8. No se sihay antenas, pero el bluetoothpuede llegar hasta 100m, dependiendo del dispositivo y laversión. Creo que era la versión 2.0 del bluetooth la que llega tanto…

  9. Y con el Chan, ¿es posible relizar una llamada desde ese movil a otro destino? me explico. ¿Podría disponer de un movil conectado a un servidor en España, y yo realizar una llamada via voip desde Alemania, donde viajo habitualmente por trabajo, y que dicho movil realice una llamada a quien yo quiera desde alemania? De este modo conseguiría una llamada movil españa-españa realizandose desde Alemania.

    Quizá es mucho pedir pero por preguntar que no quede

    Saludos y gracias

  10. Por supuesto, solo tienes que preparar el dialplan, para que las llamadas a movil españoles salgan por el. Algo asi:

    exten => _6XXXXXXXX,1,Dial(Mobile/N70/${EXTEN},45)

  11. Gracias por la rapida respuesta, pero tengo un par de dudas:

    1.- ¿que quiere decir el último 45 que indicas?
    2.- Creo que con una conexión 2.0 podría conectarse más de un móvil. Siendo así, ¿Como podrían repartirse las llamadas? es decir ¿podría realizarse una conexión que dependiendo del estado (comunicando, apagado,….) salte a otro movil?

    Gracias de antemano

  12. El 45 ese es el tiempo para el Dial…

    Sobre tu segunda pregunta, el chan esta todavía en desarrollo, y de momento por cada adaptador _creo_ que solo admite un móvil, pero esto va evolucionando…

  13. segui todos los paso como dice en este howto, pero al terminanr de compilar el asterisk me dice que el modulo chan_mobile.so no es compatible con la version del asterisk que tengo, y el asterisk lo bajo como dice aca, con svn co htt…
    esto me trajo la duda… que diferencia tiene este asterisk-trunk, con respecto al asterisk-1.4.11, ?
    gracias

  14. la versión trunk es la versión en desarrollo, la que posteriormente se cnvertirá en Asterisk 1.6.

    El problema es que dada la catidad de cambios de la versión trunk, solo es posible compilar la versión de asterisk-addons trunk con asterisk trunk, sino da errores de compilación porque muchas funciones de sistema han cambiado.

  15. Logré conectarlos.. salen las llamadas pero NO HAY AUDIO, pero al contestarlas no sound

    no hay log, no hay nada, tampoco sonido en el MOVIL. intente llamando a un analogo, y sucede lo mismo …

    alguna idea ?

  16. Pues a mi me ha funcionado sin problemas… prueba con otro móvil a ver… esto todavía esta bastante beta 🙁

  17. A mi me pasa lo que a Larry, consigo conectar el movil con asterisk, pero luego no tengo audio.

    Con nokia5200: da un error en l2cap_recv_acldata unexpected continuation

    Con SonnyEricsson K601i: no dá errores pero no hay udio.

    Ambos aparecen al hacer el mobile search como usable a yes, type como phone y con diferentes puertos.

    Alguna idea?
    Gracias

  18. Hola a todos, Espero que me podais ayudar ya que llevo una semana liado con esto y no tengo forma de hacerlo funcionar. Creo que ya estoy obcecado y no sigo el procediemiento correcto.

    Llevo manejando asterisk aproximadamente 2 meses y linux hace unos 6, o sea que se puede decir que no tengo mucha idea de ninguno de los 2.

    Primero compre una OpenVox y como traía el trixbox pues instalé el trixbox. La verdad es que las configuraciones básicas son bastantes sencillas y no me costo mucho configurar extensiones, un trunk sip de salida/entrada, el troncal Zaptel, ivr, etc.. Pero luego leí el how-to anterior y me lié con el tema del bluetooth. En Trixbox no me iba (no se si porque utilizaba el metodo del parche y ya no era o porque el Trixbox utiliza la versión 1.2), en fin que no conseguín nada.

    Luego tome la decisión de instalar el Asterisk 1.4 (como ya lo he instalado tantas veces para probar, ahora estoy usando la 1.4.15), junto con freepbx, según se describe en esta página.

    http://www.voip-info.org/wiki/view/Como+instalar+Asterisk+1.4+y+FreePBX+2.3.1+in+Ubuntu+Linux+Paso+a+Paso

    Lo he instalado sobre Ubuntu Server 7.10

    instalo todas las librerías, php, apache, etc..
    luego instalo libpri-1.4.3, zaptel-1.4.7.1, asterisk-1.4.15 (hoy instalaré el 1.4.16 que ya ha salido) y luego el asterisk-addons-1.4.5. además en este orden, ya que así aparece en el tutorial.

    Primer intento.
    me bajo del svn el asterik-addons y lo instalo porque ahí es donde viene el chan_mobile, y luego no aparece por ningún lado en la carpeta de asterisk

    Segundo intento.
    Sigo el procedimiento que explicas arriba con el PC limpio y tampoco funciona.

    Creo que debe ser que instalo algo de más o no lo instalo en el orden correcto, o me falta algo por instalar.

    Me podríais ayudar??

    un saludo
    gracias

  19. Hola Valentín:

    El howto lo hice sobre una Debian Etch, así que supongo que no tendrás problemas para seguirlo en Ubuntu Server. En que punto te has quedado? Ten en cuenta que es importante que compiles tanto Asterisk como los addons de la versión Trunk…

  20. Hola de nuevo, vaya rapidez, muchas gracias!!.

    En realidad y como comentaba antes, siguiendo el How-To de la página de VoIP-info que te indico lo he hecho funcionar todo (claro está, menos el bluetooth).

    Instalo las hcitools, mi bluetooth

    El problema viene con el chan_mobile porque mi duda es la siguiente: Que es exactamante lo que tengo que instalar???

    Realizar el proceso desde 0 siguiendo tu tutorial, y sin instalar nada más y con esto ya tendría todo funcionando??

    o instalar libpri, zaptel, asterisk, y asterisk-addons según se indica en la página que pongo arriba y luego una vez hecho esto empezar con tu tutorial y recompilar todo??

    o a lo mejor seguir el procedimiento que se indica en la pagina de voip-info pero instalar las versiones de asterisk y asterisk-addons que tu indicas arriba??

    el problema que tengo es que tengo un cacao grande montado en la cabeza.

    Solo conozco asterisk-1.2.X y asterisk-1.4.X y cuando hablais de la versión trunk de asterisk, no se si es alguna de las 2 o un agregado a asterisk. Es decir estoy hecho un lio.

    un saludo
    muchas gracias

  21. Lo de voip-info no te sirve para este caso, porque para utilizar chan_mobile sin parches, es necesario utilizar la versión trunk de Asterisk, es decir, la versión de desarrollo, la _no_ estable.

    Trata de seguir los pasos que describo arriba sobre una instalación limpia a ver si te va todo bien! 🙂

  22. hola, alguien me puede ayudar, tengo instalado la version trunk de asterisk y el chan mobile, el problema es que cuando tomo el cnal celular la llamada se realiza pero no tengo audio, ya he intentado con varios mobiles y entre mis anexos si tengo audio

  23. Hola…

    Alguien que pueda por favor publicar modelos de celular con los que ha tenido exito,
    yo he intentado con Motorola L6, y el audio de entrada esta bien , pero a mi no me escuchan bien, me escuchan entrecortado y con retardos.

    Una duda mas, instale en un sistema base debian etch limpio, solo instale asterisk y sus dependencias , pero tengo entendido que zaptel y libpri solo se instalan cuando se utiliza hardware instalado en el servidor asterisk, por lo mismo no instale ni zaptel ni libpri ya que solo estoy haciendo pruebas con ATA’s, leyendo un poco encontre algo de que las tarjetas tdmxxx o hardware soportado por zaptel entrega una señal de reloj, y si no tenemos hardware conectado , necesitamos instalar ztdummy para generar por software dicha señal de reloj.

    Alguien me podria decir si es necesario instalar zaptel, libpri o ztdummy para el correcto funcionamiento de chan_mobile?

  24. Yo lo he probado con varios Nokia (N70, N80 y E65) e iba bien…

    Sobre tu segunda cuestión, no es necesario compilar Zaptel si no tienes el hardware, pero algunas aplicaciones como MeetMe necesitan de una fuente de tiempo, que se obtiene compilando zaptel. Libpri solo lo necesitas en caso de que uses conexiones con primarios.

  25. hola… tengo instalado en un debian lenny asterisk 1.4.17
    encontre esto del chan_mobile y me decidi a instalarlo
    resulta que hago todo tal cual explicas …
    ./configure ….ok
    cuando hago el make me tira un error diciendo que tengo que poner el stidio.h antes del file.h … que puede estar pasando???
    alguna ayuda? gracias y saludos
    PD: muy bueno el articulo

  26. En principio los addons del trunk no compilan con la versión 1.4 de Asterisk, así que lo mejor sería que probaras a bajarte asterisk-trunk y tratar de compilarlo con esa versión.

  27. hice eso que tu me dices… baje asterisk-trunk con svn
    compilo al final..algunos errores
    quedo instalado
    pero addons trunk me da error al compilar
    Una pregunta… que tan inestable es el asterisk trunk comparado con una version 1.5.16 ?
    saludos y gracias por la pronta respuesta

  28. este es el error que me aparece…

    lamadriguera:/usr/src/asterisk-addons-trunk# make[1]: Entering directory `/usr/src/asterisk-addons-trunk’
    > [CC] app_addon_sql_mysql.c -> app_addon_sql_mysql.o
    > gcc -shared -Xlinker -x -o app_addon_sql_mysql.so app_addon_sql_mysql.o -L/usr/lib/mysql -lmysqlclient
    > [CC] app_saycountpl.c -> app_saycountpl.o
    > In file included from app_saycountpl.c:11:
    > /usr/include/asterisk/file.h:27:2: error: #error You must include stdio.h before file.h!
    > make[1]: *** [app_saycountpl.o] Error 1
    > make[1]: Leaving directory `/usr/src/asterisk-addons-trunk’
    > make: *** [all] Error 2

  29. Hola saghul, MUCHAS gracias por contestar voy a «invertir» en un modelo de los que mencionas, no he querido comprar algun otro mobil con bluetooth, yo soy de oaxaca, mexico y por aqui estan caros los mobiles.. pero sabiendo que los modelos que mencionas arriba tienen mas posibilidades de funcionar, ire un poco mas a la segura.

    de nuevo GRACIAS.

  30. Hola Juan, mira no soy experto en asterisk ni mucho menos.. pero se me ocurre que aunque compilas e instalas el asterisk-trunk , como dices que tenias instalado asterisk 1.4.17 entonces se me ocurre que te sale el mismo error porque no has «desinstalado» el asteris anterior , no estoy muy seguro pero si lo instalaste desde un paquete , desinstalalo conforme a tu distrubucion y prueba a compilar e instalar asterisk-trunk y despues el addons-trunk, si compilaste e instalaste asterisk 1.4.17 desde las fuentes… al parecer tienes que entrar al directorio de las fuentes y hacer un «make clean» , no esoy muy seguro de esto ultimo seria cosa que checaras como desinstalar asterisk cuando compilas e instalas desde las fuentes.

    Espero te sirva , suerte.

  31. Hola de nuevo Saghul.

    Por fin pude instalar el bluetooth despues de muchos comederos de cabeza, ya que me daba muchos errores, pero bueno, todo se soluciono.

    Ahora tengo el mismo problema que joansipa y es que el movil (ericssonZ610i) enlaza bien y todo perfecto pero no me va el audio.

    Lo de que vaya o no el audio es exclusivo al modelo o hay algún fichero que se pueda tocar para poder escuchar, por que el caso es que cuando me descuelgan solo escucho el Hola (es decir que algo escucho), pero a partir de ahí el audio se corta

    un saludo

  32. Eso me pasaba a mi al principio, y se solucionó en futuras versiones… recuerda que esto es todavía bastante beta 🙁

  33. Hola gente, a mi me pasa lo mismo, instala ahora la version 1.6 beta2 de asterisk conecta lo mas bien con mi celular samsung sgh-e256 pero al llamar, no se escucha el audio. alguna idea? alquien encontro la solucion?
    gracias

  34. No se si lo preguntaste tu en la lista jeje, pero te recomiendo probar con varios móviles, con algunos va y con otros no…

  35. Hola, instale el asterisk trunk y addons sin problema, ya modifique mi fichero mobile.conf con la direccion de mi bluetooth dentro de /usr/src/asterisk-adons-trunk/configs$ y contiene lo siguiente:

    [adapter]
    id=H4ShAk0-v05tR0
    address=00:19:7E:DD:20:AD

    Y al ejecutar en asterisk me sale lo siguiente:

    .Asterisk Ready.
    *CLI> mobile search
    All Bluetooth adapters are in use at this time.
    *CLI>

    Aque se debe , me urge su ayuda por favor =(

  36. Tienes alguna aplicación que use blutooth abierta? Si esta usando un equipo de escritorio comprueba que no tienes ningún demonio de KDE o GNOME gestionando el bluetooth…

  37. Hola saghul ya hice jalar el bluetooth solo que no puedo conectarlo con varios dispositivos al mismo tiempo pero ya estoy trabajando en una solucion para ello.

    Pero tengo un problema con el dial plan podras ayudarme un poco con esto ya que tengo un poco de confusion con conceptos y pues no entiendo mucho el ejemplo de configuracion que trae el asterisk, de antemano gracias.

    Mis dudas serian como el de hacer contextos para llamadas entrantes y salientes del movil, y asi como si registro una linea IP se puede utilizar el mismo contexto ?

  38. De momento solo esta soportado 1 dispositivo por dongle, así que toca esperar…

    Para tus dudillas de dialplan lo mejor es que las plantees en la lista 🙂

  39. Hola saul , perdon por la molestia, sigo teniendo problemas con el codec, el post sigue en la lista de Asterisk-Es, y tengo una duda nueva conectado el celular mediante Bluetooth se le puede asignar una extension, para que otra extension le pueda llamar ?

  40. Llamar a quén? Si pones la línea de ejemplo de dial de arriba, cuando marques lgo saldrá por el teléfono… te refieres a eso?

  41. No, a lo que mencionas tu que desde un usuario SIP marcaste a tu padre y ni cuenta se ha dado xD. Quisiera saber si puede haber una comunicacion entre los usuarios SIP y el mobile conectado por bluetooth.

  42. hola mi nombre es diego instale todo pero tengo un nokia 6131 y no te enlaza si alguien me puede ayudar, gracias

    diego

  43. Saul…
    tengo problemas todos los dispositivos que me detecta aparecen como no usables. mira:

    *CLI> mobile search
    Address Name Usable Type Port
    00:19:4F:27:1A:6C 6085 No Headset 0
    00:1F:E4:46:CE:AE ;)¡¡L@l@!!;) No Headset 0
    00:18:C5:7C:8B:F6 Caro No Headset 0
    00:1D:E9:A5:75:72 Cherry No Headset 0
    00:16:98:BB:2E:CB celpacho No Headset 0
    00:1C:C1:44:F9:7B ernesto No Headset 0

    Que podra ser.. ? o debe de ser algun telefono especifico ?
    probe Nokia 2760, soni ericson 380, nokia 5200 y ninguno aparece utilizable..

    compile e instale la ultima version de asterisk con backport chan mobile como me lo recomendaste..

    Ayudaaa

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *