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

Author
William Bell
Vice President, Solutions and Products

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.


William Bell is the Collaboration Practice Lead for Chesapeake NetCraftsmen. Bill has over 10 years of experience in the IT industry with a focus on communication and collaboration technologies. In addition to blogging on the NetCraftsmen site, Bill also maintains the UC Guerrilla blog: http://ucguerrilla.com. You can follow Bill on Twitter: @ucguerrilla

15 responses to “SIP Endpoints in Cisco Communications Manager (Call Manager) Express – X-Lite

  1. Hi Bill,
    For the past few days I was desperately searching for this topic about – how to register SIP Phone with CCME and lastly found this beautiful blog.
    So, Thanks a lot !
    But , still now , I am in a lot of confusion about : How to Setup CME SIP trunk to VOIP SIP Service Provider .
    Can you plz. provide some config examples regarding this ? That will help a lot !

    – Juli.

  2. Juli,

    Thanks for the feedback. I have not tested CME with ITSP SIP trunks. I have integrated with Verizon business SIP trunks and have planned for ATT SIP trunk integration on the CUCM platform (using CUBE). The lesson here is that in some cases you may be able to get an approved configuration from the carrier which will help you with your own configuration. I wouldn’t accept SIP trunk configurations "blindly". IOW, you may need to enforce some security the exceeds what the carrier recommends.

    Since I don’t have real data to give you on configs/testing results with CME I figured I could at least point you in a good direction. Check out this link for configuration examples for CME SIP trunks.

    http://www.cisco.com/en/US/products/sw/voicesw/ps4625/products_configuration_example09186a00808f9666.shtml

    HTH.

    Regards,
    Bill

  3. A very important thing to note is that use enable call manager service from the ‘Cisco Unified Serviceability’ page.

  4. Thanks for the great write up… Getting a error on mine. VOICE_REG_POOL: Contact doesn’t match any pools

    Any ideas?

  5. David,

    That error message means CME is not able to match the registration request to any configured pool. Use "show voice register pool" to verify your registration pool configuration. Also make sure that the dn associated with the registration pool in cme matches the username in xlite.

    HTH.

    Regards,
    Bill

  6. I have no real interest in voice beyond setting up X-lite to work with a 2851 I have at home, so I can dial in from the road if i’m beyond cell coverage/international.

    Easy to follow instructions, integrated like a charm with my existing CME/sccp phones.

    Many thanks Bill.

  7. Could I use this (connecting through a VPN) configuration for the cisco mobile app for iphone? I understand it works like a SIP phone.

    Thanks

  8. Fred,

    Are you asking about the Cisco Mobile (renamed jabber) client for iPhone? Or are you asking about the iPhone client that CounterPath offers? VPN information for the Cisco Jabber Client for iPhone is available on CCO. I did a write up on it that you may find helpful: http://netcraftsmen.net/resources/blogs/tags/Cisco-Jabber-Client/

    I do plan on testing CounterPath’s soft phone for iOS devices, but haven’t been able to work in the schedule yet.

    HTH.

    Regards,
    Bill

  9. Hi I get the following error:

    027250: Apr 16 02:05:00.967: //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDispla
    Sent:
    [b]SIP/2.0 401 Unauthorized[/b]
    Date: Mon, 16 Apr 2012 02:05:00 GMT
    From: "Tim";tag=7ecaad31
    WWW-Authenticate: Digest realm="",nonce="51B115DD0199AD77",algorit
    th"
    Content-Length: 0
    To: "Tim";tag=1000C6A4-54
    Call-ID: OTZlMjY1NGUxMmZiZTBiOTcyMzkyNjhlOTk0Mjk5Yjk.
    Via: SIP/2.0/UDP 192.168.1.14:51792;branch=z9hG4bK-d8754z-7642447b
    8754z-;rport;received=24.47.x.x
    Server: Cisco-SIPGateway/IOS-12.x
    CSeq: 1 REGISTER

  10. Hi Bill
    Can I set up shared line between a SIP phone and a Skinny phone ? If yes how I can do that?

  11. Rangel,

    In my testing, shared line appearances will not function as desired when using a 3rd party SIP device with a shared line on a Cisco SCCP device. I have not revisited this in some time to see if I could workaround the interoperability issues I experienced.

    HTH.

    -Bill

  12. I need the source code of SIP Server servlet in JAVA. Basically I tried something, but its just getting registration.. But not able to communicate in between other system in LAN Connection. I am here using Netbeans IDE, XLITE Phone to work with SIP Servlet Project. Any help is acceptable.
    Thanks in advance.

    chethanyes@gmail.com

  13. Hi !
    Very good post, I used it to register few x-lite on my CUCME.
    The Receiving/Sending calls works great but I still have a problem :
    When I close X-lite (or if the computer is shutdown) if I try to call
    the number configured on X-lite I get an error on my phone “Unknown
    number” whereas when X-lite is online, the forwarding to the voicemail
    works.
    I’ve an another problem, maybe with a link with the first,
    the voicemail notification (MWI) doesnt work (it dont dispay when I’ve a
    new message).
    I search on this subjects for few days, if you have some ideas, I take it.

    Rphl

Leave a Reply