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