<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Desert Zarzamora &#187; mfc</title>
	<atom:link href="http://zarzamora.com.mx/tags/mfc/feed" rel="self" type="application/rss+xml" />
	<link>http://zarzamora.com.mx</link>
	<description>However, there is no real definition of a desert.</description>
	<lastBuildDate>Mon, 30 Jan 2012 23:22:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Asterisk y la E1 MFC/R2 en Mexico (R2 Modificada de Telmex)</title>
		<link>http://zarzamora.com.mx/archivo-historico/17</link>
		<comments>http://zarzamora.com.mx/archivo-historico/17#comments</comments>
		<pubDate>Tue, 09 Aug 2005 19:23:30 +0000</pubDate>
		<dc:creator>Desert Zarzamora</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[digium]]></category>
		<category><![CDATA[iax]]></category>
		<category><![CDATA[mfc]]></category>

		<guid isPermaLink="false">http://zarzamora.com.mx/?p=17</guid>
		<description><![CDATA[Estas ultimas 2 semanas estube peleandome con las E1 de Telmex, que aqui en Mexico les dicen E1 R2 Modificada, pero en el resto del mundo les llaman MFC/R2. Todos los posts en internet decian que en México eran superdifíciles de configurar en las Tarjetas Digium. Pura _FUD_ y egoísmo. 

Escribí este articulo para evitar que otros caigan en los mismos errores y evitar dolores de cabeza. Sigue leyendo y veras como activar un E1 R2 Modificada (MFC/R2) en México usando lineas de Telmex.]]></description>
			<content:encoded><![CDATA[<p>Estas ultimas 2 semanas estube peleandome con las E1 de Telmex, que aqui en Mexico les dicen E1 R2 Modificada, pero en el resto del mundo les llaman MFC/R2. Todos los posts en internet decian que en México eran superdifíciles de configurar en las Tarjetas Digium. Pura _FUD_ y egoísmo.</p>
<p>Escribí este articulo para evitar que otros caigan en los mismos errores y evitar dolores de cabeza. Sigue leyendo y veras como activar un E1 R2 Modificada (MFC/R2) en México usando lineas de Telmex.</p>
<h2>Algo de señalizacion primero</h2>
<p>No soy un experto, pero lo que leí me dejó lo siguiente. El protocolo MFC/R2 es un protocolo _peer to peer_, es decir, no hay cliente y servidor, los dos dispositivos se comunican con simple señalizacion de 4 bits CAS (Channel Associated Signaling), los bits suelen llamarseles ABCD. Estos bits representan el estado de la linea, de una manera similar a la telefonía analoga. Cada bit significa algo, pero los bits C y D son raramente usados (solo en algunos paises asiáticos), el valor mas comun para ellos es <strong>01</strong>.  La tabla de estados de los bits ABCD es la siguiente:</p>
<pre>--------------+-------+---------+-
Estado          Enviar  Regresar
--------------+-------+---------+-
Idle/Released:  1001      1001
Seized          0001      1001
Seize Ack       0001      1101
Answered        0001      0101
ClearBack       0001      1101
ClearFwd        1001      0101
ClearFwd        1001      1101
Blocked         1001      1101</pre>
<p>Lo que debe pasar es que la tarjeta debe regresar el modo <em>blocked</em> en todos lo canales siempre que no se este usando, es decir, si Asterisk esta apagado. Pero cuando Asterisk enciende debe desbloquear y poner en <em>Idle</em> los canales para esperar llamadas. Ambos extremos del enlace deben estar desbloqueados para que se puedan comunicar.</p>
<p>En caso de que Telmex no tenga activa tu conexión veras mensajes de <strong>Far end Blocked</strong> en los logs de inicio de Asterisk. Eso es porque Asterisk desbloqueó tu lado del enlace pero el otro lado esta aún bloqueado.</p>
<p>Algunas personas confunden la señalizacion MFC/R2 con la señalización que se hace entre aparatos telefónicos como el de tu casa y PBX, esto es incorrecto. La señalización MFC/R2 se da entre <em>switches</em>, que son los lados de un enlace E1. Para nuestros fines, esta señalización se da entre Asterisk y el lado remoto de la E1, que es distinta a la señalización que se da entre un Asterisk con tarjetas FXS y un aparato telefónico.</p>
<pre>Tu Oficina |            | Telmex
|            |
[telefono]----[Asterisk]===MFC/R2===[switch]
/          |            |
[telefono]+           |            |</pre>
<p>Cuando se va a realizar una llamada ambos lados del enlace deben estar <em>Idle</em> o no se puede lograr un enlace.</p>
<h2>Unicall</h2>
<p>La cadena de comunicaciones de Zaptel usualmente funciona asi:</p>
<pre>PSTN - zaptel card - zaptel driver - libpri - chan-zap - asterisk</pre>
<p>pero con MFC/R2 usa una nueva libreria de abstracción llamada libunicall, que provee de una nueva interfaz unificada de manejo de llamadas (unified call handling interface, unicall). Y funciona de una manera ligeramente distinta.</p>
<pre>PSTN - zaptel card - zaptel driver - libmfcr2 - libunicall - chan-unicall - asterisk</pre>
<h2>Zaptel  para una E1 MFC/R2 (R2 Modificada)</h2>
<p>Instala los drivers de zaptel, que se instalan igual que siempre, si lo bajamos del CVS usamos:</p>
<pre># cd /usr/src
# export CVSROOT=:pserver:anoncvs@cvs.digium.com:/usr/cvsroot
# cvs login		- the password is anoncvs.

# cvs checkout -r v1-0 zaptel libpri asterisk</pre>
<p>Luego compilamos zaptel y libpri:</p>
<pre># cd zaptel
# make clean; make install
# cd ../libpri
# make clean; make install</pre>
<p>Configuramos /etc/zaptel.conf para MFC/R2 para que ponga los canales en el modo apropiado, es decir, ponemos los bits ABCD del CAS en modo <em>blocked</em></p>
<pre># MFC/R2 normalmente no usa CRC4
span=1,1,0,cas,hdb3
cas=1-15:1101
dchan=16
cas=17-31:1101
loadzone=us
defaultzone=us</pre>
<p>Si lees mas arriba la tabla de valores, 1101 es &#8220;Regresar: Blocked&#8221;, es decir, cuando Telmex le intenta conmunicarse con tus canales, la tarjeta le devuelve &#8220;Blocked&#8221;, y Telmex se da cuenta de que la tarjeta no esta en uso por Asterisk. Simplemente la tarjeta esta conectada pero no esta en disposicion de recibir llamadas.</p>
<p>Antes de proseguir checa que si ejecutas <em>ztcfg -vv </em> veras:</p>
<pre>bash# ztcfg -v

Zaptel Configuration
======================

SPAN 1: CAS/HDB3 Build-out: 0 db (CSU)/0-133 feet (DSX-1)

31 channels configured.</pre>
<h2>Instalando las librerias</h2>
<p>Necesitas instalar las librerias spandsp, libsupertone, libmfcr2 y libunicall de <a href="ftp://ftp.soft-switch.org/pub">ftp.soft-switch.org</a>, pero resulta que ese sitio esta el 50% del tiempo prendido y el 50% apagado, si no puedes acceder a ese sitio tengo <a href="http://zarzamora.com.mx/mirror/">un mirror aqui</a>. Bajas spandsp, libsupertone, libmfcr2 y libunicall, descomprimes y compilas.</p>
<p>SpanDSP,</p>
<pre># tar -zxvf spandsp-0.0.2pre18.tar.gz
# cd spandsp-0.0.2/
# ./configure
# make
# make install</pre>
<p>por defecto instala las librerias en /usr/local/lib, checa que tu /etc/ld.so.conf tenga este directorio en la lista. Si no lo tiene agregalo y ejecuta _ldconfig_</p>
<p>Se hace lo mismo para libsupertone, libunicall y libmfcr2 (descomprime, ./configure, make y make install). La cosa es que libmfcr2 ademas instala modulos en /usr/local/lib/unicall/protocols que se cargan dinamicamente por libunicall. Libunicall siempre busca sus modulos ahi.</p>
<p>Si quieres probar tu E1 MFC/R2 puedes checar <a href="http://www.voip-info.org/tiki-index.php?page=Asterisk+MFC+R2">Voip-Info.org</a> en la seccion Testing your MFC/R2 signalling installation, en realidad no es necesario y es una lata. Mejor vamos directo a Asterisk.</p>
<h2>Asterisk y los canales Unicall en MFC/R2</h2>
<p>Baja chan_unicall.c, unicall.conf.sample y  channels_makefile.patch de <a href="ftp://ftp.soft-switch.org/pub">ftp.soft-switch.org</a> (Recuerda que tengo <a href="http://zarzamora.com.mx/mirror/">un mirror aqui</a>)</p>
<p>Luego copiamos al lugar donde bajamos el source del Asterisk, dentro del subdirectorio channels el chan_unicall.c y el channels_makefile.patch.</p>
<pre># cp chan_unicall.c  channels_makefile.patch /usr/src/asterisk/channels</pre>
<p>y parchas,</p>
<pre>#cd /usr/src/asterisk/channels</pre>
<pre>#patch &lt; channels_makefile.patch</pre>
<p>luego compilas el Asterisk.</p>
<pre># cd /usr/src/asterisk/
# ./configure
# make
# make install
# make samples
# make config         &lt; ---- para clones Redhat</pre>
<p>si checas dentro de /usr/src/asterisk/channels veras un archivo <strong>chan_unicall.so</strong>, si no aparece entonces algo salio mal. No te preocupes a mi me toco editar el makefile de la siguiente manera, te muestro los numeros de linea:</p>
<pre>23 CHANNEL_LIBS=chan_modem.so chan_sip.so
24              chan_modem_aopen.so
25              chan_modem_bestdata.so chan_modem_i4l.so
26              chan_agent.so chan_mgcp.so chan_iax2.so
27              chan_local.so chan_skinny.so chan_unicall.so
28</pre>
<p>En la linea 27 agregue: <strong>chan_unicall.so</strong>. Recompilé asterisk, lo instalé, y quedo todo bien.</p>
<p>Luego copia unicall.conf.sample a /etc/asterisk, lo renombras a unicall.conf y lo editas para que este acorde a tu configuracion. Por ejemplo, el mio es:</p>
<pre>[channels]
usecallerid=yes
hidecallerid=no
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
echotraining=yes
rxgain=0.0
txgain=0.0
group=1
callgroup=1
pickupgroup=1
immediate=no
musiconhold=default
protocolclass=mfcr2
protocolvariant=mx,10,1
protocolend=cpe
group = 1
context= e1-incoming
channel =&gt; 1-10
;channel =&gt; 17-31
;skip time slot 16</pre>
<p>Como dije antes, MFC/R2 es peer-to-peer asi que la linea _protocolend=cpe_ es ignorada. Tengo asignadas 10 lineas de telmex solamente. La linea _protocolvariant_ es importante para esto. Su sintaxis es:</p>
<pre>protocolvariant=pais,digitos-ANI,digitos-DNI</pre>
<p>El pais es alguno de los siguientes:</p>
<pre>Argentina             "ar"
Bahrain               "bh"
Bolivia               "bo"
Brazil                "br"
Chile                 "cl"
China                 "cn"
Colombia landlines    "co-land"
Colombia cellular     "co-cell"
Czech                 "cz"
Honduras              "hn"
India                 "in"
Indonesia             "id"
Korea                 "kr"
Malaysia              "my"
Mexico                "mx"
Panama                "pa"
Philipinnes           "ph"
Singapore             "sg"
Thailand              "th"</pre>
<p>Los Digitos ANI y DNI aun no los comprendo bien, en unos dias le preguntaré a un experto en telefonía convencional a ver que me dice y lo pego aqui. Pero lo que actualmente tengo es 10 digitos marcados para marcar mi numero y 1 digito que varía al final, es decir. Mis lineas son 443305257x, <em>x</em> es alguno de <em>{0,1,2,3,4,5,6,8,9}</em>. O sea que tengo lineas desde 4433052570 al 79.</p>
<h2>Probando Asterisk con E1 MFC/R2 (R2 Modificada) de Telmex</h2>
<p>Arrancamos Asterisk y entramos a la consola:</p>
<pre># asterisk -vvvvvvvvvvvvvvv&amp;
# asterisk -R</pre>
<p>Al arrancar debe darte muchos mensajes</p>
<pre>Aug 10 03:13:28 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Far end unblocked
-- Unicall/1 far unblocked
Aug 10 03:13:28 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Local end unblocked
-- Unicall/1 local unblocked
Aug 10 03:13:28 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/2 event Far end unblocked
-- Unicall/2 far unblocked</pre>
<p>uno para cada linea que tengas, nota el <strong>Local end unblocked</strong> y el <strong>Far end unblocked</strong>. Si no aparece nada algo o si aparece <strong>Far end blocked</strong> o algo similar checa que Telmex te haya desbloqueado la linea, llámales y gritales hasta que te arreglen la conexion <img src='http://zarzamora.com.mx/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> .</p>
<p>Otra forma de probar es llamarte a ti mismo, usa tu celular y llama a una linea de la E1. Deben aparecer mensajes del tipo:</p>
<pre>Aug 10 03:18:48 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Detected
Aug 10 03:18:49 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Offered
Aug 10 03:18:49 WARNING[2419]: chan_unicall.c:2920 handle_uc_event: CRN 32769 - Offered on channel 0 (ANI: , DNIS: 0)
Aug 10 03:18:49 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Accepted
(...)
Aug 10 03:18:54 WARNING[2564]: chan_unicall.c:1347 unicall_hangup: Hangup: channel: 1 index = 0, normal = 24, callwait = -1, thirdcall = -1
Aug 10 03:18:54 WARNING[2564]: chan_unicall.c:962 update_conf: Updated conferencing on 1, with 0 conference users
Aug 10 03:18:54 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Drop call
Aug 10 03:18:54 WARNING[2419]: chan_unicall.c:3246 handle_uc_event: CRN 32769 - Doing a Release Call
-- Hungup 'UniCall/1-1'
Aug 10 03:18:54 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Release call
Aug 10 03:18:54 WARNING[2419]: chan_unicall.c:3260 handle_uc_event: CRN 32769 - Call released
-- Unicall/1 released
Aug 10 03:18:54 WARNING[2419]: chan_unicall.c:1042 unicall_disable_ec: disabled echo cancellation on channel 1</pre>
<p>Antes de continuar checa que tengas esos mensajes en el log y que Telmex tenga activa tu conexion E1.</p>
<h2>¿Aun no funciona?</h2>
<p>Si Telmex te dice que tiene activa tu linea y tienes todo configurado bien, como dice arriba, te recomiendo reiniciar tu maquina, eso me paso a mi y creeme que es un dolor de cabeza. Reinicia e intenta de nuevo. Es algo extraño pero a mi me funciono.</p>
<p>Puedes checar el estado de las lineas usando _UC show channels_ a mi me aparece:</p>
<pre>Asterisk*CLI&gt; UC show channels
Channel Extension  Context         Status     Language   MusicOnHold
1 0          e1-incoming     Idle                  default
2            e1-incoming     Idle                  default

3            e1-incoming     Idle                  default
4            e1-incoming     Idle                  default
5            e1-incoming     Idle                  default
6            e1-incoming     Idle                  default
7            e1-incoming     Idle                  default
8            e1-incoming     Idle                  default
9            e1-incoming     Idle                  default
10            e1-incoming     Idle                  default</pre>
<p>Si notas los canales estan en _Idle_, eso es lo correcto. Si no puedes usar el comando _UC_ significa que tu modulo chan_unicall no se ha cargado, regresa, compilalo y verifica que este en el lugar adecuado, normalmente esta en /usr/lib/asterisk/modules/chan_unicall.so.</p>
<h2>Configurando las extensiones</h2>
<p>Ya que tienes la tarjeta con sus canales funcionando es hora de configurar las extensiones. Como se ve en _UC show channels_ en unicall.conf configuramos para que las llamadas entrantes _caigan_ en el contexto _e1-incoming_. Es cosa de editar extensions.conf y colocar la definicion de ese contexto con algun manejador apropiado. En el mio esta asi:</p>
<pre>[e1-incoming]
exten =&gt; _.,1,Ringing
exten =&gt; _.,2,Answer
exten =&gt; _.,3,VoicemailMain
exten =&gt; _.,4,Hangup</pre>
<p>Y cuando marco alguna de las extensiones me manda al Voicemail, entonces escucho el clasico mensaje &#8220;Comedian mail, login&#8221;. Felicitaciones ya puedes recibir llamadas en tu E1 MFC/R2 (R2 Modificada). Configurar extensiones y demás esta fuera del alcance de este articulo, pero es muy fácil.</p>
<p>Ahora para hacer llamadas es igual que usar Dial(Zap/g1&#8230;.) pero usas Dial(Unicall/g1&#8230;).</p>
<h2>¿Quieres mis archivos?</h2>
<p>Te dejo una copia de <a href="http://zarzamora.com.mx/asterisk/e1-mexico">mis archivos aqui</a>.</p>
<h2>¿Y como le hice para conectar los cables coaxiales de Telmex a la E1 de Digium?</h2>
<p>Patton Electronics Co.<br />
N/P 460F<br />
G.703 BALUN 75/120Ohm Female BNC<br />
Coax to Twisted Pair Adapter</p>
]]></content:encoded>
			<wfw:commentRss>http://zarzamora.com.mx/archivo-historico/17/feed</wfw:commentRss>
		<slash:comments>205</slash:comments>
		</item>
	</channel>
</rss>

