SIP Endpoints in Cisco Communications Manager (Call Manager) Express - X-Lite

Posted by: William Bell

Tagged in: X-Lite , UC520 , UC500 , SIP , CUCME , Cisco CallManager , CallManager Express

Around a week ago I posted a blog about setting up 3rd Party SIP phones in Cisco Unified Communications Manager (CallManager).  I received a comment about whether it was possible to use X-Lite with the UC-520.  Well, I haven't used the UC-520 myself but I believe it is basically Cisco Unified Communications Manager Express (CUCME).  I happen to have one of those hanging out in my lab so I figured it would be interesting to test X-Lite on CUCME.

 

Be forewarned that this is not a definitive guide on how to get the X-Lite application to communicate to the various other types of devices, trunks, and applications that may be registered  to  or interacting with a UC-520 or CUCME host.  It simply outlines a method for getting X-Lite registered.

 

I do plan on doing interoperability testing (when time permits) with 3rd party SIP devices on CUCM.  Might as well do the same on CUCME.  So, when I gather enough data points I will post a follow up to this blog.

Versions and other information.

For my testing I used X-Lite version 3.0 and CUCME version 7.1 (IOS: 12.4(24)T1).  Note, this IOS version is not the one I recommend.  It was just the version I have loaded on CUCME at this time.  Not that I have anything against the 12.4(24)T train but I am finding that I like 12.4(20)Tx for production use.

It all starts with a download.

First, you will need to download the X-Lite application here.  The install is pretty straight forward and relatively quick.

Configuring CUCME.

All in all this is a painless process.  First, configure the voice services:

voice service voip
allow-connections sip to sip !Allows SIP phones to call other SIP phones
sip
registrar server expires max 1200 min 300 !Enable IOS SIP Registrar

Next, we will configure the voice register configuration stanza.  The "voice register global" configuration is similar to the telephony-service configurations used for SCCP phones.

voice register global
mode cme
source-address 10.3.5.2 port 5060
max-dn 10 !Configure the maximum number of SIP extensions
max-pool 5 !Configure the maximum number of SIP phones
authenticate register
authenticate realm netcraftsmen.net !Doesn't impact X-Lite whether it is applied or not
tftp-path flash: !Not necessary to get X-Lite to register, but useful for Cisco SIP phones
create profile !Generates configuration files for phones

Now we create the directory number for the X-Lite station and the phone registration information.

voice register dn 1
number 51234
allow watch !If you are doing any Presence-like things
name xlitetest
label 51234
!
voice register pool 1
id mac DEAD.BEEF.0001 !Just as with CUCM, this field is arbitrary and not used by X-Lite
number 1 dn 1 ! Of course you need a phone number to use a phone, but X-Lite also needs a user ID
dtmf-relay sip-notify ! You have choices here, use sip-notify if you also have CUE for VM
username bbellsip password t3st1ngxl1t3 !Required for X-Lite
codec g711ulaw ! Or whatever you need. NOTE: X-Lite basic (free) only supports G711

To support basic registration from an X-Lite client, the above configs are all that are needed.  Of course, there are things you may need to consider outside of getting a single device registered but that is a topic for another day.

After configuring a new SIP phone, it is a good idea to issue a "restart" under the "voice register global" stanza:

iecucme01#conf t
Enter configuration commands, one per line. End with CNTL/Z.
iecucme01(config)#voice register global
iecucme01(config-register-global)#create profile
iecucme01(config-register-global)#restart
iecucme01(config-register-global)#

Configuring X-Lite.

Launch the X-Lite application.  You may get prompted for software updates, etc.  After the application loads, you will have a screen similar to the following:

Right click on the "LCD Screen" and choose Account Settings.  Click on Add to create a new SIP account.  Go to the "Account" tab and configure as follows:

 

 

The figure above gives you some guidance on what should be configured in each field and what needs to match CUCME configuration fields.

  • Display Name:  This locally significant to X-Lite only and has no bearing on CUCME registration
  • User name: This should be the directory number assigned to the phone as specified in the "voice register dn 1" configuration stanza shown previously
  • Authorization user name:  This is the "username" configured under the "voice register pool 1" stanza in our example
  • Password:  This is the "password" configured under the "voice register pool 1" stanza in our example
  • Domain:  This is the IP address or name of your CUCME host

Click on OK.  If you setup everything correctly, you should see a screen similar to the following:

 

 

In CUCME, if you want to check and see if the X-Lite client (or any SIP client) is registered, use the following commands:

iecucme01#show voice register pool 1
Pool Tag 1
Config:
Mac address is DEAD.BEEF.0001
Number list 1 : DN 1
Proxy Ip address is 0.0.0.0
DTMF Relay is enabled, sip-notify
Call Waiting is enabled
DnD is disabled
Busy trigger per button value is 0
keep-conference is enabled
username bbellsip password t3st1ngxl1t3 !Yikes, clear text
Transport type is udp
service-control mechanism is not supported
registration Call ID is a3641f4293724243NjMzNjljODg3MjgwZDM5NGZkMjcyNTUwMzcyMTdlZDQ.
Privacy feature is not configured.
Privacy button is disabled
active primary line is: 51234

contact IP address: 192.168.1.6 port 22666


Dialpeers created:

dial-peer voice 40001 voip
destination-pattern 51234
session target ipv4:192.168.1.6:22666

session protocol sipv2
dtmf-relay sip-notify
codec g711ulaw bytes 160
after-hours-exempt FALSE
Statistics:
Active registrations : 1 !This is good news

Total SIP phones registered: 1
Total Registration Statistics
Registration requests : 4
Registration success : 4
Registration failed : 0
unRegister requests : 3
unRegister success : 3
unRegister failed : 0

If you find you are having issues registering X-Lite to CUCME, then you can use debug voice register events and debug voice register errors.  An example (of a successful request):

iecucme01#debug voice register events
iecucme01#term mon
Feb 5 03:36:27.698: VOICE_REG_POOL: Register request for (51234) from (192.168.1.6)
Feb 5 03:36:27.698: VOICE_REG_POOL: key(DA4A62E40AC40ED4) added to nonce table
Feb 5 03:36:27.914: VOICE_REG_POOL: Register request for (51234) from (192.168.1.6)
Feb 5 03:36:27.914: VOICE_REG_POOL: Contact matches pool 1 number list 1
Feb 5 03:36:27.918: VOICE_REG_POOL: key(51234) contact(192.168.1.6) add to contact table
Feb 5 03:36:27.918: VOICE_REG_POOL: No entry for (51234) found in contact table
Feb 5 03:36:27.918: VOICE_REG_POOL: key(51234) contact(192.168.1.6) added to contact table
Feb 5 03:36:27.918: VOICE_REG_POOL pool->tag(1), dn->tag(1), submask(1)

Feb 5 03:36:27.918: VOICE_REG_POOL: Creating param container for dial-peer 40001.VOICE_REG_POOL
pool->tag(1), dn->tag(1), submask(1) VOICE_REG_POOL pool_tag(1), dn_tag(1)

Feb 5 03:36:27.922: VOICE_REG_POOL: Created dial-peer entry of type 0
Feb 5 03:36:27.922: VOICE_REG_POOL: Registration successful for 51234, registration id is 6
Feb 5 03:36:27.926: VOICE REGISTER POOL-1 has registered. Name:SEPDEADBEEF0001 IP:192.168.1.6
DeviceType:Phone

Feb 5 03:36:27.930: VOICE_REG_POOL: Contact matches pool 1 number list 1

Dial Plan

As with CUCM, you will have to program a dial plan for X-Lite if you want to emulate the standard experience you have from a SCCP phone.  The dial plan configurations are briefly touched on here.  This link also provides a link to the X-Lite user guide which dives deep on the dial plan settings.

Voice Mail

I did not test X-Lite with CUE this time around.  That will have to be something I look into at a later date.

Conclusion

Actually, getting X-Lite registered to CUCME is quite easy.  For the UC500 I gather from some quick searches that it is CUCME from a call processing point of view.  You may need to do the configs in IOS.  Again, I have not reached a point of saying this is something I would deploy in production.  Still more testing to do.

 

Comments (0)Add Comment

Write comment

busy