Tuesday, April 7, 2015

Cisco Phone Boot Basics

If you're like me, you've wondered what the boot process looks like from the phone's perspective. So, here's what happened when I setup a dhcp server using Tftpd32 and plugged a Cisco 7942 phone into my pc.

Setup:
1) Download and install Tftpd32 (settings as below). You need this to supply the phone with a dhcp address.
2) Download all necessary files from Cisco, cmterm-7942_7962-sccp.8-3-2.zip.
3) Unzip these files into your tftp directory so that Tftpd32 can serve them to the phone.
4) Connect a patch cable to the phone's switch port and your pc's nic. (Q:Why not use the phone's pc port? A: The pc is acting as the switch, where the phone would normally get it's vlan and IP information.)
5) Power on the phone with a power brick. I know this is a show stopper for some of you. Unfortunately, your pc can't provide the normal POE that your Cisco switch probably does now.
6) Watch the magic....











If you watch the SYSLOG tab you will see that the phone looks for these files in order:

term42.default.loads
jar42sccp.8-3-1-22.sbn
cnu42.8-3-1-22.sbn
apps42.8-3-1-22.sbn
dsp42.8-3-1-22.sbn
cvm42sccp.8-3-1-22.sbn
CTLSEP0026CBBFA935.tlv     (error, can't find file)
SEP0026CBBFA935.cnf.xml (same error)
XMLDefault.cnf.xml     (same error)


We expect  that it can’t find the last three files, because they are on UCM.
At this point, you can plug this phone back into the network and configure it. It will now register. (FYI, it will not upgrade to version 9.x.x without an intermediary upgrade to 8.5.2 first.)


Log output:

Rcvd DHCP Rqst Msg for IP 0.0.0.0, Mac 00:26:CB:BF:A9:35 [05/02 14:59:49.430]
Previously allocated address 192.168.1.1 acked [05/02 14:59:49.430]
Connection received from 192.168.1.1 on port 49152 [05/02 14:59:49.479]
Read request for file <term42.default.loads>. Mode octet [05/02 14:59:49.480]
Using local port 52295 [05/02 14:59:49.480]
<term42.default.loads>: sent 2 blks, 662 bytes in 0 s. 0 blk resent [05/02 14:59:49.483]
Connection received from 192.168.1.1 on port 49153 [05/02 14:59:50.543]
Read request for file <jar42sccp.8-3-1-22.sbn>. Mode octet [05/02 14:59:50.543]
Using local port 52296 [05/02 14:59:50.544]
<jar42sccp.8-3-1-22.sbn>: sent 867 blks, 443408 bytes in 1 s. 0 blk resent [05/02 14:59:51.529]
Connection received from 192.168.1.1 on port 49154 [05/02 14:59:53.607]
Read request for file <cnu42.8-3-1-22.sbn>. Mode octet [05/02 14:59:53.607]
Using local port 62805 [05/02 14:59:53.607]
<cnu42.8-3-1-22.sbn>: sent 1085 blks, 555298 bytes in 1 s. 0 blk resent [05/02 14:59:54.872]
Connection received from 192.168.1.1 on port 49155 [05/02 14:59:56.968]
Read request for file <apps42.8-3-1-22.sbn>. Mode octet [05/02 14:59:56.968]
Using local port 62758 [05/02 14:59:56.968]
<apps42.8-3-1-22.sbn>: sent 4863 blks, 2489775 bytes in 6 s. 0 blk resent [05/02 15:00:02.542]
Connection received from 192.168.1.1 on port 49156 [05/02 15:00:09.547]
Read request for file <dsp42.8-3-1-22.sbn>. Mode octet [05/02 15:00:09.547]
Using local port 62336 [05/02 15:00:09.547]
<dsp42.8-3-1-22.sbn>: sent 638 blks, 326254 bytes in 1 s. 0 blk resent [05/02 15:00:10.330]
Connection received from 192.168.1.1 on port 49157 [05/02 15:00:11.846]
Read request for file <cvm42sccp.8-3-1-22.sbn>. Mode octet [05/02 15:00:11.847]
Using local port 60423 [05/02 15:00:11.847]
<cvm42sccp.8-3-1-22.sbn>: sent 4771 blks, 2442564 bytes in 6 s. 0 blk resent [05/02 15:00:17.609]
Rcvd DHCP Rqst Msg for IP 0.0.0.0, Mac 00:26:CB:BF:A9:35 [05/02 15:00:53.038]
Previously allocated address 192.168.1.1 acked [05/02 15:00:53.039]
Connection received from 192.168.1.1 on port 49158 [05/02 15:01:02.855]
Read request for file <CTLSEP0026CBBFA935.tlv>. Mode octet [05/02 15:01:02.856]
File <CTLSEP0026CBBFA935.tlv> : error 2 in system call CreateFile The system cannot find the file specified. [05/02 15:01:02.856]
Connection received from 192.168.1.1 on port 49159 [05/02 15:01:02.934]
Read request for file <SEP0026CBBFA935.cnf.xml>. Mode octet [05/02 15:01:02.934]
File <SEP0026CBBFA935.cnf.xml> : error 2 in system call CreateFile The system cannot find the file specified. [05/02 15:01:02.934]
Connection received from 192.168.1.1 on port 49160 [05/02 15:01:02.982]
Read request for file <XMLDefault.cnf.xml>. Mode octet [05/02 15:01:02.982]
File <XMLDefault.cnf.xml> : error 2 in system call CreateFile The system cannot find the file specified. [05/02 15:01:02.982]


For a step by step see this link:
Cisco IP phone boot process

** Also, another thing that many articles forget to mention, the TFTP file that the phone receives from Call Manager does not contain all of the settings that you see on the device page of the CUCM web page. Let's take a peek inside one of these files:

This file name includes the phone MAC, SEP00270B2FA049.cnf.xml:

<?xml version="1.0" encoding="UTF-8"?>
<device  xsi:type="axl:XIPPhone" ctiid="4876" uuid="{e4853103-9a48-e95e-9ac4-6252dc2d8a2b}">
<fullConfig>true</fullConfig>
<deviceProtocol>SCCP</deviceProtocol>
<sshUserId></sshUserId>
<sshPassword></sshPassword>
<ipAddressMode>0</ipAddressMode>
<allowAutoConfig>true</allowAutoConfig>
<ipPreferenceModeControl>0</ipPreferenceModeControl>
<tzdata>
<tzolsonversion>2013b</tzolsonversion>
<tzupdater>tzupdater.jar</tzupdater>
</tzdata>
<mlppDomainId>000000</mlppDomainId>
<mlppIndicationStatus>Off</mlppIndicationStatus>
<preemption>Disabled</preemption>
<executiveOverridePreemptable>false</executiveOverridePreemptable>
<devicePool  uuid="{bb482444-bb93-c261-c5a0-01971672ba20}">
<revertPriority>0</revertPriority>
<name>Orion-DP</name>
<dateTimeSetting  uuid="{9ec4850a-7748-11d3-bdf0-00108302ead1}">
<name>CST-CDT</name>
<dateTemplate>M/D/YA</dateTemplate>
<timeZone>Central Standard/Daylight Time</timeZone>
<olsonTimeZone>America/Chicago</olsonTimeZone>
</dateTimeSetting>
<callManagerGroup>
<name>BPC-CMG2</name>
<tftpDefault>false</tftpDefault>
<members>
<member  priority="0">
<callManager>
<name>10.22.32.10</name>
<description>UCM SUBSCRIBER 2</description>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5060</sipPort>
<securedSipPort>5061</securedSipPort>
<mgcpPorts>
<listen>2427</listen>
<keepAlive>2428</keepAlive>
</mgcpPorts>
</ports>
<processNodeName>10.22.32.10</processNodeName>
</callManager>
</member>
<member  priority="1">
<callManager>
<name>10.1142.10</name>
<description>UCM SUBSCRIBER 1</description>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5060</sipPort>
<securedSipPort>5061</securedSipPort>
<mgcpPorts>
<listen>2427</listen>
<keepAlive>2428</keepAlive>
</mgcpPorts>
</ports>
<processNodeName>10.1142.10</processNodeName>
</callManager>
</member>
<member  priority="2">
<callManager>
<name>10.22.242.10</name>
<description>UCM PUBLISHER</description>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5060</sipPort>
<securedSipPort>5061</securedSipPort>
<mgcpPorts>
<listen>2427</listen>
<keepAlive>2428</keepAlive>
</mgcpPorts>
</ports>
<processNodeName>10.22.242.10</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
<srstInfo  uuid="{598b7cdb-51da-913d-3be4-9007c14811ff}">
<name>Orion-SRST</name>
<srstOption>User Specific</srstOption>
<userModifiable>true</userModifiable>
<ipAddr1>10.64.224.1</ipAddr1>
<port1>2000</port1>
<ipAddr2></ipAddr2>
<port2>2000</port2>
<ipAddr3></ipAddr3>
<port3>2000</port3>
<sipIpAddr1></sipIpAddr1>
<sipPort1>5060</sipPort1>
<sipIpAddr2></sipIpAddr2>
<sipPort2>5060</sipPort2>
<sipIpAddr3></sipIpAddr3>
<sipPort3>5060</sipPort3>
<isSecure>false</isSecure>
</srstInfo>
<connectionMonitorDuration>120</connectionMonitorDuration>
</devicePool>
<TVS>
<members>
<member  priority="0">
<port>2445</port>
<address>10.22.32.10</address>
</member>
<member  priority="1">
<port>2445</port>
<address>10.1142.10</address>
</member>
<member  priority="2">
<port>2445</port>
<address>10.22.242.10</address>
</member>
</members>
</TVS>
<MissedCallLoggingOption>1</MissedCallLoggingOption>
<commonProfile>
<phonePassword></phonePassword>
<backgroundImageAccess>true</backgroundImageAccess>
<callLogBlfEnabled>3</callLogBlfEnabled>
</commonProfile>
<loadInformation>SCCP75.8-5-2SR1S.loads</loadInformation>
<vendorConfig>
<disableSpeaker>false</disableSpeaker><disableSpeakerAndHeadset>false</disableSpeakerAndHeadset><forwardingDelay>1</forwardingDelay><pcPort>0</pcPort><settingsAccess>1</settingsAccess><garp>1</garp><voiceVlanAccess>0</voiceVlanAccess><videoCapability>0</videoCapability><autoSelectLineEnable>0</autoSelectLineEnable><webAccess>0</webAccess><daysDisplayNotActive>1,7</daysDisplayNotActive><displayOnTime>07:30</displayOnTime><displayOnDuration>10:30</displayOnDuration><displayIdleTimeout>01:00</displayIdleTimeout><spanToPCPort>1</spanToPCPort><loggingDisplay>1</loggingDisplay><loadServer></loadServer><recordingTone>0</recordingTone><recordingToneLocalVolume>100</recordingToneLocalVolume><recordingToneRemoteVolume>50</recordingToneRemoteVolume><recordingToneDuration></recordingToneDuration><displayOnWhenIncomingCall>0</displayOnWhenIncomingCall><rtcp>0</rtcp><moreKeyReversionTimer>5</moreKeyReversionTimer><autoCallSelect>1</autoCallSelect><logServer></logServer><g722CodecSupport>0</g722CodecSupport><headsetWidebandUIControl>0</headsetWidebandUIControl><headsetWidebandEnable>0</headsetWidebandEnable><peerFirmwareSharing>0</peerFirmwareSharing><enableCdpSwPort>1</enableCdpSwPort><enableCdpPcPort>1</enableCdpPcPort><enableLldpSwPort>1</enableLldpSwPort><enableLldpPcPort>1</enableLldpPcPort><lldpAssetId></lldpAssetId><powerPriority>0</powerPriority><ehookEnable>0</ehookEnable><ipv6LogServer></ipv6LogServer><detectCMConnectionFailure>0</detectCMConnectionFailure><minimumRingVolume>0</minimumRingVolume><sideToneLevel>0</sideToneLevel><handsetHeadsetMonitor>1</handsetHeadsetMonitor><headsetRecording>0</headsetRecording><useEnblocDialing>1</useEnblocDialing></vendorConfig>
<commonConfig>
</commonConfig>
<enterpriseConfig>
</enterpriseConfig>
<versionStamp>1400682942-db4b9f30-8be8-4b53-af99-673afad3cba4</versionStamp>
<userLocale>
<name>English_United_States</name>
<uid>1</uid>
<langCode>en_US</langCode>
<version>9.0.0.0(1)</version>
<winCharSet>iso-8859-1</winCharSet>
</userLocale>
<networkLocale>United_States</networkLocale>
<networkLocaleInfo>
<name>United_States</name>
<uid>64</uid>
<version>9.0.0.0(1)</version>
</networkLocaleInfo>
<deviceSecurityMode>1</deviceSecurityMode>
<idleTimeout>0</idleTimeout>
<authenticationURL>http://10.22.242.10:8080/ccmcip/authenticate.jsp</authenticationURL>
<directoryURL>http://10.22.242.10:8080/ccmcip/xmldirectory.jsp</directoryURL>
<idleURL></idleURL>
<informationURL>http://10.22.242.10:8080/ccmcip/GetTelecasterHelpText.jsp</informationURL>
<messagesURL></messagesURL>
<proxyServerURL></proxyServerURL>
<servicesURL>http://10.22.242.10:8080/ccmcip/getservicesmenu.jsp</servicesURL>
<secureAuthenticationURL>https://10.22.242.10:8443/ccmcip/authenticate.jsp</secureAuthenticationURL>
<secureDirectoryURL>https://10.22.242.10:8443/ccmcip/xmldirectory.jsp</secureDirectoryURL>
<secureIdleURL></secureIdleURL>
<secureInformationURL>https://10.22.242.10:8443/ccmcip/GetTelecasterHelpText.jsp</secureInformationURL>
<secureMessagesURL></secureMessagesURL>
<secureServicesURL>https://10.22.242.10:8443/ccmcip/getservicesmenu.jsp</secureServicesURL>
<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
<dscpForCm2Dvce>96</dscpForCm2Dvce>
<transportLayerProtocol>1</transportLayerProtocol>
<dndCallAlert>2</dndCallAlert>
<phonePersonalization>0</phonePersonalization>
<rollover>0</rollover>
<singleButtonBarge>0</singleButtonBarge>
<joinAcrossLines>0</joinAcrossLines>
<autoCallPickupEnable>true</autoCallPickupEnable>
<blfAudibleAlertSettingOfIdleStation>0</blfAudibleAlertSettingOfIdleStation>
<blfAudibleAlertSettingOfBusyStation>0</blfAudibleAlertSettingOfBusyStation>
<capfAuthMode>0</capfAuthMode>
<capfList>
<capf>
<phonePort>3804</phonePort>
<processNodeName></processNodeName>
</capf>
</capfList>
<certHash></certHash>
<encrConfig>false</encrConfig>
<advertiseG722Codec>1</advertiseG722Codec>
<mobility>
<handoffdn></handoffdn>
<dtmfdn></dtmfdn>
<ivrdn></ivrdn>
<dtmfHoldCode>*81</dtmfHoldCode>
<dtmfExclusiveHoldCode>*82</dtmfExclusiveHoldCode>
<dtmfResumeCode>*83</dtmfResumeCode>
<dtmfTxfCode>*84</dtmfTxfCode>
<dtmfCnfCode>*85</dtmfCnfCode>
</mobility>
<userId></userId>
<phoneServices  useHTTPS="true">
<provisioning>0</provisioning>
<phoneService  type="1" category="0">
<name>Missed Calls</name>
<url>Application:Cisco/MissedCalls</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService  type="2" category="0">
<name>Voicemail</name>
<url>Application:Cisco/Voicemail</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService  type="1" category="0">
<name>Received Calls</name>
<url>Application:Cisco/ReceivedCalls</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService  type="1" category="0">
<name>Placed Calls</name>
<url>Application:Cisco/PlacedCalls</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService  type="1" category="0">
<name>Personal Directory</name>
<url>Application:Cisco/PersonalDirectory</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService  type="1" category="0">
<name>Corporate Directory</name>
<url>Application:Cisco/CorporateDirectory</url>
<vendor></vendor>
<version></version>
</phoneService>
</phoneServices>
</device>


I hope this has helped you to understand the processes a little better.
Also, soon I'll add an article explaining how I downloaded this TFTP file.

User's also viewed these links:
packet capture on a cisco cube

cisco cube debugging and show commands




No comments:

Post a Comment