Droid SIP Clients and Cisco CUCM – Sipdroid Example

Author
William Bell
Vice President, Solutions and Products

The Setup

I am using a Droid Incredible handset running Droid 2.2 (Froyo – what a name). I am still running the 7.1(3b)SU2 version of CUCM that Hailey used to test iPhone SIP clients and that I used to test X-Lite.  In my lab, the CUCM cluster is integrated with LDAP. Specifically a Microsoft AD 2003 DC/GC for testing.

The Sipdroid application version is 1.6.1 beta. You can access Sipdroid from the Android Market.

Configuring CUCM

To save readers the time to go back to the X-Lite example, I will repeat the CUCM configuration steps here.

I like to get the station configured in CUCM before I start playing around with the client.  In CUCM you will need to create a SIP device and a user object.  You will need to make some associations between the two and perform some other ancillary activities in preparation.

Add a SIP Security Profile

I suppose you could consider this an optional step if you don’t mind SIP endpoints just registering to your CUCM cluster without a password.  I do mind this, so we are going to create a SIP security profile that forces the use of Digest Authentication.  If you go with the standard SIP security profile, digest authentication is not used.  This means that a client can connect by simply providing the extension number and a user ID.

Connect to your CUCM server (http://mycucm/ccmadmin) and go to System->Security Profile->Phone Security Profile.  Search for profiles that contain the string “third-party” and copy the profile named “Third-party SIP Device (Basic) – Standard SIP Non-Secure Profile”.  Configure the new profile as follows:

Save your settings.

Add the User

Go to User Management->End User.  You can add a new user or use an existing user.  You can also use a user that was replicated from LDAP using the DirSync service.  The information you need to configure (values shown are used in our example):

  • User ID: mysipuser
  • Password: (this is not used by Sipdroid, but you should always have one)
  • PIN: (this is not used by Sipdroid, but … you get the idea)
  • Last Name: Bell
  • First Name: Bill
  • Digest Credentials: *******  (this is used by Sipdroid!)

Click on Save.  We will come back to the user object in a moment.

Add the SIP Phone

Go to Device->Phone.  Click on Add and select “Third-Party SIP Device (Basic)”.  At a minimum, you should configure the following settings (values shown are used in our example):

  • MAC Address:  DEADBEEF0000 (set it to something unique, it doesn’t matter to SIPDroid)
  • Description:  Testing My Sipdroid (set it to something meaningful to you, it doesn’t matter to Sipdroid)
  • Device Pool:  HQ_User-SoftPhone_CSS (You should use a device pool that makes sense in your environment. I like to stick my softphones in a separate bucket. 
  • Calling Search Space: HQ_User-Std_CSS (this should be a CSS that fits into your dial plan, just like a standard Cisco SCCP station)
  • Device Security Profile: Third-party SIP Device (Basic) – Digest Required
  • Owner User ID: mysipuser
  • Digest User ID: mysipuser

Click on Save.  After saving the phone, you can add an extension.  Add the extension as you normally would.  The bare minimum settings I used for testing:

  • Directory Number: 9165551234  (I use 10d extensions)
  • Partition: CL_DN-1_PT (place the DN in your “phones” partition)
  • CSS: Apply line level CSS per your design
  • Voicemail Profile: Use the VM profile that you normally would
  • Call Forwarding: Configure Call Forwarding as you would normally, for example CFNA and CFB to voicemail
  • Display and Alerting:  Configure these as you would like

Click on Save.

Edit User Object

Now go back to the user you are assigning this soft phone to (e.g. mysipuser ).  Edit the user object.  Go to Device Associations and associate the device you just created.

Click on Save.

Configure Sipdroid

I’ll assume that the reader is quite capable of installing an application on their Android phone and jump right to configuring the client. First, you can load the Sipdroid client from your “All Apps” page.

When you launch the application you get a somewhat odd (to me anyway) main page. In the main page you can touch your menu key to pull up an options menu at the bottom of the screen.

 

Select the “Settings” menu option and you will go to the main settings page. You will notice that there are two “SIP Account” options.  Select the first one and you will go to the account configuration page.

   

The account configuration page is about two pages long. You only need to configure the items that are highlighted in red. You’ll also notice that my configuration is set to use the WLAN only.  I have not tested this client with VPN services and/or 3G.

You’ll notice from the settings that you specify an authorization user name which is equivalent to the CUCM end user ID. You also need to specify the “Username” or “Caller ID” as the extension assigned to the station. In my case, a 10-digit extension is used. This is an important feature in a 3rd party SIP client. You want to have a way to differentiate the authorization user from the extension that a client registers with. Some clients do not offer this features and the net effect is that the CUCM End User user ID and phone extension need to be identical. If you don’t mind having user IDs match extensions (or you already do so due to apps like Extension Mobility) then maybe that is OK.

Testing the Application

Hit the “Back” button twice to go back to the Sipdroid main page. At the top of your phone, in the status bar, you should see a small dot which indicates registration status. If you see a yellow dot, the client is attempting to register. Red means that the registration failed. Green means that the registration is successful. You can also go to status messages for your phone and get the current status.

From the main screen you can enter a number to dial in the “Called Party Address” or “Phone Number” fields. You can also bring up the phone keypad interface by select the “number 5” in the top right corner of the screen.

  

You can dial another CUCM extensions, application, hunt pilot, route pattern, etc. and then press the “Call” button.  You should also test calling to the Sipdroid client. More or less it is working if you can get call path.

 

The above screen shots show an active call in progress (left). If you need a DTMF keypad for the call then you can select the “5” at the bottom of the call progress screen and drag up. If you wanted to engage the speaker phone, mute/hold the call, or hang up you can press the your Droid phone’s menu key to bring up a call control menu.

 

Of course, as the screen instructions suggest, you can also drag the “Call in progress” box down to end the call.

Further Testing

At this point, I have only tested basic call functionality. I am not going to go into my opinions on the client’s aesthetics or general usability. One thing I did like is that you can exit the client and keep it from running in the background and eating up memory or battery life. I do also like that the “Call in progress” screen shows packet loss and latency.

I plan on conducting more tests and will update this article as needed.

CODEC

Codec mismatches seem to cause people trouble when dealing with 3rd party SIP devices. The Sipdroid supports the following CODECs:

  • G.722 wideband
  • G.711 a-law (listed as PCMA)
  • G.711 u-law (listed as PCMU)
  • speex
  • GSM
  • BV16

In the CUCM realm, G.711 and G.722 are your likely choices. Though the CUCM supports GSM as well. The important thing is that all call parties need to be able to negotiate a common CODEC that is permissible by the CUCM region (and inter-region) configurations.

Oh, the Sipdroid client also has a video capability set. I definitely plan on looking into this. It would be nifty if I could do a video call with my 9951. Though, I don’t know how useful that would be without a front-facing camera!

A Word on the Screen Shots Used in this Article

While not directly related to this blog in any way, I did want to share how you can grab screen shots from the Droid Incredible. It is a very easy find on Google. I happen to use a Mac, so I found the following blog to be very helpful: How to Take Screenshots of the Droid Incredible in Mac OS X.

4 responses to “Droid SIP Clients and Cisco CUCM – Sipdroid Example

  1. I have been able to get sipdroid to connect to my CUCM server but when trying to dial from my phone it fails and ends call immediately. I can see and hear calls coming in but when I answer the call either ends immediately or I get no audio.

    Any thoughts?

  2. Sounds like you may want to take a look at region (intra-/inter-) settings and see if there is a codec negotiation problem.

    HTH.

    Regards,
    Bill

  3. Register to CUCM v7.1.5 can make outgoing calls with 2 way audio from Sipdroid on a DroidX to VOIP extensions.

    When recieving a call from VOIP extensions, can answer call but no audio in either direction Call stays connected until hung up on either end

    Any Thoughts on this? Thanks

  4. Have you attempted to use sipdroid with CME? I saw your other post about CME and Xlite and attempted to use a combination of the two as a guide to setting up sipdroid with CME, but I continue to get 404 errors.

    What’s weird is that even though the registration fails, I can still dial other phones and they will ring, although the call fails as soon as it as answered.

Leave a Reply