RDSI con chan_misdn (en modo NT)
Volvemos a las andadas
Tenía una tarjeta RDSI HFC de 1 puerto (una Billion) desde hace algún tiempo, muerta de risa en una caja. Como no dispongo de línea RDSI, me decidí a sacar partido a un Famitel RDSI (una base y dos teléfonos inalámbricos), y un EuroMix de los que pone Telefónica.
Para conectar dispositivos a la tarjeta, esta debe configurarse en modo NT (Network Terminator, Terminador de Red, TR, en español).
Requisitos
- Tarjeta RDSI con driver en mISDN (Billion, AVM Fritz, etc). Opcionalmente que soporten modo NT, la Billion seguro, la AVM ni idea.
- Soporte mISDN en el kernel
- Canal chan_misdn en asterisk, para que se entienda con el subsistema rdsi
- Para modo NT, un teléfono RDSI. También necesitaremos un injector de potencia, ya que estos teléfonos suelen alimentarse del bus RDSI, y la tarjeta por si sola no proporciona esa potencia. Para nuestras pruebas, utilizaremos un TR1 de los que pone telefónica
Soporte mISDN en el kernel
Una de las cosas que me echaba para atras a la hora de probar chan_misdn, era la necesidad de recompilar todo el kernel. No es que sea algo extremadamente complicado, pero luego vienen los problemas al actualizar (yum update), ya que tienes que repetir la misma jugada una y otra vez.
En la web de una empresa holandesa Laimbock tienen una serie de RPM y SRPM. El que nos interesa (al menos los que compilamos el asterisk desde el repositorio SVN, o usamos la versión 1.4.x), es mISDN-cvs20061107-2_fc6.lc.src.rpm
$ wget http://www.xs4all.nl/~pjl/downloads/asterisk/srpms/mISDN-cvs20061107-2_fc6.lc.src.rpm $ rpmbuild --rebuild mISDN-cvs20061107-2_fc6.lc.src.rpm $ cd /usr/src/redhat/RPMS/i386 $ rpm -i mISDN-cvs20061107-2.i386.rpm $ rpm -i mISDN-mISDNuser-cvs20061107-2.i386.rpm $ rpm -i mISDN-modules-2.6.9-42.0.3.ELsmp-cvs20061107-2.i386.rpm $ /etc/init.d/misdn-init config
Es posible que necesitéis instalar algunos paquetes de los que depende mISDN, principalmente rpm-build, y algunos paquetes -devel
La última linea (misdn-init config), detectará las tarjetas que tengamos en el sistema, y generará el fichero de configuración /etc/misdn-init.conf:
#Tarjeta 1, con chipset HFC card=1,hfcpci #La ponemos en modo NT Point to MultiPoint nt_ptmp=1 #Opciones por defecto poll=128 dsp_options=0 debug=0xf
Arrancamos el servicio misdn-init, que cargará los módulos necesarios. También lo activamos para que se cargue en el siguiente inicio:
/etc/init.d/misdn-init start chkconfig --add misdn-init
Compilación de chan_misdn
Solo he probado esto en asterisk 1.4, que usa el nuevo menu de seleccion al estilo del que viene con el kernel:
$ cd /usr/src/asterisk $ sh configure $ make menuselect
En la sección 3 (channel drivers), deberíamos poder seleccionar chan_misdn
$ make $ make install $ cp configs/misdn.conf.sample /etc/asterisk/misdn.conf
Y editamos el fichero de configuración:
[general] misdn_init=/etc/misdn-init.conf debug=0 ntdebugflags=0 ntdebugfile=/var/log/misdn-nt.log bridging=no l1watcher_timeout=0 stop_tone_after_first_digit=yes append_digits2exten=yes dynamic_crypt=no crypt_prefix=** crypt_keys=test,muh [default] context=misdn language=es musicclass=default senddtmf=yes far_alerting=no allowed_bearers=all nationalprefix= internationalprefix=00 rxgain=0 txgain=0 te_choose_channel=no pmp_l1_check=yes pp_l2_check=no reject_cause=16 need_more_infos=no nttimeout=no method=standard dialplan=0 localdialplan=0 cpndialplan=0 early_bconnect=yes incoming_early_audio=no nodialtone=no presentation=-1 screen=-1 echocancelwhenbridged=no echotraining=no jitterbuffer=4000 jitterbuffer_upper_threshold=0 hdlc=no max_incoming=-1 max_outgoing=-1 [extension1] ports=1 context=from-internal
La mayor parte viene por defecto. Lo interesante son las últimas líneas, donde indicamos que las llamadas que lleguen desde el puerto 1 (nuestra tarjeta), se envíen al contexto from-internal.
Reiniciamos asterisk y si todo ha ido correctamente, deberíamos poder realizar llamadas. Para llamar al teléfono rdsi, usaremos la cadena misdn/puerto/extension o misdn/g:grupo/extension. En nuestro caso nos valdría cualquiera de estas dos:
exten => 200,1,Dial(misdn/1/${EXTEN})
exten => 200,1,Dial(misdn/g:extension1/${EXTEN})
Ya que en modo PTMP el bus RDSI puede estar compartido por varios dispositivos, hay que configurar el teléfono para que suene cuando se llame a la extensión 200, según el ejemplo anterior
Alimentación de los dispositivos
Los que traen alimentación externa (un transformador) no suelen requerir que el bus esté alimentado. En cambio, el teléfono EuroMix obtiene la alimentación del cable, que debe tener unos 40V, y una potencia que la tarjeta no proporciona.
Podemos comprar un inyector, o bien utilizar un TR1 de teléfonica que ya no esté en uso. Puede incluso estar estropeado, mientras aún proporcione la alimentación
Necesitaremos un cable RDSI cruzado (No vale un cable de red Ethernet). Se puede hacer cruzando los cables 3 y 4, y 5 y 6… Es decir, el cable 3 de un conector al cable 4 del otro,
Tx+ 3 ------+ +----- 3 . X Rx+ 4 ------+ +----- 4 . ASCII ARTTx- 5 ------+ +------5 . X Rx- 6 ------+ +------6
Usaremos este cable cruzado para conectar la tarjeta y el TR1 (en cualquiera de las 2 tomas RJ45 que tiene. En la otra toma conectaremos el dispositivo RDSI, que debería encenderse
Conclusión
Me ha sorprendido gratamente que todo funcionase practicamente a la priemra ;). Lo que me falta es probar a conectarlo a una línea RDSI. Y comprobar la estabilidad con una carga de llamadas real. También comprobar el envío y recepción de faxes
A la espera de estas pruebas, me da la impresión de que es una mejor opción al bristuff de Junghanns, que parchea en exceso el código de asterisk, no es muy estable que digamos en las versiones para asterisk 1.2, y no hay soporte para asterisk 1.4. Además, al no estar incluido en el respositorio oficial de digium, tiene menos rodaje, ya que un porcentaje muy pequeño de usuarios lo utilizan
Además, chan_misdn incorpora funciones que no teníamos antes con chan_capi, como es la cancelación de eco por software (usan el mismo algoritmo que en zaptel) cuando la tarjeta no dispone de cancelador por hardware (como las EICON Diva Server, mucho �?��?��?� ;))



Hace años tuve la conexión RDSI y todavía dispongo del EuroMix. Sin embargo, ahora me conecto a Internet a través de ADSL,por lo cual, ya no tengo instalada la TR1, ya que al darme de baja, Telefónica vino a retirarla.
Mi pregunta es la siguiente; ¿Puedo utilizar el teléfono EuroMix como simple teléfono? ¿Cómo?
Comment by M. Roser Passols
— 9 March 2007 @ 20:20
Hola Roser,
Sí puedes usar el Euromix como extensión de tu asterisk. El problema es que, al requerir alimentación del bus RDSI, necesitas algo que se lo proporcione:
1) Un TR1 como comento en el artículo
2) Un inyector, como este: https://shop.beronet.com/product_info.php/cPath/21_25_43/products_id/48 (No lo he probado)
3) O comprueba si el Euromix puede alimentarse mediante un transformador externo.
Saludos
Julián J. M.
Comment by julianjm
— 9 March 2007 @ 21:15
Hola Julian,
esta configuración es para mISDN en asterisk sin trixbox ni nada de eso???
Es que estoy intentando configurar la tarjeta Billion que tengo con una interfaz RDSI y quiero saber si son estos los pasos a seguir.
Supongo que si pero para asegurarme.
Lo de la web de la empresa holandesa y tal que comentas, que es lo que conseguimos con esa serie de comandos??
Gracias.
Comment by miguel
— 27 November 2007 @ 11:16
En realidad, la mejor opción es bajarse los fuentes de mISDN y mISDNUser de http://www.misdn.org/downloads/releases/
La web holandesa tiene los RPM, pero no se si están al día.
Compilar, instalar, configurar, y a continuación compilar de nuevo asterisk para que active el soporte chan_misdn.
Lo que no se es la forma recomendable de hacerlo en trixbox…
Comment by julianjm
— 27 November 2007 @ 12:47
Bueno dias Julian,
no se si la duda que te voy a plantear tiene mucho que ver con este hilo pero no encuentro nada sobre esto y el consultado en el foro de asterisk-es y no me dicen nada o me dicen que no saben.
La cuestión es que tengo una tarjeta RDSI Billion y para las llamas que realizo a moviles desde la oficina no se realizan correctamente. La cuestión es que cuando realizo la llamada (a un movil) el que recibe la llamada me oye perfectamente, pero yo sigo escuchando el todo de llamada. No se si me explico… No se que hacer para solucionar este problema.
Tengo el asterisk-1.2.9 y el misdn-queue para misdn.
Te adjunto un trocito de mi extensions.conf:
#include => outgoing_RTB
include => outgoing
include => outgoing_RDSI_movil
include => voipbuster
[outgoing]
exten =>_XXXXXXXXX,1,Dial(ZAP/g1/${EXTEN},45,twW)
exten =>_XXXXXXXXX,2,Dial(mISDN/1/${EXTEN},45,twW)
exten =>_XXXXXXXXX,3,Hangup()
[outgoing2]
exten =>_XXXXXXXXX,1,Dial(mISDN/1/${EXTEN},45,twW)
exten =>_XXXXXXXXX,2,Hangup()
[outgoing_RTB]
exten =>_9XXXXXXXX,1,Dial(ZAP/g1/${EXTEN},45,twW)
exten =>_9XXXXXXXX,2,Hangup()
exten =>_9XXXXXXXX,102,Hangup()
[outgoing_RDSI_fijo]
exten =>_9XXXXXXXX,1,Dial(mISDN/1/${EXTEN},45,twW)
exten =>_9XXXXXXXX,2,Hangup()
exten =>_9XXXXXXXX,102,Hangup()
[outgoing_RDSI_movil]
exten =>_6XXXXXXXX,1,Dial(mISDN/1/${EXTEN},45,twW)
exten =>_6XXXXXXXX,2,Hangup()
exten =>_6XXXXXXXX,102,Hangup()
Si necesitas alguna cosa mas, para saber donde esta el problema, me dices y ya lo adjuntare.
Muchas gracias y un saludo.
Comment by Itxaso
— 13 December 2007 @ 11:02
Itxaso, prueba desde otro teléfono SIP, para descartar que no sea el teléfono el que está generando los tonos. Prueba también a quitar todas las opciones del Dial (twW).
Por otra parte, en misdn.conf, comprueba que:
far_alerting=no
early_bconnect=yes
Así es como lo tengo yo en una instalación (con asterisk 1.4 y mISDN 1.1.5), y funciona perfecto.
Comment by julianjm
— 13 December 2007 @ 11:24
Gracias Julian, pero ni por esas funciona….
Alguna otra idea??
Comment by Itxaso
— 13 December 2007 @ 12:03
Hola Julian, una consulta, para conectar un puerto de tarjeta RDSI en modo NT a un centralita tradicional, haria falta un cable cruzado o un recto?
Una vez que se conecte habria forma de ver si la conexion esta bien hecha, es decir si haciendo un misdn show stacks verias los canales UP o algo asi?
Comment by javivi
— 24 December 2007 @ 19:24
Javivi, si la tarjeta no trae jumper para ello, necesitarás un cable cruzado.
Cuando lo tengas, haz una llamada. Si funciona (o al menos ves en asterisk que se ejecuta dialplan) está correcto.
Comment by julianjm
— 24 December 2007 @ 20:17
Ok entendido, y pra cruzr un cable es cabiar el 3-4 por 5-6 no?
Comment by javivi
— 24 December 2007 @ 20:28
No. Hay que cruzar el 3 con el 4 y el 5 con el 6…
Comment by julianjm
— 26 December 2007 @ 11:32
Ahhh ok entendido, por eso no me funcionaria, jejejejje
Gracias y felices fiestas
Comment by javivi
— 26 December 2007 @ 12:53
Hola Julián,
Llevo un par de semanas peleando con la rdsi.
Tengo una OpenvoX B200P y la he configurado con el puerto 1 en modo te-ptp y el puerto 2 en modo nt-ptmp para usar un Euromix y más tarde hacer pruebas con una Inter-4. Para ello he puesto el jumper del puerto 2 en modo nt y también le he cambiado el jumper para activar la alimentación.
El puerto 1 (TE) ya me funciona correctamente. Hago llamadas y las recibo sin problemas. Los faxes también funcionan perféctamente.
Pero el Euromix no funciona. Lo he conectado con un cable plano. ¿Tiene que ser cruzado?
El teléfono recibe alimentación, pero no da tono de marcado. Cuando descuelgo y marco dígitos no aparece nada en la consola de Asterisk (¿es esto normal?) e inmediatamente me aparece en el display del Euromix: Por favor, cuelgue
La definición de puertos en misdn.conf es:
[rdsi]
ports=1
context=from-pstn
msns=*
[euromix]
ports=2
context=from-internal
¿Para llamar al euromix sería así?
exten => 130,1,Dial(misdn/2/${EXTEN})
o
exten => 130,1,Dial(misdn/g:euromix/${EXTEN})
Cuando llamo a la extensión del Euromix, la 130, en el log de asterisk me sale CHANUNAVAIL
¿Alguna ayudita?
Un saludo y gracias por tu blog.
He aprendido muchísimo en él.
Comment by ramoncio
— 6 May 2008 @ 11:17
Hola Ramoncio
La propia tarjeta hace el cruzado, con lo que el cable que usas es el correcto.
Ten en cuenta que tienes que configurar el número de extensión en el propio teléfono. El bus RDSI admite hasta 8 dispositivos, y cada uno de ellos puede tener una extensión distinta. Cuando tu haces el Dial, solo el teléfono configurado con el número 130 sonará.
Respecto a que no te de tono de marcado, prueba a poner inmediate=yes en la sección [euromix]. Hay un problema, no obstante, con el marcado. Cuando lo probé yo, tenía que marcar el número en el teléfono, y a continuación descolgar el auricular, ya que de otra forma, el teléfono envía los dígitos según los marcas, y en cuanto asterisk encuentra un número válido lo marca. Hay una aplicación, que se pone en el contexto from-internal,s,1, WaitForDigits, pero que no existe en asterisk 1.4.
Comment by julianjm
— 6 May 2008 @ 11:44
Hola Julián,
Muchas gracias por tu pronta respuesta.
> Ten en cuenta que tienes que configurar el número de extensión en el propio teléfono. El bus RDSI admite hasta 8 dispositivos, y cada uno de ellos puede tener una extensión distinta. Cuando tu haces el Dial, sólo el teléfono configurado con el número 130 sonará.
¿Y eso se supone que lo hago en algún sitio en asterisk o en los menús de configuración del Euromix?
Por otro lado, en misdn.conf y misdn-init.conf tengo configurados los 2 puertos (1 TE, 2 NT), misdn show stacks me los muestra ok, pero con misdnportinfo me aparecen 4 puertos, (1 TE, 2 NT, 3 TE, 4 TE)
Y además en la tarjeta parpadean los leds en rojo constantemente. Eso no suele indicar nada bueno. ¿Es normal con estas tarjetas o igual es indicación de algún error?
Gracias de nuevo y un saludo,
Ramon Lozano
Comment by ramoncio
— 6 May 2008 @ 19:01
Igual no me expliqué bien:
1) Configura “en el teléfono euromix” su número de teléfono (130), para que cuando hagas el Dial(misdn/g:euromix/130), responda
2) Añadele immediate=yes en la sección [euromix] del misdn.conf
Saludos
Comment by julianjm
— 6 May 2008 @ 19:15
Ya he seguido tus instrucciones.
He configurado el Euromix siguiendo en su manual el apartado “Programación de los números de abonado” y le he asignado 130 en Primer y 131 en Seg. Luego he grabado la configuración.
Pero no consigo que funcione.
He estado haciendo pruebas con originate y no va:
asterisk*CLI> originate mISDN/2/130 extension 101
P[ 2] read_config: Getting Config
P[ 2] * CALL: 2/130
P[ 2] Queueing Event SETUP because L1 is down (btw. Activating L1)
P[ 2] * IND : HANGUP pid:4 ctx:from-internal dad:130 oad:(null) State:CALLING
P[ 2] Queueing Event RELEASE_COMPLETE because L1 is down (btw. Activating L1)
P[ 2] There is no free channel on port (2)
No hay ningún canal libre…
asterisk*CLI> misdn show stacks
BEGIN STACK_LIST:
* Port 1 Type TE Prot. PTP L2Link DOWN L1Link:DOWN Blocked:0 Debug:1
* Port 2 Type NT Prot. PMP L2Link DOWN L1Link:DOWN Blocked:0 Debug:1
asterisk*CLI> misdn show config
Misdn General-Config:
-> misdn_init: /etc/misdn-init.conf -> debug: 1
-> tracefile: /var/log/asterisk/misdn.log -> bridging: no
-> stop_tone_after_first_digit: yes -> append_digits2exten: yes
-> dynamic_crypt: no -> crypt_prefix: **
-> crypt_keys: test,muh -> ntkeepcalls: no
-> ntdebugflags: 1 -> ntdebugfile: /var/log/misdn-nt.log
[PORT 1]
…
[PORT 2]
-> name: euromix -> allowed_bearers: all
-> far_alerting: no -> rxgain: 0
-> txgain: 0 -> te_choose_channel: no
-> pmp_l1_check: yes -> reject_cause: 16
-> block_on_alarm: no -> hdlc: no
-> context: from-internal -> language: es
-> musicclass: default -> callerid:
-> method: standard -> dialplan: 0
-> localdialplan: 0 -> cpndialplan: 0
-> nationalprefix: -> internationalprefix: 00
-> presentation: -1 -> screen: -1
-> always_immediate: no -> nodialtone: no
-> immediate: yes -> senddtmf: yes
-> astdtmf: no -> hold_allowed: no
-> early_bconnect: yes -> incoming_early_audio: no
-> echocancel: 128 -> need_more_infos: no
-> noautorespond_on_setup: no -> nttimeout: no
-> bridging: yes -> jitterbuffer: 4000
-> jitterbuffer_upper_threshold: 0 -> callgroup: 1
-> pickupgroup: 1 -> max_incoming: -1
-> max_outgoing: -1 -> l1watcher_timeout: 0
-> overlapdial: 0 -> msns: *
-> faxdetect: incoming -> faxdetect_context:
-> faxdetect_timeout: 5 -> ptp: no
Alguna idea?
El teléfono funciona si lo conecto directamente al TR1 llama y recibe llamadas sin problemas. O sea que el cable también está bien.
Comment by ramoncio
— 7 May 2008 @ 13:06
Configuraste también el modo NT en los jumpers de la tarjeta, para el puerto 2, no?
Comment by julianjm
— 7 May 2008 @ 13:10
Si. Los jumpers están bien.
A ver si este fin de semana tengo tiempo y consigo que funcione todo de nuevo. Y me gustaría tambien compilarlo con oslec, aunque los parches que he visto por ahi no son para las últimas versiones de mISDN.
Creo que el problema es con el mISDNuser, que es el que se encarga del modo nt, porque el puerto en modo TE si me funciona.
Comment by ramoncio
— 7 May 2008 @ 22:53
¡Ya lo he conseguido!
Por fin funcionan los 2 puertos, uno en te y el otro en nt.
He bajado los ultimos drivers de misdn y les he aplicado un parche que habia en la web de openvox y ahora sí que va. Y además tenía un jumper mal, el del terminador de 100 Ohm. Ese era em problema.
Había cambiado 2 jumpers, pero no vi el tercero.
ESo de leer los manuales con prisas nunca ha sido bueno.
Alguna solución a lo del WaitForDigits para no tener que marcar antes de descolgar?
Acabo de encontrarla. En la lista Asterisk-es y consiste en poner:
always_immediate=no
immediate=no
en /etc/asterisk/misdn.conf en el apartado del euromix.
Gracias a Sergio Aparicio que me ha ayudado a encontrar la solución con su post en la lista y a tí por tan fabulosos conocimientos que compartes altruistamente!!!
Comment by ramoncio
— 20 May 2008 @ 16:43
Hola Julian, tengo una duda de la que intuyo la respuesta, pero prefiero preguntatela.
La detección de faxes no funciona en mi asterisk-misdn, cuando añado las propiedades de faxdetect al puerto que uso y recargo la configuración misdn, asterisk dice que no reconoce esa opción.
¿el problema se debe a que hay que compilar mISDN con la opción de detección de faxes?
Mi asterisk es la versión 1.2.14 y mi mISDN la versión 1.0.4, todo va genial pero no soy capaz de detectar faxes.
Un saludo, gracias por adelantado y gracias por tu labor aqui.
Comment by Jorge
— 30 September 2008 @ 18:54
La opción es faxdetect=incoming, en la sección general del misdn.conf.
Revisa el fichero de ejemplo de misdn.conf, por si la estuvieses poniendo mal.
Comment by julianjm
— 30 September 2008 @ 19:34
Hola Julian
probe como me dijiste pero sigo teniendo el mismo problema, cuando recargo el fichero misdn.conf veo lo siguiente
Reloading mISDN Config
== Parsing ‘/etc/asterisk/misdn.conf’: Found
2008-10-01 19:14:56 WARNING[22245]: misdn_config.c:594 _build_general_config: misdn.conf: “faxdetect=incoming” (section: general) invalid or out of range. Please edit your misdn.conf and then do a “misdn reload”.
He echado un vistado al código y en chan_misdn.c no veo nada que haga referencia a la detección de fax, sospecho que o mis fuentes de asterisk (1.2.14) no tenían esa opción o bien cuando hice el make menuconfig no seleccione dicha opción.
Comment by Jorge
— 2 October 2008 @ 7:17
Entonces lo más probable es que la versión de chan_misdn que viene con ese asterisk no soporte la detección de faxes.
Tienes dos opciones:
1) Contratar un MSN específico para faxes, de manera que simplemente haces un Dial(IAX2/xxxx) cuando la llamada se haga a ese número
2) Actualizas a asterisk 1.4
En cualquier caso, el punto 1 es una buena idea.
Comment by julianjm
— 2 October 2008 @ 8:01
Pues a mi me gusta más la idea de actualizar a asterisk 1.4 aunque da un poco de miedo porque me costo poner todo en marcha.
En cualquier caso es necesario para tener toda la infraestructura analogica migrada a asterisk!
Es interesante y estimulante el mundo VoIP
Comment by Jorge
— 2 October 2008 @ 9:38
Hola Julian,
He configurado una billion y siempre me sale un cero al principio en la identificacion de llamada. Hace un tiempo lo arregle pero ahora no doy con ello. En los SPA941 me sale como 0942000000 y claro, al devolver las perdidas me da error, sabes como quitarlo?.
Muchas gracias,
Laury
Comment by Laury
— 17 April 2009 @ 8:17
Laury, en /etc/asterisk/misdn.conf:
nationalprefix=
Creo que por defecto está a 0, y por eso te lo añade al callerid.
Julián.
Comment by julianjm
— 17 April 2009 @ 8:20