There can be many reasons the phones do not get the correct firmware. Follow these steps to troubleshoot:
1. Verify that all the firmware files are in the specified location.
2. Verify that all the necessary tftp-server commands are entered correctly.
3. If the phone starts the firmware download but does not finish, or is stuck in a loop upgrading (or downgrading), use the debug tftp events command to see which file the phone is requesting, but failing to get. (The “locale” file is expected to fail, as you are not setting locales up as part of these labs.)
4. If the phone ignores the firmware change, verify that the load command in telephony service is correct, and make sure that the create cnf-files command is updating the phone configuration so that the phone knows that the new firmware is available.
5. If the phone has newer firmware (for example, if it has been connected to a CUCM system version 8.0 or greater), the phone might have a certificate that prevents it from acknowledging the CUCME system, as mentioned in the Hardware section. Follow the directions to remove the certificate so that the phone will listen to the CUCME system for requests to install the correct firmware.
Appendix E. PSTN Simulator
The PSTN Simulator is a Cisco router with one or more T1/E1/PRI interfaces (and enough digital signal processor [DSP] resources to run the interfaces), configured to respond to incoming calls and to forward calls for other pods to the correct interface. The PSTN Simulator plays a unique audio file when any of the categories of phone numbers shown in Table E-1 are sent to the Simulator.
Table E-1. Audio Response Phone Number Categories
The audio response is achieved by using the Tool Command Language (Tcl) scripts1 paired with an audio file encoded as .au or .wav for each call category. To create the audio file, the same process for creating music-on-hold (MoH) files can be followed. The
“Configuring Music on Hold” section of the Cisco Unified Communications Manager Express System Administrator Guide states,
“This file should be in G.711 format. The file can be in .au or .wav file format, but the file format must contain 8-bit 8-kHz data; for example, ITUT A-law or mu-law data format.” Search the Internet for “cisco moh file format” to find information on programs to record and format audio files to the standard.
1 While I wish I could claim credit for creating the TCL scripts and initial configuration, I am forever indebted to David Mallory of Cisco for the files.
For each call category, there are two files: an audio file and the matching Tcl script. For example, to play an audio file for long-distance calls, an audio file, called ld.au, is uploaded to the router flash using TFTP. The ld.tcl file, shown in Example E-1, is also uploaded.
Whenever the Tcl script is called in the router configuration, the audio file is played. See Example E-1, where the ld.tcl script references the ld.au file.
Example E-1. ld.tcl script proc init { } { global param
set param(interruptPrompt) true set param(abortKey) *
set param(terminationKey) # }
proc act_Setup { } { global dest
leg setupack leg_incoming leg proceeding leg_incoming media play leg_incoming flash:ld.au fsm setstate CALLDISCONNECTED }
proc act_Cleanup { } { call close }
init
set callfsm(CALL_INIT,ev_setup_indication) "act_Setup,CALLDISCONNECTED"
set callfsm(CALLDISCONECCTED,ev_disconnected) "act_Cleanup,same_state"
set callfsm(CALLDISCONNECTED,ev_disconnected) "act_Cleanup,same_state"
set callfsm(CALLDISCONNECTED,ev_media_done) "act_Cleanup,same_state"
set callfsm(CALLDISCONNECTED,ev_disconnect_done) "act_Cleanup,same_state"
set callfsm(CALLDISCONNECTED,ev_leg_timer) "act_Cleanup,same_state"
fsm define callfsm CALL_INIT
Note
The name of the audio file and the reference in the Tcl script are case sensitive and must match.
A separate Tcl file is needed for each audio file to be played. The only difference between the Tcl files is the audio file that is referenced.
Having a large number of interfaces is not required to build a PSTN Simulator. Example E-2 shows how to set up a PSTN Simulator with just two VWIC-1MFT-T1 interfaces for pods 1 and 2.
Note
Lines in the configuration that start with an exclamation point (!) are comments to explain the commands that follow, and do not need to be entered. The configuration is set up for the labs in Chapter 6, “Cisco Unified Communications Manager Express (CUCME) Dial Plans and QoS,” but the comments show what to change for the labs to work with Chapter 10, “CUCM Dial Plan.”
Example E-2. Two-Pod PSTN Router Configuration hostname PSTN_Simulator
! The network-clock-participate command is needed for the PRI configuration for each
network module and VWIC (see lab 6-2, step 3-2 for details).
network-clock-participate wic 0 network-clock-participate wic 1
!
no ip domain lookup ip domain name soi.com
! The isdn switch-type command is needed for the PRI configuration (see lab 6-2, step
3-1 for details).
isdn switch-type primary-ni
! The voice translation-rule converts all seven-digit and ten-digit dialed and dialing numbers (in the range of the pod phone numbers) to long-distance calls, to
reduce the number of dial-peers needed later.
voice translation-rule 1 rule 1 /^55550[0-5].$/ /1510&/
rule 2 /^51055550[0-5].$/ /1&/
! The voice translation-rules for the CUCM labs would be:
! voice translation-rule 1
! rule 1 /^5552[^12]..$/ /1510&/
! rule 2 /^5105552[^12]..$/ /1&/
! The voice translation-profile applies the voice translation-rule to both the dialed
number and the calling number.
voice translation-profile TenDIGITS translate called 1
translate calling 1
! This application is used to call the 900 number tcl script application
service us_900 flash:us_900.tcl exit
! This application is used to call the long-distance number tcl script application
service ld flash:ld.tcl exit
! This application is used to call the emergency number (911) tcl script application
service 911 flash:hq_911.tcl exit
! This application is used to call the local numbers tcl script application
service local flash:mrrogers.tcl exit
! This application is used to call the info number tcl script application
service info flash:info.tcl exit
! This application is used to call the international number tcl script application
service intl flash:international.tcl exit
! This application is used to call the toll-free number tcl script application
service us_800 flash:us_800.tcl exit
! The controller interface names will depend on the VWICs and network modules installed (adjust as necessary). Since this configuration has two single-port T1/PRI
cards, there is one pod on each VWIC. The timeslots are configured to support 6 PRI
channels for each interface (which might be limited by your PVDM resources) (see lab
6-2, step 3-4 for details).
controller T1 0/0/0 description Pod 1 framing esf linecode b8zs
pri-group timeslots 1-6,24
!
controller T1 0/1/0 description Pod 2 framing esf linecode b8zs
pri-group timeslots 1-6,24
!
! Each of the controllers has a matching serial interface (see lab 6-2 for details) Note that the isdn protocol-emulate network command is what makes this the provider end of the circuit.
interface Serial0/0/0:23 description Pod 1 no ip address
isdn switch-type primary-ni isdn protocol-emulate network isdn incoming-voice voice no cdp enable
!
interface Serial0/1/0:23 description Pod 2 no ip address
isdn switch-type primary-ni isdn protocol-emulate network isdn incoming-voice voice no cdp enable
!
! There is a voice-port for each controller and this is where the translation- profile
is applied to convert seven-digit and ten-digit numbers to a long-distance number (for phone numbers in the ranges of the pods).
voice-port 0/0/0:23
translation-profile incoming TenDIGITS
!
voice-port 0/1/0:23
translation-profile incoming TenDIGITS
!
! Dial-peers 101 and 102 direct dialed numbers in the range of the pods to the correct interface. Since the translation-profiles are converting phone numbers in the
range of the pods from seven-digit and ten-digits to long-distance, local calls to
pods are using the long-distance dial-peers. Read the descriptions in each dial- peer
to see which pod is configured.
dial-peer voice 101 pots
description 1+10 digits to Pod 1 destination-pattern 151055550[0-2].
port 0/0/0:23 prefix 51055550
! For the CUCM labs, dial-peer 101 would have a destination-pattern of 151055521..
and a prefix of 51055521
!
dial-peer voice 102 pots
description 1+10 digits to Pod 2 destination-pattern 151055550[3-5].
port 0/0/1:23 prefix 51055550
! For the CUCM labs, dial-peer 102 would have a destination-pattern of 151055522..
and a prefix of 51055522
!
! Dial-peers 800, 855, 866, 877, and 888 sends toll-free calls using the service command to the us_800 application, which calls the us_800.tcl script, which plays the
us_800.au audio file.
dial-peer voice 800 pots service us_800
incoming called-number 1800...
!
dial-peer voice 855 pots service us_800
incoming called-number 1855...
!
dial-peer voice 866 pots service us_800
incoming called-number 1866...
!
dial-peer voice 877 pots service us_800
incoming called-number 1877...
!
dial-peer voice 888 pots service us_800
incoming called-number 1888...
! Dial-peer 900 sends toll-free calls using the service command to the us_900 application, which calls the us_900.tcl script, which plays the us_900.au audio file.
dial-peer voice 900 pots service us_900
incoming called-number 1900...
!
! Dial-peer 411 sends service code calls using the service command to the info application, which calls the info.tcl script, which plays the info.au audio file.
dial-peer voice 411 pots service info
incoming called-number [2-8]11
! Dial-peer 123 directs the router to use direct-inward-dial for incoming calls (see
lab 6-5, step 5-1 for details).
dial-peer voice 123 pots incoming called-number . direct-inward-dial
!
! Dial-peer 911 sends emergency calls using the service command to the 911
application, which calls the hq_911.tcl script, which plays the hq_911.au audio file.
dial-peer voice 911 pots service 911
incoming called-number 911
!
! Dial-peers 9100 to 9107 are created to carefully exclude the range of numbers for the 11 pods 1-510-555-2100 to 2299. This was done because the service command takes
priority when routing calls. If a long-distance dial-peer was used that matched a pattern such as 1... long-distance calls to other pods would play the ld.tcl
script. Instead calls to the pods do not match the patterns, and get directed to the
correct interface in dial-peers 101 and 102.
! Dial-peer 9100 covers any 1+10 digit number that does not start with a 15 dial-peer voice 9100 pots
service ld
incoming called-number 1[2-4,6-9]...
! Dial-peer 9101 covers any 1+10 digit number that does not start with 151 dial-peer voice 9101 pots
service ld
incoming called-number 15[^1]...
!
! Dial-peer 9102 covers any 1+10 digit number that does not start with 1510 dial-peer voice 9102 pots
service ld
incoming called-number 151[^0]...
!
! Dial-peer 9103 covers any 1+10 digit number that does not start with 15105 dial-peer voice 9103 pots
service ld
incoming called-number 15105[2-4,5-9]...
!
! Dial-peer 9104 covers any 1+10 digit number that does not start with 151055 dial-peer voice 9104 pots
service ld
incoming called-number 15105[^5]...
!
! Dial-peer 9105 covers any 1+10 digit number that does not start with 1510555 dial-peer voice 9105 pots
service ld
incoming called-number 151055[^5]....
!
! Dial-peer 9106 covers any 1+10 digit number that does not start with 15105555 dial-peer voice 9106 pots
service ld
incoming called-number 1510555[^5]...
! For the CUCM labs, dial-peer 9106 would have an incoming called-number of 15105552[^12]..
!
! Dial-peer 9107 covers any 1+10 digit number that does not start with 151055550
dial-peer voice 9107 pots service ld
incoming called-number 15105555[^0]..
! For the CUCM labs, dial-peer 9107 does not need to exist
!
! Dial-peer 9108 covers any 1+10 digit number that does not start with 151055550 followed by a 0, 1, 2, 3, 4, or 5
dial-peer voice 9108 pots service ld
incoming called-number 151055550[^0-5].
! For the CUCM labs, dial-peer 9108 does not need to exist
!
! Dial-peer 9011 sends international calls using the service command to the intl application, which calls the international.tcl script, which plays the international.au audio file. Note that the seven dots after the 011 is just a arbitrary number to make sure the user dialed enough digits, since I am not aware of
any county that uses less than seven-digits for phone numbers.
dial-peer voice 9011 pots service intl
incoming called-number 011...
!
! Dial-peer 7 sends seven-digit local calls using the service command to the local application, which calls the mrrogers.tcl script, which plays the mrrogers.au audio
file. Since all local numbers for the pods were converted to long-distance numbers by
the translation-profile, it is not necessary to avoid covering the numbers for the
pods (which had to be done in dial-peers 9100 to 9108).
dial-peer voice 7 pots service local
incoming called-number [2-9]...
!
line con 0
exec-timeout 300 0 logging synchronous login local line aux 0 line vty 0 4 privilege level 15 login local
transport input telnet ssh line vty 5 15
privilege level 15 login local
transport input telnet ssh
Example E-3 shows a configuration from the router I used in my classroom for 11 pods and shows how the simulator can scale to a large number of pods. It is built with a Cisco 2811 router, running IOS Release 12.4(24)T6, with four VWIC-2MFT-T1 cards in the WIC slots, and an NM-HDV2-2T1/E1 module with a VWIC2-1MFT-T1/E1 installed, for a total of 11 interfaces. To run six channels on each interface, a PVDM2-64 and a PVDM2-32 modules are installed to provide the DSP resources. The current PSTN simulator I use takes two 2821 routers to run a total of 21 T1/PRI interfaces.
Note
Lines in the configuration that start with an exclamation point (!) are comments to explain the commands that follow, and do not need to be entered. The configuration is set up for the labs in Chapter 6, but the comments show what to change for the labs to work with Chapter 10.
Example E-3. 11-Pod PSTN Router Configuration hostname PSTN_Simulator
! The card type command is needed if Multiflex T1/E1 cards are installed (see the note in lab 6-2, step 2-1 for details). In this case the network module, and the VWIC2-1MFT-T1/E1 card installed in it, need to choose T1 or E1.
card type t1 1 0 card type t1 1 1
! The network-clock-participate command is needed for the PRI configuration for each
network module and VWIC (see lab 6-2, step 3-2 for details).
network-clock-participate slot 1 network-clock-participate wic 0 network-clock-participate wic 1 network-clock-participate wic 2 network-clock-participate wic 3
!
no ip domain lookup ip domain name soi.com
! The isdn switch-type command is needed for the PRI configuration (see lab 6-2, step
3-1 for details).
isdn switch-type primary-ni
! The voice-card and dspfarm commands allow the PVDM resources to be shared between all of the interfaces. The voice-card 0 is for PVDM on the router motherboard, while
the voice-card 1 is present only because of the PVDM on the network module.
voice-card 0
codec complexity flex dspfarm
!
voice-card 1
codec complexity flex dspfarm
! The voice translation-rule converts all seven-digit and ten-digit dialed and dialing numbers (in the range of the pod phone numbers) to long-distance calls,
to
reduce the number of dial-peers needed later.
voice translation-rule 1 rule 1 /^5555[0-2]..$/ /1510&/
rule 2 /^55553[0-5].$/ /1510&/
rule 3 /^5105555[0-2]..$/ /1&/
rule 4 /^51055553[0-5].$/ /1&/
! The voice translation-rules for the CUCM labs would be:
! voice translation-rule 1
! rule 1 /^5552[^0]..$/ /1510&/
! rule 2 /^5553[01]..$/ /1510&/
! rule 3 /^5105552[^0]..$/ /1&/
! rule 4 /^5105553[01]..$/ /1&/
! The voice translation-profile applies the voice translation-rule to both the dialed
number and the calling number.
voice translation-profile TenDIGITS translate called 1
translate calling 1
! This application is used to call the 900 number tcl script application
service us_900 flash:us_900.tcl exit
! This application is used to call the long-distance number tcl script application
service ld flash:ld.tcl exit
! This application is used to call the emergency number (911) tcl script application
service 911 flash:hq_911.tcl exit
! This application is used to call the local numbers tcl script application
service local flash:mrrogers.tcl exit
! This application is used to call the info number tcl script application
service info flash:info.tcl exit
! This application is used to call the international number tcl script application
service intl flash:international.tcl exit
! This application is used to call the toll-free number tcl script application
service us_800 flash:us_800.tcl exit
! The controller interface names will depend on the VWICs and network modules installed (adjust as necessary). Since this configuration has dual T1/PRI cards, there are two pods on each VWIC. The timeslots are configured to support 6 PRI channels for each interface (which might be limited by your PVDM resources) (see lab
6-2, step 3-4 for details).
controller T1 0/0/0 description Pod 1 framing esf linecode b8zs
pri-group timeslots 1-6,24
!
controller T1 0/0/1 description Pod 2 framing esf linecode b8zs
pri-group timeslots 1-6,24
!
controller T1 0/1/0 description Pod 3 framing esf linecode b8zs
pri-group timeslots 1-6,24
!
controller T1 0/1/1 description Pod 4 framing esf linecode b8zs
pri-group timeslots 1-6,24
!
controller T1 0/2/0 description Pod 5 framing esf linecode b8zs
pri-group timeslots 1-6,24
!
controller T1 0/2/1 description Pod 6 framing esf linecode b8zs
pri-group timeslots 1-6,24
!
controller T1 0/3/0 description Pod 7 framing esf linecode b8zs
pri-group timeslots 1-6,24
!
controller T1 0/3/1 description Pod 8 framing esf linecode b8zs
pri-group timeslots 1-6,24
! These two controller interfaces are located onboard the network module.
controller T1 1/0 description Pod 9 framing esf linecode b8zs
pri-group timeslots 1-6,24
!
controller T1 1/1 description Pod 10 framing esf linecode b8zs
pri-group timeslots 1-6,24
! This controller interface is located on a single interface VWIC installed in the network module slot.
controller T1 1/0/0
description Pod 11/Instructor framing esf
linecode b8zs
pri-group timeslots 1-6,24
!
! Each of the controllers has a matching serial interface (see lab 6-2 for details).
Note that the isdn protocol-emulate network command is what makes this the provider end of the circuit.
interface Serial0/0/0:23 description Pod 1 no ip address
isdn switch-type primary-ni isdn protocol-emulate network isdn incoming-voice voice no cdp enable
!
interface Serial0/0/1:23 description Pod 2 no ip address
isdn switch-type primary-ni isdn protocol-emulate network isdn incoming-voice voice no cdp enable
!
interface Serial0/1/0:23 description Pod 3 no ip address
isdn switch-type primary-ni isdn protocol-emulate network isdn incoming-voice voice no cdp enable
!
interface Serial0/1/1:23 description Pod 4 no ip address
isdn switch-type primary-ni isdn protocol-emulate network isdn incoming-voice voice no cdp enable
!
interface Serial0/2/0:23 description Pod 5 no ip address
isdn switch-type primary-ni isdn protocol-emulate network isdn incoming-voice voice no cdp enable
!
interface Serial0/2/1:23 description Pod 6 no ip address
isdn switch-type primary-ni isdn protocol-emulate network isdn incoming-voice voice no cdp enable
!
interface Serial0/3/0:23 description Pod 7 no ip address
isdn switch-type primary-ni isdn protocol-emulate network isdn incoming-voice voice no cdp enable
!
interface Serial0/3/1:23 description Pod 8 no ip address
isdn switch-type primary-ni isdn protocol-emulate network isdn incoming-voice voice no cdp enable
!
interface Serial1/0:23 description Pod 9 no ip address
isdn switch-type primary-ni isdn protocol-emulate network isdn incoming-voice voice no cdp enable
!
interface Serial1/1:23
description Pod 10 no ip address
isdn switch-type primary-ni isdn protocol-emulate network isdn incoming-voice voice no cdp enable
!
interface Serial1/0/0:23 description Pod 11/Instructor no ip address
isdn switch-type primary-ni isdn protocol-emulate network isdn incoming-voice voice no cdp enable
! There is a voice-port for each controller and this is where the translation- profile
is applied to convert seven-digit and ten-digit numbers to a long-distance number (for phone numbers in the ranges of the pods).
voice-port 0/0/0:23
translation-profile incoming TenDIGITS
!
voice-port 0/1/0:23
translation-profile incoming TenDIGITS
!
voice-port 0/2/0:23
translation-profile incoming TenDIGITS
!
voice-port 0/3/0:23
translation-profile incoming TenDIGITS
!
voice-port 0/0/1:23
translation-profile incoming TenDIGITS
!
voice-port 0/1/1:23
translation-profile incoming TenDIGITS
!
voice-port 0/2/1:23
translation-profile incoming TenDIGITS
!
voice-port 0/3/1:23
translation-profile incoming TenDIGITS
!
voice-port 1/0:23
translation-profile incoming TenDIGITS
!
voice-port 1/1:23
translation-profile incoming TenDIGITS
!
voice-port 1/0/0:23
translation-profile incoming TenDIGITS
!
! Dial-peers 101 to 111 direct dialed numbers in the range of the pods to the correct
interface. Since the translation-profiles are converting phone numbers in the range
of the pods from seven-digit and ten-digits to long-distance, local calls to pods are
using the long-distance dial-peers. Read the descriptions in each dial-peer to see
which pod is configured.
dial-peer voice 101 pots
description 1+10 digits to Pod 1 destination-pattern 151055550[0-2].
port 0/0/0:23 prefix 51055550
! Dial-peer 101 would have a destination-pattern of 151055521.. and a prefix of 51055521 for the CUCM labs.
!
dial-peer voice 102 pots
description 1+10 digits to Pod 2 destination-pattern 151055550[3-5].
port 0/0/1:23 prefix 51055550
! Dial-peer 102 would have a destination-pattern of 151055522.. and a prefix of 51055522 for the CUCM labs.
!
dial-peer voice 103 pots
description 1+10 digits to Pod 3 destination-pattern 151055550[6-8].
port 0/1/0:23 prefix 51055550
! Dial-peer 103 would have a destination-pattern of 151055523.. and a prefix of 51055523 for the CUCM labs.
!
dial-peer voice 104 pots
description 1+10 digits to Pod 4 destination-pattern 151055551[0-2].
port 0/1/1:23 prefix 51055551
! Dial-peer 104 would have a destination-pattern of 151055524.. and a prefix of 51055524 for the CUCM labs.
!
dial-peer voice 105 pots
description 1+10 digits to Pod 5 destination-pattern 151055551[3-5].
port 0/2/0:23 prefix 51055551
! Dial-peer 105 would have a destination-pattern of 151055525.. and a prefix of 51055525 for the CUCM labs.
!
dial-peer voice 106 pots
description 1+10 digits to Pod 6 destination-pattern 151055551[6-8].