CallManager Express (CME)

May 20, 2025 - Reading time: 5 minutes

This lesson introduces you to Cisco CallManager Express (CME), a call-processing solution built into Cisco routers that allows you to register and manage IP phones without a separate server. You’ll configure the router to serve as both the telephony server and a DHCP server, which provides automatic IP addressing and TFTP configuration to phones. In this setup, each phone is registered manually using its MAC address, while DHCP assigns IP settings automatically. This is a common configuration in production environments where static control over phone registration is preferred, but dynamic IP management is still desired.

By the end of the lab, two Cisco IP phones will be fully registered to the router, receive their IP configuration via DHCP, and be able to call each other using assigned internal extension numbers.


PocketCLI Assumptions

Please keep these points in mind when configuring a scenario that includes phones:

  1. The DHCP server’s Option 150 must point to the CME router’s IP address, as this tells the phones where to download their configuration files.

  2. The ip source-address defined under the telephony-service section must be the CME router’s IP address, which matches the TFTP source.

  3. The CME router is assumed to serve the correct phone firmware and configuration files required by the connected IP phones.

  4. VoIP phones must receive IP addresses via DHCP. Ensure a DHCP server is properly configured, as IP addressing is required for phone registration.

Step‑by‑Step Lab

1  Interface & basic router setup

Router> enable
Router# configure terminal
Router(config)# hostname CME_Router
CME_Router(config)# interface FastEthernet0/0
CME_Router(config-if)# ip address 192.168.10.1 255.255.255.0
CME_Router(config-if)# no shutdown
CME_Router(config-if)# exit

Router is named CME_Router, then assigned IP address 192.168.10.1/24 on FastEthernet0/0 interface. The interface is enabled. This interface will act as the gateway for the IP phones and other local devices in the 192.168.10.0 network.

2  Telephony‑service (manual registration only)

CME_Router(config)# telephony-service
CME_Router(config-telephony)# max-dn 5
CME_Router(config-telephony)# max-ephones 5
CME_Router(config-telephony)# ip source-address 192.168.10.1 port 2000
! ----- no auto‑reg‑ephone -----
CME_Router(config-telephony)# create cnf-files
CME_Router(config-telephony)# exit

Initializes CME to handle up to 5 directory numbers and 5 phones, binds it to the router’s IP address, disables auto-registration, and builds the necessary phone config files.

3  Router‑based DHCP server

CME_Router(config)# ip dhcp excluded-address 192.168.10.1 192.168.10.10
CME_Router(config)# ip dhcp pool VOICE
CME_Router(dhcp-config)# network 192.168.10.0 255.255.255.0
CME_Router(dhcp-config)# default-router 192.168.10.1
CME_Router(dhcp-config)# option 150 ip 192.168.10.1
CME_Router(dhcp-config)# dns-server 8.8.8.8
CME_Router(dhcp-config)# exit

The configuration sets up the router as a DHCP server to automatically assign IP addresses to devices on the 192.168.10.0/24 network. It excludes addresses .1 through .10 to reserve them for static assignments, such as the CME router interface. A DHCP pool named VOICE is created to hand out addresses in the remaining range, with the router .1 designated as the default gateway. It also provides Option 150, which tells IP phones to contact the CME router for their TFTP configuration files, and specifies Google's 8.8.8.8 as the DNS server for name resolution.

4  Define extensions (ephone‑dns)

CME_Router(config)# ephone-dn 1
CME_Router(config-ephone-dn)# number 1001
CME_Router(config-ephone-dn)# exit

CME_Router(config)# ephone-dn 2
CME_Router(config-ephone-dn)# number 1002
CME_Router(config-ephone-dn)# exit

Sets up two internal phone extensions. The first one, ephone-dn 1, gets extension 1001, and the second one, ephone-dn 2, gets 1002. These are the numbers users will dial between the phones once they're assigned to actual devices.

5  Bind phones by MAC address

CME_Router(config)# ephone 1
CME_Router(config-ephone)# mac-address AABB.CCDD.EEFF
CME_Router(config-ephone)# button 1:1
CME_Router(config-ephone)# restart
CME_Router(config-ephone)# exit

CME_Router(config)# ephone 2
CME_Router(config-ephone)# mac-address 1122.3344.5566
CME_Router(config-ephone)# button 1:2
CME_Router(config-ephone)# restart
CME_Router(config-ephone)# exit

Sets up two phones by manually registering them using their MAC addresses. Phone 1 (ephone 1) is linked to MAC AABB.CCDD.EEFF and gets button 1 mapped to extension 1001. Phone 2 (ephone 2) uses MAC 1122.3344.5566 and gets button 1 mapped to extension 1002. The restart command tells each phone to reboot so it picks up the latest config.

6  Save configuration

CME_Router# copy running-config startup-config

After each phone reboots, it requests an IP address from the router’s DHCP pool, learns the TFTP address (Option 150), downloads its configuration file (SEP<mac>.cnf.xml), and registers with CME.


Verification Commands & Expected Console Output

Use the following commands to verify DHCP leases, phone registration, and CME status. Each command includes what to look for and a sample output.

1. show telephony-service

Purpose: Confirm CME parameters are correctly set, including IP source address and registration limits.

CME_Router# show telephony-service
CONFIG (Version 12.6)
=====================
IP source address: 192.168.10.1 port 2000
Auto-reg-ephone: disabled
Max ephones allowed: 5
Max directory numbers: 5
...

2. show ip dhcp pool VOICE

Purpose: Verify DHCP pool configuration and address utilization.

CME_Router# show ip dhcp pool VOICE
Pool VOICE :
 Utilization mark (high/low)    : 100 / 0
 Subnet size (first/last IP)    : 192.168.10.0 / 192.168.10.255
 Leased addresses               : 2
 Excluded addresses             : 10
 Free addresses                 : 245

 3. show ip dhcp binding

Purpose: View IP addresses leased to phones based on MAC addresses.

CME_Router# show ip dhcp binding
IP address        Client-ID/Hardware address      Lease expiration     Type
192.168.10.11     0100.AABB.CCDD.EEFF             --Automatic--        DHCP
192.168.10.12     0100.1122.3344.5566             --Automatic--        DHCP

4. show ephone-dn

Purpose: Verify configured extensions (directory numbers) and their states.

CME_Router# show ephone-dn
ephone-dn 1 — Number: 1001 — Status: ACTIVE
ephone-dn 2 — Number: 1002 — Status: ACTIVE

5. show ephone summary

Purpose: Confirm that phones are registered and matched to correct MAC addresses.

CME_Router# show ephone summary
ephone-1[0]  Mac: AABB.CCDD.EEFF   Status: REGISTERED   Auto-reg: No
ephone-2[1]  Mac: 1122.3344.5566   Status: REGISTERED   Auto-reg: No 

Common Mistakes

Mistake Symptom Fix
MAC address mistyped in ephone show ephone summary shows UNREGISTERED Re‑enter the correct MAC, then restart the phone or reset
Omitted option 150 in DHCP pool Phone obtains IP but stalls at “TFTP Timeout” Add option 150 ip 192.168.10.1, then clear ip dhcp binding * or reboot phone
Skipped create cnf-files Phone registers but lacks soft‑keys/labels Run create cnf-files and restart affected phones
Forgot to save configuration All settings lost after router reload copy running-config startup-config

User Challenge

  1. Add a Third Phone
    Create ephone-dn 3 (1003) and ephone 3 with its MAC address. Confirm the new phone leases an address and registers.

  2. Button Re‑mapping Exercise
    Remove all button configuration from Phone 1 using the no button command. Then assign button 1 to directory number 1005 (you may need to create ephone-dn 5 first). Reset the phone and confirm that the new extension is functional.

The lab is available for download from this link. Try recreating the sample lab above using the provided IP addressing scheme to reinforce manual MAC‑based registration skills while keeping the convenience of DHCP‑based IP provisioning.

CallManager Express (CME) | PocketCLI

Download


>