Professional Documents
Culture Documents
WFHDEVELOPERS.COM
Prerequisites
1. TFTP Server you need to have a TFTP Server setup and ready to go. Cisco offers a good
TFTP Server that is easy to install, configure, and use. I recommend searching Google for
Cisco TFTP Server download. This doesnt mean you need a server to make this work.
The TFTP server is just an application that will run on just about anything. I used to run the
Cisco TFTP server on an old Dell P90 Laptop running Windows 98.It used very little power,
was reliable, and allow me to carry IOS & configs wherever I went.
2. Working router the router which you want to setup for voice needs to have a working
configuration that allows it to see the TFTP server. If not, you will not be able to install the
CME files needed to continue.
3. Cables you need cables to connect the equipment. Cat 5 Ethernet cables and whatever you
need to connect the router to the rest of your network. I use a serial cable connected to a
WIC-1T module.
4. Power Supplies most EBay sellers and network equipment recyclers sell the Cisco IP
Phones without power supplies and without handsets. Make sure that you have the needed
accessories for your phones: handset, handset cable, and power supply. If you are powering
the phone using POE (Power over Ethernet) you will not need the power supplies. If you are
not familiar with POE, then I recommend using the power supply.
5. CME and IOS software hopefully your router came with both. If not, there are some sources
online that provide downloads of each. I do not condone downloading copyrighted software.
However, if you do, be careful with what you download. There are some shady characters out
there. Also, if possible, get the original hash from Cisco.com for the IOS & CME that you
downloaded and compare the two at a minimum.
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
Formatting Notes
1. Router commands that you need to type in are in BOLD. For example, the command to show
the current version of IOS on your router: router#show version
2. Screen captures from the phone were made as much as possible using the Cisco IP Services
SDK. Notes are in the back of this document on how to set that up. The screen shots look like
this one (this screen shot shows the logo loaded via the Idle URL):
Lab Equipment
(1) Cisco 2610XM Router w/ 98MB System
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
Total cost around $250 and all had free shipping. You will need to find a copy of the IOS and CME
software on your own if they do come with your router.
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
Topology
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
Step by Step
1. Install IOS - when copying from the TFTP server, it will ask you if you want to erase the flash first. I
said yes since there was nothing on there that I wanted. I would recommend erasing the flash after
backing-up whatever is on there - like your current IOS.
2. After the IOS install and configuration for normal operation, you need to install the CME files.
Extract the CME files to a location on your computer. You do not need all of these files. If you
have the flash space on your router, go ahead and extract all of them there. If not, you only
need 2 files and the firmware files for each phone.
1. to extract all files to the flash (change the command to meet your TFTP server
address and filename):
router#archive tar /xtract tftp://x.x.x.x/cme-full-x.x.x.tar flash:
2. to extract only the required files (change the command to meet your TFTP server
address and filename):
router#archive tar /xtract tftp://x.x.x.x/cme-bacd-x.x.x.x.tar flash:
router#archive tar /xtract tftp://x.x.x.x/cme-gui-x.x.x.x.tar flash:
3. to extract the phone firmware files, repeat the process with the phone firmware. If
you do not know which firmware files you need for your phone, you can visit the
Cisco website. They have a matrix of phone firmware files needed for your
version of CME. There's also another matrix which shows what version of CME
will work with your router.
router#archive tar /xtract tftp://x.x.x.x/P00308000500.tar flash:
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
3. Enable the HTTP Server on your router and configure a web admin system administrator (needed for
CME from web browser)
router(config)#ip http server
router(config)#telephony-service
router(config-telephony)#web admin system name <username> password <password> secret 0
<password>
enable web user to administer directory names from the web browser
router(config-telephony)#dn-webedit
4. Set the max number of directory names (keep the number as small as possible. too large of a number
can cause the router to work slower when handling other processes. I used 4)
router(config-telephony)#max-dn XX
5. Set the max number of ephones (keep the number as small as possible. too large of a number can
cause the router to work slower when handling other processes. I used 4)
router(config-telephony)max-ephones XX
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
6. Set the source IP address and port # of the CME. The default port is 2000 and does not have to be
entered. Replace X.X.X.X with the address of your CME router
router(config-telephony)#ip source-address X.X.X.X
7. You should be able to browser to your CME from a web browser now
http://X.X.X.X/ccme.html
You will need the account created in step 3 to login. You may also need to add the site to
your trusted list of sites so that all of the functions will work without errors and pop-up
warnings.
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
10
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
11
8. Tell the TFTP server on the router which file(s) to advertise for the phone firmware. The TAR file for
the 7940 phone had 4 files. These files were placed on the router during step 2-3 :
router(config)#tftp-server flash:P00308000500.loads
router(config)#tftp-server flash:P00308000500.bin
router(config)#tftp-server flash:P00308000500.sb2
router(config)#tftp-server flash:P00308000500.sbn
The above command needs to be done for each phone type on your system.
Execute the following command. Your output should look something similar to this:
router#show run | i tftp-server
Remember what you see above may/will be different from what I have shown here based on
the phones you are using.
We can also specify the MOH (music on hold) the same way:
router(config)#tftp-server flash:<filename.ext>
(The filename and extension of the music to play. See Cisco documentation for details)
router(config)#telephony-service
router(config-telephony)#moh <filename.ext>
(This can also be set from the web browser)
Fig 8.1 Setting the MOH (Music On Hold) from the web browser
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
12
9. Set the router time and time zones for correct display on the phones. You can also set the time and
time format from the web browser if you completed step 3 but not the time zone.
router#clock set 23:51:30 20 July 2009
router#(config-telephony)#time-format 12
(can be 12 or 24 hour time)
router#(config-telephony)#time-zone ?
(select the number of your time zone and repeat the command with the number added)
router#(config-telephony)#time-zone 13
(for me it's 13 US Eastern Standard Time)
Fig 9.1 Setting Date & Time formats from the web browser
Fig 9.2 Setting the Date & Time from the web browser
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
13
10. Now we have to tell the router which firmware file to send to connecting phones, create the
configuration files, and restart the phones so they see the changes. For the 7940/CME version that I
have it's:
router(config-telephony)#load 7960-7940 P00308000500
(filename only - no extension)
the above command needs to be done for each phone type on your system. Notice that the
filenames are the same and only the extension is different.
router(config-telephony)#create cnf-files
(Creates the configuration files that the phones use for setup)
router(config-telephony)#restart all
(Restarts all of the phones so they can read the new configuration files)
11. Create a directory number for your first phone. This is directory number 1 (not the phone number, just
a numeric label) and it's a dual line ( you want this)
router(config)#ephone-dn 1 dual-line
(Dual line allows for call waiting, if not specified, it defaults to single line)
router(config-ephone-dn)#number 1001
(This directory entry's extension)
router(config-ephone-dn)#name User Name
(This name will appear in the on-phone directory)
router(config-ephone-dn)#description Something Useful to identify this number
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
14
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
15
Fig 12.3 Cisco 7940 with button 1 attached to DN 1. Pressing the first button on the right side of this
phone will call extension 1001. Thats the DN we created in step 11 and assigned to button 1 in
step 12. The second button is a speed dial and appears on the first available button.
13. Make sure that the DN and ephone took
router(config)#do show ephone-dn summary
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
16
14. Setup Dial Peers so the calls can be routed to the outside line (FXO card). These are for North
America
router(config)#dial-peer voice 1 pots
(just a number label for this dial peer)
router(config-dial-peer)#destination-patter [2-9]......
(any number from 2 to 9 and then any number (555-1212))
router(config-dial-peer)#desc 7 digit dialing
router(config-dial-peer)#port 1/0/0
(the port to route the call out of - NM 1, VIC 0, PORT 0)
router(config-dial-peer)#exit
router(config)#dial-peer voice 2 pots
(just a number label for this dial peer)
router(config-dial-peer)#destination-patter [2-9]..[2-9]......
(any number from 2 to 9, any number from 2 to 9, then any number (555-555-1212))
router(config-dial-peer)#desc 10 digit dialing
router(config-dial-peer)#port 1/0/0
(the port to route the call out of - NM 1, VIC 0, PORT 0)
router(config-dial-peer)#exit
router(config)#dial-peer voice 3 pots
(just a number label for this dial peer)
router(config-dial-peer)#destination-patter 1[2-9]..[2-9]......
(1, any number from 2 to 9, any number from 2 to 9, then any number (1-555-555-1212)
router(config-dial-peer)#desc Long Distance
router(config-dial-peer)#prefix 1
(prefix with 1 since the 1 in the destination pattern will be stripped)
router(config-dial-peer)#port 1/0/0
(the port to route the call out of - NM 1, VIC 0, PORT 0)
router(config-dial-peer)#exit
router(config)#dial-peer voice 4 pots
(just a number label for this dial peer)
router(config-dial-peer)#destination-patter [469]11
(service numbers : 411, 611, 911)
router(config-dial-peer)#desc Service Numbers
router(config-dial-peer)#port 1/0/0
(the port to route the call out of - NM 1, VIC 0, PORT 0)
router(config-dial-peer)#exit
The below dial-peers are failovers if you lose your port 1/0/0 connection. If you only have one
connection, then don't worry about these
router(config)#dial-peer voice 11 pots
(just a number label for this dial peer)
router(config-dial-peer)#destination-patter [2-9]......
(any number from 2 to 9 and then any number (555-1212))
router(config-dial-peer)#desc 7 digit dialing
router(config-dial-peer)#port 1/0/1
(the port to route the call out of - NM 1, VIC 0, PORT 1)
router(config-dial-peer)#exit
router(config)#dial-peer voice 12 pots
(just a number label for this dial peer)
router(config-dial-peer)#destination-patter [2-9]..[2-9]......
(any number from 2 to 9, any number from 2 to 9, then any number (555-555-1212))
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
17
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
18
router(config-voiceport)#exit
router(config)#show voice port summary
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
19
16. Repeat Steps 11 and 12 for each phone. Once done, start making calls, after backing up your configs
and setting up your phones!
router#copy start tftp
(Backup your existing startup config just in case. I usually add the date to my configs:
Router#copy start tftp://xxx.xxx.xxx.xxx/configs/routers/cmerouter_MMDDYYYY)
router#copy run start
(Copy the running config, with all of our changes, to the startup config)
router#copy start tftp
(Backup your config)
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
20
Additional Notes
This section contains additional configuration options do enhance your voice lab experience.
Press **# The unlocked icon will appear and allow you to make changes
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
21
Press Edit.
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
22
c.
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
23
Phone is ready to go
Phone has been idle long enough for the logo in the Idle URL to be
displayed. See the section on the Cisco IP Services SDK.
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
24
Download and install the Cisco IP Services SDK from Cisco.com. I believe its free and
available to registered users with Guest access (default access level). Installation
instructions are included in the download. Theres also a large document you can download
with more detail on using the SDK. Pay particular attention to installing the CGI files and
registering the DLLs. These are very important steps that you do not want to skip.
a. After downloading the SDK, unzip it to a folder:
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
25
c.
Only one website can be on port 80 at a time. Stop the default website if it is not
needed, or select a different port to run the new web site on. This should have
been done during the wizard but you can change it at any time by right clicking on
the website and selecting properties
d. Now you should have a working website. I elected to enable directory browsing on
my new website. This way, I can navigate to the website and make sure its
working.
e. Next step is to install/register all of the services
f. Go to your SDK folder and open the COMServers subfolder
g. Each one of the subfolders in COMServers has a readme.txt file that explains how
to install them. Follow these files to the letter. Failure to do so will cause them not
to work in most cases.
h. Now you are done with the hard part.
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
26
c.
Enter the IP address of your phone, username and password you created way
back in Step 3 when setting up your router, click Get Screenshot and you should
see an image of your phones screen (something similar to this):
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
27
d. If you get an error, you may need to make a few changes to get the browser to
authenticate so you can gain access to the phone. I did this anyway so I wouldnt
have to login to every phone to get a screenshot (Im lazy and its just a lab
anyway). Follow the next few steps to setup authentication.
e. Open CME in your browser. Click Configure > System Parameters > IP Phone
URLs
f.
In the Authentication URL, enter the path for the following file on your SDK website
(this is why a elected to allow directory browsing on my website. On my site its
http://x.x.x.x/ASP/pushauthenticate/pushauthentication.asp)
pushauthentication.asp
g. Lets edit this file now so that it will always authenticate without having to specify a
username/password for the phone. You can use Notepad or WordPad. Its just a
simple text file. Comment out some lines to make the authentication always pass
(your code should look like this after commenting it out):
//if ((userID == pushUserID) && (password == pushPassword))
//{
Response.Write("AUTHORIZED");
Response.End();
//}
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
28
h. Save the file and try again. You should now be able to take a screenshot without
having to enter a username/password for each phone.
i. You can also edit screenshot.asp to automatically load the IP number, username,
and password for you so every time you load the page, the fields are already filled
in. Change the values in BOLD in the screenshot.asp file. Then you can leave the
pushauthenticate,asp page as is.
<tr>
<td>Enter the phones IP Address:</td>
<td><INPUT NAME="IP" TYPE="TEXT" SIZE="30" MAXLENGTH="30" VALUE="X.X.X.X"></td>
</tr>
<tr>
<td>User ID:</td>
<td><INPUT NAME="USER" TYPE="TEXT" SIZE="30" MAXLENGTH="30"
VALUE="user"></td>
</tr>
<tr>
<td>Password:</td>
<td><INPUT NAME="PASS" TYPE="PASSWORD" SIZE="30" MAXLENGTH="30"
VALUE="pass"></td>
</tr>
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
29
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
30
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
31
5. Its easy to setup but does require editing the ASP files to work in your lab (just need to
change addresses and paths in the ASP files. No biggie)
6. First thing, add the URL to the CME router. You can do it using the CLI or the web browser
a. router(config-telephony)#url services http://x.x.x.x/ASP/Calendar/cal.asp
b. Your path may be different than this one
c. You can also add the path using the web browser
d. Now we need to edit the cal.asp and calinput.asp files.
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
32
e. The first file to edit is the cal.asp file. There are three simple changes we need to
make. These are highlighted in yellow below.
<MenuItem>
<Name>Previous Month</Name>
<URL>http://169.254.1.60/ASP/Calendar/cal.asp?month=<% if ((month - 1)
< 0){Response.Write("11");prevYear--;}else{Response.Write(month - 1);}
%>&year=<% = prevYear %></URL>
</MenuItem>
<MenuItem>
<Name>Input Month</Name>
<URL>http://169.254.1.60/ASP/Calendar/calinput.asp</URL>
</MenuItem>
<MenuItem>
<Name>Next Month</Name>
<URL>http://169.254.1.60/ASP/Calendar/cal.asp?month=<% if ((month + 1)
> 11){Response.Write("0");year++;}else{Response.Write(month + 1);}
%>&year=<% = year %></URL>
</MenuItem>
f.
The highlighted lines need to be edited to match your system which is what I did
here.
g. We also need to edit calinput.asp. These are highlighted in yellow below.
Response.Write("<URL>http://169.254.1.60/ASP/Calendar/cal.asp</URL>\r\n");
h. Just one line to change here and edit it to match your system
i. Save those files and you should be able to see the calendar on your phone now!
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
33
7. SYSTEM WIDE MESSAGE: You can create a system wide message that is displayed on
your IP phones
a. router(config-telephony)#system message Welcome to my Cisco Lab
b. mine is Welcome to Daves Cisco Lab
e.
f. You can also do this using the web browser
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
34
c.
Once connected, use your cell phone to call into your line. You should hear the
typical call waiting beep. When you do, press MORE and you will see the FLASH
button. Simply press FLASH and you are connected to the second call.
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
35
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
36
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
37
b. If you have more than one network interface (laptop with Wi-Fi and wired
Ethernet), then you will have to select the interface to use.
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
38
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
39
f.
Notice that there are no lines setup for this phone yet. That because we have to
create an ephone-dn and an ephone, just like we did for our physical phones
earlier.
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
40
g. Dont forget to copy your running configuration to the startup configuration and
then back it up to your TFTP server.
h. Reset your phone and once it comes back up, you can now make calls from your
computer!
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
41
i.
The URL services are all there and working also. You can even shrink the phone
down to a small size.
j.
k.
WFHDevelopers.com | Setting Up A Cisco 2610XM for Voice and the Cisco IP Services SDK
42