domingo, 12 de agosto de 2007

Configuración de un teléfono Cisco 7911G con Asterisk y Voipbuster con protocolo SIP.

1. Actualizar firmware del teléfono.


Nuestro teléfono viene de fábrica con un firmware que no soporta el protocolo SIP, por lo que tendremos que actualizarlo. Para ello necesitaremos un servidor DHCP y uno TFTP.


Yo he usado “Vicomsoft DHCP server”, se puede descargar gratis dando tu mail (el verdadero, porque te envían una clave). Supongo que será versión de prueba y con el tiempo habrá que pagarlo, pero es fácil de usar y a mí me ha valido. Y como servidor TFTP he usado el de Solaris, muy facil de usar.

  1. Primero vamos a preparar el servidor TFTP. Descargamos el programa y lo configuramos para que se pueda, tanto enviar como recibir ficheros, o si lo prefieres solo enviar. También es útil activar el log por si hay problemas poder identificarlos.



  2. Descargamos el servidor DHCP y lo configuramos para que los clientes DHCP (en este caso nuestro teléfono) sepan en qué dirección IP está nuestro servidor TFTP.

    Para configurar otro servidor manualmente lo haríamos de la siguiente forma: option tftp-server-name “XXX.XXX.XXX.XXX”.

  3. Lo siguiente es descargar el nuevo firmware. Actualmente Cisco no te deja descargarlo ni siquiera siendo usuario registrado. Yo lo conseguí de esta ftp: http://ftp.itl.ua/pub/cisco/ip-7900ser/, el archivo con la versión más reciente de firmware para SIP es cmterm-7911_7906-sip.8-3-1.zip. Lo descargamos y descomprimimos los ficheros en el directorio root que asignemos en el servidor TFTP.

  4. Es hora de ponernos con nuestro “Cisco Phone 7911G”. Lo primero será conectarlo a la red donde se encuentre la máquina en la que esté rulando el servidor DHCP, en mi caso un PC normal y corriente con Windows XP. Tendremos en cuenta que si lo conectamos directamente a la tarjeta de red del pc, necesitaremos un cable de red cruzado. También tendremos que desconectar el router de nuestra red o desactivar su servidor DHCP, si conectamos el teléfono a ésta.

    Lo siguiente es enchufar la alimentación del teléfono al mismo tiempo que pulsamos la tecla “#” del mismo durante unos cinco segundos. Esto hará que el teléfono se ponga en modo de administrador. Sabrás si lo haces bien porque se encenderá la luz roja del auricular. Es entonces cuando marcaremos “123456789*0#” en el teclado del teléfono. Esto hará que se ponga en modo actualización de firmware. El teléfono se reiniciará, buscará un servidor DHCP que le dé una IP y le guíe hasta un servidor TFTP que le facilite los ficheros de actualización. En la pantalla se podrá ver cómo se actualiza. Si no encuentra servidor DHCP o TFTP o archivos de actualización sigue intentándolo un tiempo y luego se reinicia una y otra vez y seguirá en modo actualización. Una vez puesto en modo actualización, yo no sé cuál es el código para parar este proceso, ten cuidado de tener todo lo necesario para llevar a cabo la actualización antes de activar este modo.

    Los archivos que se descarga son:

    -term11.default.loads

    -Jar11sip.8-3-0-50.sbn

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

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

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

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

    Si tienes algún problema siempre puedes mirar los log's de los servidores para intentar resolverlo o intentar conectarte al servidor web del teléfono para ver sus log's.

    Una vez actualizado se reinicia y sale de este modo. Como no le damos ningún archivo de configuración, nos aparecerá un mensaje que dice “unprovisioned”.


Configuración del teléfono.


Los teléfonos de Cisco al arrancar piden una serie de archivos de configuración via TFTP. Vamos a ver cómo crear estos archivos y como configurar el teléfono para que los descargue a través del servidor TFTP.


  1. Primero le daremos al teléfono una dirección IP, máscara de subred, TFTP server IP, Default Router IP y, si queremos, una o más DNS server IP. Así podremos tenerlo conectado a nuestra red y desactivar el servidor DHCP de nuestro pc.

    Para poder hacer cambios desde el teclado del teléfono tenemos que pulsar “**#” desde el menú de aplicaciones para desbloquearlo.

    Pulsando el botón de aplicaciones del teléfono, vamos a “Settings”, “Network Configuration” y “DHCP Enabled”, lo ponemos en “No”, así desactivamos el cliente DHCP del teléfono. Por lo tanto necesitamos darle una IP fija; en el mismo menú “Network Configuration” vamos a “IP Address” y le ponemos una IP dentro del rango de nuestra red. Hacemos lo mismo con el resto de opciones, importante poner en “TFTP server 1” la dirección IP del pc donde rule el servidor TFTP, y entonces le damos a “save” para salvar la configuración. Ya lo tenemos pidiendo ficheros de configuración a la TFTP.

  2. Los ficheros que pide se pueden ver en el log del servidor TFTP, son CTLSEPXXXXXXXXXXXX.tlv, SEPXXXXXXXXXXXX.cnf.xml y XMLDefault.cnf.xml, donde las “X” representan el número MAC del teléfono. Se puede mirar en el menú ”Network Configuration”.

    El fichero en que nos vamos a centrar es SEPX.cnf.xml, en el cual introduciremos los datos necesarios para sacar al teléfono del modo “unprovisioned” y hacer que se registre en nuestro servidor Asterisk. Tiene esta pinta:

<device>

<deviceProtocol>SIP</deviceProtocol>

<sshUserId>root</sshUserId>

<sshPassword>root</sshPassword>

<devicePool>

<dateTimeSetting>

<dateTemplate>D-M-YA</dateTemplate>

<timeZone>Eastern Standard/Daylight Time</timeZone>

<ntps>

<ntp>

<name>servidor NTP o dirección IP de Asterisk</name>

<ntpMode>Unicast</ntpMode>

</ntp>

</ntps>

</dateTimeSetting>


<callManagerGroup>

<members>

<member priority="0">

<callManager>


<ports>

<ethernetPhonePort>2000</ethernetPhonePort>

<sipPort>5060</sipPort>

<securedSipPort>5061</securedSipPort>

</ports>

<processNodeName>Dirección IP de Asterisk</processNodeName>

</callManager>

</member>

</members>

</callManagerGroup>

</devicePool>


<sipProfile>

<sipProxies>

<backupProxy></backupProxy>

<backupProxyPort></backupProxyPort>

<emergencyProxy></emergencyProxy>

<emergencyProxyPort></emergencyProxyPort>

<outboundProxy></outboundProxy>

<outboundProxyPort></outboundProxyPort>

<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>

<dtmfAvtPayload>101</dtmfAvtPayload>

<dtmfDbLevel>3</dtmfDbLevel>

<dtmfOutofBand>avt</dtmfOutofBand>

<alwaysUsePrimeLine>false</alwaysUsePrimeLine>

<alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>

<kpml>3</kpml>

<natEnabled>1</natEnabled>

<natAddress></natAddress>

<phoneLabel>Frase que aparecerá en la parte superior derecha (sin espacios y carácteres limitados)</phoneLabel>

<stutterMsgWaiting>2</stutterMsgWaiting>

<callStats>false</callStats>

<silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>

<disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>

<startMediaPort>16384</startMediaPort>

<stopMediaPort>32766</stopMediaPort>


<sipLines>

<line button="1">

<featureID>9</featureID>

<featureLabel>Voipbuster</featureLabel>

<proxy>Dirección IP de Asterisk</proxy>

<port>5060</port>

<name>nombre de usuario de cuenta SIP de Asterisk</name>

<displayName>Nombre que aparecerá en los dispositivos que conecten con éste</displayName>


<autoAnswer>

<autoAnswerEnabled>2</autoAnswerEnabled>

</autoAnswer>

<callWaiting>3</callWaiting>

<authName>nombre de usuario de cuenta SIP de Asterisk</authName>

<authPassword>contraseña de usuario cuenta SIP de Asterisk</authPassword>

<sharedLine>false</sharedLine>

<messageWaitingLampPolicy>3</messageWaitingLampPolicy>

<messagesNumber>nombre de usuario de cuenta SIP de Asterisk</messagesNumber>

<ringSettingIdle>4</ringSettingIdle>

<ringSettingActive>5</ringSettingActive>

<contact>nombre de usuario de cuenta SIP de Asterisk</contact>


<forwardCallInfoDisplay>

<callerName>true</callerName>

<callerNumber>false</callerNumber>

<redirectedNumber>false</redirectedNumber>

<dialedNumber>true</dialedNumber>

</forwardCallInfoDisplay>

</line>


<voipControlPort>5060</voipControlPort>

<dscpForAudio>184</dscpForAudio>

<ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>

<dialTemplate>dialplan.xml</dialTemplate>

</sipProfile>


<commonProfile>

<phonePassword></phonePassword>

<backgroundImageAccess>true</backgroundImageAccess>

<callLogBlfEnabled>2</callLogBlfEnabled>

</commonProfile>

<loadInformation></loadInformation>


<vendorConfig>

<disableSpeaker>false</disableSpeaker>

<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>

<pcPort>0 para activarlo, 1 para desactivarlo</pcPort>

<settingsAccess>1</settingsAccess>

<garp>0</garp>

<voiceVlanAccess>0</voiceVlanAccess>

<videoCapability>0</videoCapability>

<autoSelectLineEnable>0</autoSelectLineEnable>

<webAccess>0 para activarlo, 1 para desactivarlo</webAccess>

<spanToPCPort>0</spanToPCPort>

<loggingDisplay>0</loggingDisplay>

<loadServer></loadServer>

</vendorConfig>


<versionStamp></versionStamp>

<networkLocale></networkLocale>

<networkLocaleInfo>

<name></name>

<version></version>

</networkLocaleInfo>

<deviceSecurityMode>1</deviceSecurityMode>

<authenticationURL>http://www/authenticate.php</authenticationURL>

<directoryURL>http://www/directory.xml</directoryURL>

<idleURL></idleURL>

<informationURL>http://www/GetTelecasterHelpText.jsp</informationURL>

<messagesURL></messagesURL>

<proxyServerURL>proxy:3128</proxyServerURL>

<servicesURL>http://www/services.xml</servicesURL>

<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>

<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>

<dscpForCm2Dvce>96</dscpForCm2Dvce>

<transportLayerProtocol>4</transportLayerProtocol>

<capfAuthMode>0</capfAuthMode>


<capfList>

<capf>

<phonePort>3804</phonePort>

</capf>

</capfList>

<certHash></certHash>

<encrConfig>false</encrConfig>

</device>


He puesto en rojo las líneas que hay que modificar.


Las líneas de ssh son para poder acceder al teléfono por esta vía.


El servidor NTP puede ser Asterisk o puede ser uno externo.


La dirección IP de Asterisk es por supuesto la dirección IP del equipo donde corre el servidor.


Donde pongo “nombre de usuario de cuenta SIP de Asterisk” hay que poner el mismo nombre de usuario que al crear las cuentas SIP en Asterisk, como veremos en el siguiente punto. Lo mismo con la contraseña.


Se puede activar o desactivar el acceso web y el puerto de PC.


El fichero dialplan.xml también lo tenemos que crear:


<DIALTEMPLATE>

<TEMPLATE MATCH="0........." TIMEOUT="1" User="Phone"/>

<TEMPLATE MATCH="0............." TIMEOUT="1" User="Phone"/>

</DIALTEMPLATE>


Esto nos va a servir para no tener que pulsar la tecla dial después de marcar un número. Es decir, cuando se marque un 0 seguido de 9 ó 13 números más, y pase un segundo, se le pasa a Asterisk automáticamente ese número.


Para el manejo de estos archivos en lenguaje XML se pueden usar editores xml, yo he usado el Open XML Editor 1.4.


Configuración de Asterisk.


En el directorio etc de Asterisk tenemos los archivos sip.conf y extensions.conf, que será en los que hagamos las modificaciones oportunas.


  1. En sip.conf será donde creemos las cuentas SIP. Este fichero debe ser algo asi:


srvlookup = yes

maxexpirey=180

defaultexpirey=160


register => voipbuster_username:voipbuster_password@sip1.voipbuster.com ;no es necesario


[authentication]

[3000];usuario cuenta SIP

type = friend

context = default

username = 3000

secret=contraseña cuenta SIP

host = dynamic

mailbox = 3000

dtmfmode = rfc2833


[3001];usuario cuenta SIP

type = friend

context = default

username = 3001

secret=contraseña cuenta SIP

host = dynamic

mailbox = 3001

dtmfmode = rfc2833


[3002];usuario cuenta SIP

type = friend

username = 3002

secret = contraseña cuenta SIP

context = default

host = dynamic

mailbox = 3002

dtmfmode = rfc2833



;Configure the incoming calls connection

[sip_proxy-in];Para un número voip-in

type=user

username=usuario voipbuster

secret=contraseña cuenta SIP

host=sip1.voipbuster.com

realm=sip1.voipbuster.com

fromuser=usuario voipbuster

fromdomain=sip1.voipbuster.com

context=incoming

canreinvite=no

insecure=very

qualify=no

nat=no

dtmfmode=inband

disallow=all

allow=alaw

allow=ulaw

call-limit=5



;Configure the outgoing calls connection

[sip_proxy-out]

type=peer

secret=contraseña cuenta SIP

username=usuario voipbuster

fromuser=usuario voipbuster

fromdomain=sip1.voipbuster.com

host=sip1.voipbuster.com

realm=sip1.voipbuster.com

call-limit=5

dtmfmode=inband

context=default

insecure=very

qualify=no

nat=no

canreinvite=no

disallow=all

allow=alaw

allow=ulaw



  1. Al fichero extensions.conf deberemos añadirle lo siguiente:


[internal]

exten => 3000,1,Dial(${ip3000},30,Ttm)

exten => 3000,2,Voicemail(u3000)

exten => 3000,3,Hangup

exten => 3000,102,Voicemail(b3000)

exten => 3000,103,Hangup

exten => 3001,1,Dial(${ip3001},30,Ttm)

exten => 3001,2,Voicemail(u3001)

exten => 3001,3,Hangup

exten => 3001,102,Voicemail(b3001)

exten => 3001,103,Hangup

exten => 3002,1,Dial(${ip3002},30,Ttm)

exten => 3002,2,Voicemail(u3002)

exten => 3002,3,Hangup

exten => 3002,102,Voicemail(b3002)

exten => 3002,103,Hangup

exten => 3003,1,Dial(${ip3003},30,Ttm)

exten => 3003,2,Voicemail(u3003)

exten => 3003,3,Hangup

exten => 3003,102,Voicemail(b3003)

exten => 3003,103,Hangup


La sección “internal” será para configurar el dialplan de nuestra red, es decir, si tenemos varios teléfonos, en este caso tres, marcando la extensión podremos hablar con cada uno de ellos.


[outgoing]

exten => _0XXXXXXXXX,1,Dial,SIP/sip_proxy-out/0034${EXTEN:1}

exten => _0XXXXXXXXX,2,Congestion


exten => _0XXXXXXXXXXXXX,1,Dial,SIP/sip_proxy-out/${EXTEN:1}

exten => _0XXXXXXXXXXXXX,2,Congestion


En esta última sección configuramos las llamadas salientes, al marcar un 0 seguido de 9 dígitos más, se hará una llamada nacional al número de 9 dígitos, es asterisk el que pone el prefijo 0034. Y al marcar un 0 seguido de 13 digitos la llamada será internacional. Aquí se pueden añadir las entradas que se quiera, según nuestras conveniencias.



Comandos útiles en la consola de Asterisk:


  • reload: reinicia el servidor.

  • sip show peers: muestra los usuarios registrados y sus IP's.



Para información más detallada visitar http://www.voipinfo.org/ de donde he conseguido casi toda la información.


12 comentarios:

akae dijo...

eso es mentira todo seguro.... a ver si la próxima vez pones un texto más corto y un enlace a la versión larga, que así es un coñazo...
un abrazo tio, y a ver si te animas y cuentas un poco tu vida por aqui...

Anónimo dijo...

Pues casualmente hoy andaba liado con unos 7911 que me estaban dando bastante guerra para pasarlos a SIP y tu articulo me ha sido de enorme utilidad.

Muchas gracias.

David

Barri dijo...

La virgen!! Qué chungo!!

bienbenidos a mi pagina dijo...

hola esta bonito y muy util tu blog pero no sabes como cambiar de idioma al español en las opciones de los telefonos cisco 7911G o 12G YA CAMBIE EL IDIOMA DE LOS SONIDOS PERO ME FALTA EL IDIOMA DE LAS OPCIONES DEL TELEFONO

bienbenidos a mi pagina dijo...

hola esta bonito y muy util tu blog pero no sabes como cambiar de idioma al español en las opciones de los telefonos cisco 7911G o 12G YA CAMBIE EL IDIOMA DE LOS SONIDOS PERO ME FALTA EL IDIOMA DE LAS OPCIONES DEL TELEFONO

degmet dijo...

Muy buena toda la información que hay en tu blog. Tengo un teléfono IP 7921G, y no encuentro por ninguna parte los archivos necesarios para actualizar el firmware. Intenté descargarlos desde Cisco, pero no tengo contrato de soporte :(. Encontré en internet un archivo *.sgn para este teléfono, pero parece que necesitaría el Call Manager para descargar el FW. Saludos.

Anónimo dijo...

muchas gracias amigo me funciono de maravilla gracias por el aporte, aqui dejo un ejemplo de mi configuracion gracias...




SIP

root
123456jr



D/M/Y
Eastern Standard/Daylight Time


192.168.1.111
Unicast









2000
5060
5061

192.168.1.111








true
2


SIP11.8-3-1


true
true
0
0
0
0
0
0

1
1
1





1

http://192.168.1.111/cisco/services/authentication.php
http://192.168.1.111/xmlservices/PhoneDirectory.php
http://192.168.1.111/xmlservices/index.php




http://192.168.1.111/xmlservices/index.php
96
0
96

4

0


3804




true









true



true
x--serviceuri-cfwdall
x-cisco-serviceuri-pickup
x-cisco-serviceuri-opickup
x-cisco-serviceuri-gpickup
x-cisco-serviceuri-meetme
x-cisco-serviceuri-abbrdial
false
5
true
true
2
2
0
true



6
10
180
3600
5
120
120
5
500
4000
70
false
None


1
false
true
false
false
none
101
3
avt
false
false
3

false
192.168.1.111

0

false
10
false

16384
32766

5060
184
1
dialplan.xml

Ernesto


9
1000
1000
1000
1000

192.168.1.111
5060

2

3

1000
123456

true
1
*97
4
5


true
true
true
true

Juan Carlos Reyes dijo...

que contenido debe tener el archivo
CTLSEPXXXXXXXXXXXX.tlv

he realizado pruebas y siempre regresa a la etapa de configuracion ipyme

rla dijo...

Hola

Estoy intentando hacer lo que indicas. Pero lamentablemente sigue en el proceso de upgrading y no puedo hacer que salga de ahi.

Pueden darme una yuda

R3ne dijo...

Hola! Muy buen tutorial. gracias a él, he conseguido cargar el firware SIP y la configuración al telefono pero no se registra en asterisk .
En la pantalla del telefono aparece el mensaje "registering" pero no se registra. Creo que ni lo intenta ya que no veo intentos en la consola de asterisk. Alguna ayuda?
Gracias.

Unknown dijo...

Buenas, tengo un cisco 7906G, he cargado el firmware, cargado el archivo SEP.cnf.xml con la configuracion que aparece en el blog y parece ser que no funciona, lo mas extraño es que ni el ntp me cambia, alguna ayuda que me puedan proporcionar.

Anónimo dijo...

Hola, por favor puedes montar de nuevo el link de los archivos que debemos cargar en el servidor TFTP, consegui los cmterm-7911_7906-sip.9-2-1 el telefono encontro el servidor TFTP e intento actualizar una vez que actualizao se reinicio y volvio a pedirlos, pero los del protocolos SCCP es decir como que actualizo a SIP y despues volvio a SCCP no entendi porque.. ):