You are currently browsing the archive for the VOIP category.

The Problem
So I got a couple more phones for the lab and after resetting them, I plugged them in and let them boot up.  They booted to the standard phone screen as I expected with no issue.  However, when I was trying to configure the phone and add the MAC address to the configuration, I got this error on the console…

VOIP2801(config-ephone)#mac-address <MAC ADDRESS>
ephone slot is already registered with <MAC Address>

Cannot change MAC address.

A little surprised, I took a look at the running config and didn’t see any other phone configurations besides my initial phone.  A look at the output of ‘show ephone’ showed all three phones as registered.  Evidently, the CME system had auto registered the phones and I was trying to configure a MAC address for a phone that had already been registered on a different MAC.

The Fix
After a little trial and error I realized that the way to unregister the phone was to clear it’s MAC.  This seem(s/ed) odd to me since the MAC wasn’t listed in the running config but it seemed to work.  Some googling confirmed that this was the correct way to unregister a phone…

VOIP2801(config)#ephone <Number>
VOIP2801(config-ephone)#no mac-address

Additionally, I configured the ‘no atuo-reg-ephone’ under the telephony service configuration.  This prevents the phone from registering if it hasn’t been defined in the config.

VOIP2801(config-telephony)#no auto-reg-ephone

The phone will try to boot and show a ‘Registration Rejected’ error during the boot.  Once you define the phone, it should boot just fine.

The config for phones 2 and 3
2nd Phone
VOIP2801(config)#ephone-dn 3
VOIP2801(config-ephone-dn)#number 2000
VOIP2801(config-ephone-dn)#label Bob’s Extension
VOIP2801(config-ephone-dn)#name Bob’s

VOIP2801(config)#ephone 2
VOIP2801(config-ephone)#description Bob’s Phone
VOIP2801(config-ephone)#mac-address <MAC Address>
VOIP2801(config-ephone)#type 7960
VOIP2801(config-ephone)#button 1:3 2:2

3rd Phone
VOIP2801(config)#ephone-dn 4
VOIP2801(config-ephone-dn)#number 3000
VOIP2801(config-ephone-dn)#label Mary’s Extension
VOIP2801(config-ephone-dn)#name Mary’s

VOIP2801(config)#ephone 3
VOIP2801(config-ephone)#description Mary’s Phone
VOIP2801(config-ephone)#mac-address <MAC Address>
VOIP2801(config-ephone)#type 7960
VOIP2801(config-ephone)#button 1:4 2:2


When we did our initial CME configuration we copied over the ‘ringtones.tar’ file and extracted it to the folder ‘CME_Ringtones’.  Now it’s time to configure the CME instance to use them.

There are two configuration files used by CME to tell the phones what ringtones are available and what they are.  These are…

RingList.xml – defines the available default ringers for a phone.
DistinctiveRingList.xml – defines the extension or line ringtones available to the phone.

The layout of each file looks like this…


This is a copy of the RingList.xml that comes in the ringtones.tar file.  It’s fairly straight forward so I won’t explain the syntax.

To get the phones to see the XML files as well as the ringtones associated with each ‘ring’ we need to host both the XML file as well as the .raw files on the CME’s TFTP server instance.  All said and done, the config lines I inserted to make this work looked like this…

tftp-server flash:/CME_RingTones/RingList.xml alias RINGLIST.XML
tftp-server flash:/CME_RingTones/DistinctiveRingList.xml alias DISTINCTIVERINGLIST.XML
tftp-server flash:/CME_RingTones/Analog1.raw alias Analog1.raw
tftp-server flash:/CME_RingTones/Analog2.raw alias Analog2.raw
tftp-server flash:/CME_RingTones/AreYouThere.raw alias AreYouThere.raw
tftp-server flash:/CME_RingTones/AreYouThereF.raw alias AreYouThereF.raw
tftp-server flash:/CME_RingTones/Bass.raw alias Bass.raw
tftp-server flash:/CME_RingTones/CallBack.raw alias CallBack.taw
tftp-server flash:/CME_RingTones/Chime.raw alias Chime.raw
tftp-server flash:/CME_RingTones/Classic1.raw alias Classic1.raw
tftp-server flash:/CME_RingTones/Classic2.raw alias Classic2.raw
tftp-server flash:/CME_RingTones/ClockShop.raw alias ClockShop.raw
tftp-server flash:/CME_RingTones/Drums1.raw alias Drums1.raw
tftp-server flash:/CME_RingTones/Drums2.raw alias Drums2.raw
tftp-server flash:/CME_RingTones/FilmScore.raw alias FilmScore.raw
tftp-server flash:/CME_RingTones/HarpSynth.raw alias HarpSynth.raw
tftp-server flash:/CME_RingTones/Jamaica.raw alias Jamaica.raw
tftp-server flash:/CME_RingTones/KotoEffect.raw alias KotoEffect.raw
tftp-server flash:/CME_RingTones/MusicBox.raw alias MusicBox.raw
tftp-server flash:/CME_RingTones/Piano1.raw alias Piano1.raw
tftp-server flash:/CME_RingTones/Piano2.raw alias Piano2.raw
tftp-server flash:/CME_RingTones/Pop.raw alias Pop.raw
tftp-server flash:/CME_RingTones/Pulse1.raw alias Pulse1.raw
tftp-server flash:/CME_RingTones/Ring1.raw alias Ring1.raw
tftp-server flash:/CME_RingTones/Ring2.raw alias Ring2.raw
tftp-server flash:/CME_RingTones/Ring3.raw alias Ring3.raw
tftp-server flash:/CME_RingTones/Ring4.raw alias Ring4.raw
tftp-server flash:/CME_RingTones/Ring5.raw alias Ring5.raw
tftp-server flash:/CME_RingTones/Ring6.raw alias Ring6.raw
tftp-server flash:/CME_RingTones/Ring7.raw alias Ring7.raw
tftp-server flash:/CME_RingTones/Sax1.raw alias Sax1.raw
tftp-server flash:/CME_RingTones/Sax2.raw alias Sax2.raw
tftp-server flash:/CME_RingTones/Vibe.raw alias Vibe.raw

Note that I have to use the ‘alias’ command on each file instance since the files are not in the root directory of the flash.

After I loaded these lines into configuration the phones detected the new ringtones after a reboot.


A critical part of any CME setup are the dial peers.  Dial peers are what are used to make calls in and out of the CME system.  In modern telephone systems (generally speaking) there are two types of dial peers, POTS and VOIP dial peers.  The POTS type is used when we are connecting to any traditional type voice connection and the VOIP type is used when defining IP addressable voice device.  Since my labs have dealt with VOIP phones and SIP trunks (IP Voice connectivity) I’ll be talking mostly about the VOIP dial peers.  The dial peers themselves consists of several critical pieces.  Let’s walk through the two major pieces one at a time.

Destination Patterns 
I like to think of destination patterns sort of like route statements.  When a call is placed the router looks through the available dial peers and their associated destination patterns.  It takes the digits that were dialed and matches them against all of the possible destination patterns looking for a match.  When it finds a match, it uses that dial peer to place the call.

Destination Patterns are composed of numbers and ‘operators’.  The most basic of operators are the wild card operators.  These come in handy when you are only interested in matching part of a number.  For instance, you might want to match 4 digit extensions at your second office.  Since all of the numbers start with 2 at the second office, you want the dial peer to match a number that looks like…

4 , <Any Number>, <Any Number>, <Any Number>

Operators help you complete tasks such as this.  Lets run through them quick and give an example of each. Note – I’m going to use spaces in my examples below between each character.  In real life, don’t use spaces when defining your destination patterns.

Period (.)
Used to represent the wild card for any digit 0-9. 
6 1 2 . . . . . . .
Any 10 digit number that begins with ‘612’

The Letter T (T)
Extended wildcard
1 T
The digit 1 followed by a variable digits (anything else)

Brackets ([])
Used to represent a range of digits.  The range can be represented by a contiguous number of digits (1-3), by individual digits (6,9), or as a combination (1-3,6,9).  Additionally, you can use the ^ operator as a ‘not’ symbol to create a range that shouldn’t be matched.
Example 1
1 [ 1 – 3] . . . . . . . . [ 6 , 8 ]
A number that starts with 11 digit number whose second digit is 1 through 3 and last digit is a 6 or a 8.
Example 2
1 [ ^ 0 – 7] . . . . . . . . [ 6 , 8 ]
The digit one followed by 8 or 9, 8 wild card digits, and a 6 or a 8.

Plus Sign (+)
Used to match one or more instances of the preceding digit. 
1 + 6 1 2  4 5 6 3
1 or more 1s followed by 6, 1, 2, 4, 5, 6, and 3

Session Protocol / Target
The other critical piece of the dial peer is the session protocol and target settings.  Once the router has matched the destination pattern and decided which dial peer to use, we have to know where and how to send the call.  In my case, this was the SIP-UA.com SIP trunk.  I walked through how those worked in an earlier port.


« Older entries