Archive for 'Cosas que pasan'

Clave Informática Elche. Entrevista de trabajo.

Hoy me ha convocado el equipo técnico de Clave Informática para una segunda entrevista de trabajo. Hace cosa de un mes tuve una entrevista con un representante del área técnica y otro de recursos humanos. Lo de hoy creo que va a consistir en un test de compatibilidad dentro del posible grupo de trabajo.

Espero caer bien y poder demostrar que sé hacer cosas!

Cambiando las baterías a un SAI MGE Ellipse 800.

El SAI que uso en casa llevaba en activo unos 4 años. Hace cosa de una semana, las baterías dijeron “hasta aquí hemos llegado” y tras un largo período de trabajo han fallecido en acto de servicio. Tras desmontar el chisme y ver las baterías empecé a buscar exactamente el mismo modelo por Internet. Problemas: caras, en USA y modelo antiguo. Total, que todo apuntaba a que una nueva sesión de bricolage estaba a la vuelta de la esquina.

abierto_vieja

batt_vieja

Llamé por teléfono a mi tienda de electrónica de confianza y me dijeron que tenían equipos de similares prestaciones. Así que me platé en la tienda y para mi sorpresa disponían de unas baterías de similar voltaje y capacidad pero algo más grandes. Solución: sierra de calar que te crió. Dos batería de 12 voltios en paralelo suman ambos voltajes. Total 24. No es exacto pero la electrónica del SAI se ocupa de regular la tensión. El apaño me salió por 15€ cada batería.

volt_test_2

final_abierto

sai_cerrado

knut

Estas nuevas baterías tienen más autonomía que las antiguas y ya han respondido a la perfección ante un par de saltos del diferencial. Es que en verano y con este calor, los aires acondicionados pueden saturar la red en cualquier momento. Tengo previsto hacer un test de autonomía en cuanto se carguen por completo. Ya postearé resultados.

volt_test_2

Dos batería de 12 voltios en paralelo suman ambos voltajes. Total 24. No es exacto pero la electrónica del SAI se ocupa de regular la tensión.

VLAN s en PfSense 1.2 y 3Com 2924-SFP Plus. Configurando teléfonos IP Cisco. Parte 2.

En esta segunda parte vamos a ver como  hacer funcionar teléfonos IP Cisco 7906G con nuestro servidor Elastix. Parte del artículo podría estar desfasado por la nueva tendencia de Cisco a fabricar terminales con soporte SIP completo y que ya no requieren de provisionamiento por TFTP.

Configurando el Switch.

Como vimos en el artículo anterior, en nuestro switch vamos a definir suficientes puertos pertenecientes a la VLAN de VoIP como para conectar los teléfonos IP y el servidor Asterisk. Este podría ser un ejemplo visual:

parte02-01

El puerto 11 tiene conectado el servidor, y del 13 al 19 tenemos conectados los teléfonos IP. El 24 está tagged y es el que se conecta al PFSense.

Configurando PFSense.

Sencillamente debemos crear una VLAN con el mismo ID que en el switch, en este caso el 7. Después de crear la VLAN veremos que aparece como si de una interfaz física se tratase. El siguiente paso consiste en definir las reglas que queramos para esta nueva red. Podemos restringir al máximo permitiendo tan solo tráfico hacia Internet desde la IP del Asterisk, en caso de tener un proveedor IP y de no querer usar softphones, ya que de esta manera sólo los teléfonos IP “verían” el Asterisk. Esto es a gusto de cada uno y dependiendo de su  nivel de paranoia.

Cisco y Asterisk.

Existen varias webs donde podemos encontrar información acerca de como conectar equipos Cisco a nuestro servidor Asterisk, pero en pocas nos dan una explicación completa o global de como mezclar estos dos mundos. Para hacer entender este asunto a lo que vienen de nuevas intentaré resumirlo lo máximo posible de manera realista:

Mundo Cisco:

  • Trabaja por defecto con su protocolo SCCP (Skinny Client Control Protocol), aunque soporta SIP (pagando claro).
  • Soporta los códecs más conocidos, pero cerrados, como alaw, ulaw, g729… (porque has pagado).
  • Usa hardware propietario para conectar a la PSTN, RDSI… (evidentemente tendrás que pagar un plus para esto).
  • Se lleva bien con entornos Windows Active Directory (que baratos no son).
  • Cualquier soporte que necesites es aconsejable que lo recibas de Técnicos y Administradores Cisco Certificados (prepara la chequera).
  • Te ha costado una pasta y te has casado con ellos, pero es que hay que reconocer son los mejores en lo suyo.

Mundo Asterisk:

  • Trabaja con prácticamente cualquier protocolo que tenga una versión abierta. Yo lo he usado con SIP, IAX2, H323, incluso con SCCP.
  • Soporta los codecs cerrados más conocidos pero también otros tantos libres que funcionan de maravilla como iLBC.
  • Puede funcionar con un amplísimo abanico de hardware que va desde tarjetas FXO de 20€ o BRI de 40€ hasta carísimos interfaces PRI o GSM de gama alta.
  • Se lleva bien con casi todo que cumpla los estándares, ya sea Linux, Windows o Mac.
  • Siempre que necesites ayuda puedes acudir a técnicos certificados por Digium o darte una vuelta por los miles de foros, blogs y listas de correo que ayudan a la gente desinteresadamente.
  • No te has gastado mucho dinero, pero seguro que vas a invertir gran cantidad de tiempo y esfuerzo en poner en marcha tu sistema si empiezas desde cero.

Lo que intento en mis proyectos es conocer cuanto puedo de ambos mundos y fusionar lo mejor de cada uno. Me pasa como a Joey, el de Friends. Cuando le preguntan sobre si prefiere el sexo o la comida, el pobre tiene un cortocircuito mental y grita… ¡PAN CON CHICAS! No hay porqué montar un entorno 100% open source o propietario, hay que aprovechar lo mejor de cada mundo. Yo me quedo con el servidor Asterisk y con los teléfonos Cisco.

El entorno de nuestro sistema requiere los siguientes componentes:

  • Servicio TFTP (en el servidor Asterisk). Los teléfonos son “tontos”. Cualquier configuración o archivo que necesiten lo pedirán “bajo demanda” a sus servidores TFTP. Viene activado y listo para funcionar en Elastix.
  • Servicio DCHP (en el servidor Asterisk). El DHCP del PFSense parece que no se lleva muy bien con los teléfonos Cisco. Yo he conseguido mejores resultados configurando a mano el dhcpd3 que viene por defecto en Elastix y que además tiene gestión web.

Eligiendo protocolo: SIP o SCCP.

A la hora de conectar los teléfonos Cisco a nuestro Asterisk tenemos que tomar una decisión: SIP o SCCP. Ambos funcionan bien, pero SIP es un estándar y SCCP requiere configuración manual extra, por lo que la primera opción gana bastante puntos. Si queremos cargar el firmware SIP en un terminal Cisco tendremos que hacernos con el paquete de software necesario. Esto se puede hacer descargándolo de la web de Cisco (si tenemos cuenta autorizada para ello) o por otros medios. Existen algunas webs desde donde podremos descargar este software sin mucho esfuerzo, tan solo hay que buscar el nombre del archivo.

Elegir SCCP puede ser una opción en algunos casos. Asterisk viene con un canal llamado chan_skinny cuya configuración reside en /etc/asterisk/skinny.conf. También existe un canal más completo y con buena fama llamado chan_sccp, pero no he tenido el gusto de ponerlo en marcha.

Entendiendo el Servicio de Provisionamiento.

Una vez solventado este asunto, lo que vamos a hacer es replicar en nuestro servidor Asterisk todos los servicios que nos interesan de un Call Manager y que usan estándares. Los teléfonos Cisco funciona básicamente con plantillas XML y descargando archivos por TFTP, lo cuál no es nada raro y puede ser montado en cualquier equipo. Por ejemplo, cuando nuestro teléfono IP quiere consultar los sonidos de llamada disponibles, pide a su servidor TFTP un listado XML que tiene un nombre por defecto donde está la lista de sonidos. Lo mismo hace cuando queremos cambiar la imagen de fondo o consultamos la agenda.

El proceso de arranque de un teléfono IP consiste en solicitar IP y dirección de servidor TFTP por defecto a través de DHCP. A partir de este momento pedirá a ese servidor de TFTP todo lo necesario para funcionar.

Montando el Entorno.

Puedes arrancar el servicio DHCPD desde la web del Elastix, pero para añadir el parámetro de servidor TFTP deberás editar a mano el archivo /etc/dhcpd.conf e introducir la siguiente línea

next-server                     1.1.1.1;  #IP SERVIDOR TFT

La carpeta donde colocaremos los archivos que pedirán los teléfono es /tftpboot, situada en la raíz del servidor Elastix. En el caso de los archivos de provisionamiento tenemos dos opciones, usar un artchivo por defecto relativo a todos los terminales del mismo modelo, o especificar por MAC. Por ejemplo, si queremos que todos los teléfonos de un departamento usen SIP y todos los demás utilicen SCCP, crearemos un archivo de provisionamiento por defecto con la versión SCCP y a parte haremos archivos específicos para cada MAC de los de este departamento concretando el uso del firmware SIP. Este tipo de configuraciones tan solo las comento para que quede constancia de que son posibles de realizar, pero no me voy a extender más ya que no es el caso del ejemplo. Los archivos comunes a todos los terminales como ringtones o imágenes de background usan rutas estándar, solo diferenciadas en el caso de los archivos de background por carpetas con nombres definidos por el tamaño en píxeles.

Para las imágenes de background deberemos crear las carpetas:

/tftpboot/Desktops/95×34x1 (teléfonos con LCD pequeña monocromo)

/tftpboot/Desktops/320×212x12 (teléfonos con LCD grande en color)

El listado de imágenes disponibles (List.xml) debe residir en cada uno de estos directorios, conteniendo en su estructura los nombres de las imágenes y sus thumbnails:

<CiscoIPPhoneImageList>

<Image Item Image="TFTP:Desktops/320x212x12/thumb-imagen01.png"
URL="TFTP:Desktops/320x212x12/imagen01.png"/>
</CiscoIPPhoneImageList>

Los thumbnails tienen un tamaño inferior en proporción 4 a 1.

En el caso de los sonidos de llamada la estructura es:

/tftpboot/ringlist.xml (común para todos los terminales)

Con la siguiente sintaxis:

<CiscoIPPhoneRingList>
        <Ring>
                <DisplayName>Analog 1</DisplayName>
                <FileName>Analog1.raw</FileName>
        </Ring>
</CiscoIPPhoneRingList>

Las especificaciones de los archivos de sonido son:

Raw PCM

  • 8000 samples por segundo.
  • 8 bits por sample.
  • Compresión uLaw.
  • Tamaño máximo — 16080 samples.
  • Tamaño mínimo — 240 samples.

Otro archivo necesario que reside en la raíz del TFTP es el dialplan.xml. Define los tiempos de espera para diferentes longitudes de numeración, entre otras cosas. Este es un ejemplo que funciona:

<dialtemplate>
 <template match="..." timeout="1" user="Phone"><!-- Llamadas de servicios -->
</template>
<template match="...." timeout="0" user="Phone"> <!-- Llamadas internas -->
</template>
<template match="0........." timeout="1" user="Phone"> <!-- Llamadas nacionales -->
</template>
<template match="000*" timeout="3" user="Phone"> <!-- Llamadas internacionales -->
</template>
</dialtemplate>

Existen otros muchos servicios que podemos replicar en nuestro entorno, como la agenda o un servicio de avisos automáticos. Dada la extensión que está tomando este artículo lo dejaré para otros más específicos.

Cargando Firmware SIP.

Para modificar el firmware por uno SIP, deberemos colocar el contenido del zip que distribuye Cisco en la raíz del servidor tftp. Por ejemplo, la versión 8-3-1 de los terminales 7906G/7911S (utilizan el mismo firmware) se compone de los siguientes ficheros:

- apps11.8-3-0-50.sbn

- cnu11.8-3-0-50.sbn

- cvm11sip.8-3-0-50.sbn

- dsp11.8-3-0-50.sbn

- jar11sip.8-3-0-50.sbn

- SIP11.8-3-1S.loads

- term06.default.loads

- term11.default.loads

Si tecleamos la secuencia de actualización en los teléfonos IP, éstos se reiniciarán, pedirán IP y dirección del TFTP por DHCP y solicitarán:

- Archivo de firmware por defecto para su modelo (termXX.default.loads).

- Archivos incluidos en el archvo anterior (carga y posterior reinicio).

- Archivo de provisionamiento por defecto  (no es necesario. Se llama SEPDefault.cnf.XML).

- Archivo de provisionamiento para su MAC (SEPMAC.cnf.XML).

- Archivo de plan de numeración (dialplan.xml).

La secuencia de actualización consiste en encender el teléfono con la tecla # pulsada. Se encenderá el led rojo de llamada, pero el teléfono no iniciará. A continuación deberemos pulasr la secuencia 1 – 2 – 3 – 4 – 5 – 6 – 7 – 8 – 9 – * – 0 – #.

El archivo de provisionamiento de un terminal Cisco 7906G para firmware SIP tiene esta pinta (sacado de http://quetzalnet.es/index.php?id=1313):

<device xsi:type=”axl:XIPPhone” ctiid=”1566023366″>
<deviceprotocol>SIP</deviceprotocol> <!– Protocolo de conexión –>
<sshuserid>usuario</sshuserid> <!– Usuario y contraseña para acceder al teléfono vía SSH –>
<sshpassword>mipassword</sshpassword>
<devicepool>
<datetimesetting>
<datetemplate>D-M-YA</datetemplate> <!– Formato de la fecha –>
<timezone>UTC Standard/Daylight Time</timezone> <!– Zona horaria –>
</datetimesetting>
<callmanagergroup>
<members>
<member priority=”0″>
<callmanager>
<ports>
<ethernetphoneport>2000</ethernetphoneport>
<sipport>5060</sipport>  <!– Puerto de comunicación del servidor –>
<securedsipport>5061</securedsipport></ports>
<processnodename>Asterisk</processnodename> <!– Nombre del servidor –>
</callmanager>
</member>
</members>
</callmanagergroup>
</devicepool>
<sipprofile>
<sipproxies>
<backupproxy>dirección_IP_servidor</backupproxy> <!– IMPORTANTE!!! –>
<backupproxyport>puerto_de_comunicación</backupproxyport> <!– Por defecto el 5060 –>
<registerwithproxy>true</registerwithproxy>
</sipproxies>
<sipcallfeatures>
<cnfjoinenabled>true</cnfjoinenabled>
<callforwarduri>x–serviceuri-cfwdall</callforwarduri>
<callpickupuri>x-cisco-serviceuri-pickup</callpickupuri>
<callpickuplisturi>x-cisco-serviceuri-opickup</callpickuplisturi>
<callpickupgroupuri>x-cisco-serviceuri-gpickup</callpickupgroupuri>
<meetmeserviceuri>x-cisco-serviceuri-meetme</meetmeserviceuri>
<abbreviateddialuri>x-cisco-serviceuri-abbrdial</abbreviateddialuri>
<rfc2543hold>false</rfc2543hold>
<callholdringback>2</callholdringback>
<localcfwdenable>true</localcfwdenable>
<semiattendedtransfer>true</semiattendedtransfer>
<anonymouscallblock>2</anonymouscallblock>
<calleridblocking>2</calleridblocking>
<dndcontrol>0</dndcontrol>
<remoteccenable>true</remoteccenable>
</sipcallfeatures>
<sipstack>
<sipinviteretx>6</sipinviteretx>
<sipretx>10</sipretx>
<timerinviteexpires>180</timerinviteexpires>
<timerregisterexpires>3600</timerregisterexpires>
<timerregisterdelta>5</timerregisterdelta>
<timerkeepaliveexpires>120</timerkeepaliveexpires>
<timersubscribeexpires>120</timersubscribeexpires>
<timersubscribedelta>5</timersubscribedelta>
<timert1>500</timert1>
<timert2>4000</timert2>
<maxredirects>70</maxredirects>
<remotepartyid>false</remotepartyid>
<userinfo>None</userinfo>
</sipstack>
<autoanswertimer>1</autoanswertimer>
<autoansweraltbehavior>false</autoansweraltbehavior>
<autoansweroverride>true</autoansweroverride>
<transferonhookenabled>false</transferonhookenabled>
<enablevad>false</enablevad>
<preferredcodec>g729a</preferredcodec> <!– Codecs preferidos –>
<dtmfavtpayload>101</dtmfavtpayload>
<dtmfdblevel>3</dtmfdblevel>
<dtmfoutofband>avt</dtmfoutofband>
<alwaysuseprimeline>false</alwaysuseprimeline>
<alwaysuseprimelinevoicemail>false</alwaysuseprimelinevoicemail>
<kpml>3</kpml>
<phonelabel>Etiqueta_del_telefono</phonelabel> <!– Texto de la esquina superior derecha –>
<startmediaport>10000</startmediaport> <!– Puertos de comunicación RTP, IMPORTANTE –>
<stopmediaport>20000</stopmediaport>
<siplines> <!– Dentro de este apartado configuraremos nuestras lineas SIP –>
<line button=”1″>
<featureid>9</featureid>
<featurelabel>200</featurelabel>
<proxy>dirección_IP_servidor_asterisk</proxy> <!– IMPORTANTE!!! –>
<port>puerto_comunicacion_servidor</port> <!– IMPORTANTE!!! –>
<name>nombre_usuario_SIP</name> <!– IMPORTANTE!!! –>
<displayname>nombre_usuario</displayname> <!– Para el Caller ID –>
<autoanswer>
<autoanswerenabled>2</autoanswerenabled>
</autoanswer>
<callwaiting>3</callwaiting>
<authname>nombre_usuario_SIP</authname> <!– Nombre del usuario de nuevo SIP –>
<authpassword>contraseña_usuario_SIP</authpassword> <!– Contraseña del usuario SIP –>
<sharedline>false</sharedline>
<messagewaitinglamppolicy>1</messagewaitinglamppolicy>
<messagesnumber>extensión_voicemail</messagesnumber> <!–nº de acceso a voicemail –>
<ringsettingidle>4</ringsettingidle>
<ringsettingactive>5</ringsettingactive>
<contact>nombre_usuario</contact> <!– Nombre del usuario de nuevo –>
<forwardcallinfodisplay>
<callername>true</callername>
<callernumber>false</callernumber>
<redirectednumber>false</redirectednumber>
<dialednumber>true</dialednumber>
</forwardcallinfodisplay></line>
</siplines>
<voipcontrolport>5060</voipcontrolport> <!– IMPORTANTE –>
<dscpforaudio>184</dscpforaudio>
<ringsettingbusystationpolicy>0</ringsettingbusystationpolicy>
<dialtemplate>dialplan.xml</dialtemplate> <!– IMPORTANTE !!!–>
</sipprofile>
<commonprofile>

<backgroundimageaccess>true</backgroundimageaccess>
<calllogblfenabled>2</calllogblfenabled>
</commonprofile>
<vendorconfig>
<disablespeaker>false</disablespeaker>
<disablespeakerandheadset>false</disablespeakerandheadset>
<pcport>0</pcport>  <!– IMPORTANTE!!! Si es 0 el puerto habilitado si es 1 deshabilitado–>
<settingsaccess>1</settingsaccess>
<webaccess>1</webaccess> <!– IMPORTANTE!!! –>
<spantopcport>1</spantopcport>
<loggingdisplay>1</loggingdisplay>

</vendorconfig>
<transportlayerprotocol>4</transportlayerprotocol>
<capfauthmode>0</capfauthmode>
<capflist>
<capf>
<phoneport>3804</phoneport>
</capf>
</capflist>

<encrconfig>false</encrconfig>
</device>

Tan solo hay que completarlo con la configuración específica de cada uno y ponerle como nombre SEPmac.cnf.xml.

Creando las extensiones en FreePBX.

El siguiente paso consiste en dar de alta las extensiones que necesitemos en nuestro servidor Asterisk.  Este proceso no tiene ningún secreto. Crearemos extensiones SIP dándoles un número y una contraseña y pondremos el soporte nat en no. Todo lo demás es opcional a gusto del usuario.

Anuncio Telefónica: va a seguir dando de que hablar…

Casi me muero de risa (de la buena) cuando he leido este artículo publicado en La Crónic@ de Guadalajara, escrito por Gonzalo Bravo. Si es que ya me parecía a mí un estudio demasiado bien montado (y caro) como para  que os lo curraseis… Había necesidad de tocar las narices a la gente de esa manera?? Restregándoles en su cara lo que NO pueden a tener en SU maravilloso entorno navideño por VUESTRA culpa?? Reproduzco textualmente, esperando la compresión de su autor:

Mi sorpresa al ver el anuncio, es reconocer el lugar donde esta grabado, sin ir mas lejos y en pleno corazón de la Sierra Norte de Guadalajara[..]

Mi sorpresa no es por la de reconocer esta zona de la provincia, ya que sin duda es una de las mas bonitas y bien merece servir de escenario de muchos mas directores de cine y publicidad. Lo que me llama la atención y me indigna, es que utilicen para un anuncio de ADSL municipios que se encuentran enclavados en el medio rural y precisamente lo que anuncian es de lo que mas carecen, y actualmente Telefónica no oferta, agarrándose a la baja rentabilidad[...]

Anuncio Telefónica : estás iluminado (y plagiado de nuevo).

El descojone masivo cuando vimos el anuncio del duo de telefónica fue apoteósico, pero esta vez puede que pase más desapercibido. Las manos, los textos en los dedos, el tema de Daft Punk… bueno, realidad solo esas tres cosas, pero es que no había más!! Estos “creativos de YouTube” son de todo menos eso, creativos.

En esta campaña navideña seguramente se habrán dormido en los laureles a la hora de inventarse algo y  han tenido que recurrir de nuevo a mamar de la teta de la red, pero en esta ocasión buscando algo un poco más underground.

PikaPika! Aviso, la canción es deliciosamente pegadiza.