Всем, кому хотя бы 1 раз приходилось держать телефон Cisco в руках, знают, что он работает на проприетарном протоколе Cisco — Skinny Client Control Protocol (SCCP). Поэтому для того, чтобы подружить Cisco например с Asterisk, необходимо установить и сконфигурировать модуль SCCP на Asterisk. Но это может быть нецелесообразно если в сети есть другие VoIP клиенты работающие на SIP. Гораздо более практичное решение здесь — прошивка телефона Cisco на SIP.
Процедуру прошивки телефона Cisco 7911 я и опишу далее…
Нам понадобиться:
- DHCP сервер
- TFTP сервер (я рекомендую TFTPd32)
- Прошивка для Cisco 7911. Мне удалось достать 8.5.3
- Файл настроек телефона: SEP<MAC адрес телефона>.cnf.xml или XMLDefault.cnf.xml
Для прошивки телефона Cisco обязательно наличие DHCP а также TFTP серверов. DHCP, кроме предоставления IP, также сообщает циске IP адрес TFTP сервера на котором находяться файлы прошивки. IP адрес TFTP сервера передается в опции 150.
Настройка DHCP сервера:
- Встроенный DHCP сервер TFTPd32
В этом случае я рекомендую подключать компьютер с TFTP сервером и телефон через общий свитч. Убедитесь, что в сети нет других DHCP серверов иначе есть риск уложить всю сеть. Дома — не страшно, а вот в офисе…
Настройка TFTPd32:
Кнопка «Settings» —>
Отмечаем галочкой DHCP Server, указываем путь к папке, которая будет служить корневой папкой TFTP сервера (Current Directory в главном окне программы). Base Directory та же, что и Current Directory. «Server Interface» — IP адрес TFTPd32 сервера (он может не соответствовать IP адресу сетевой платы). Все остальные настройки — как на скриншоте.
и DHCP :
- DHCP сервер Windows Server 2008
Лично я проводил все операции в корпоративной сети и использование DHCP сервера TFTPd32 доставляло мне некоторые неудобства т.к. необходимо было отключать компьютер от общей сети (лишая себя экстренной интернет-помощи если что-то пойдет не так). Поэтому я решил настроить корпоративный DHCP сервер на раздачу опции 150.
По умолчанию, в DHCP Windows Server нет опции 150. Ее необходимо «создать» вручную.
Открываем оснастку DHCP, ПКМ на IPv4 (в моем случае) —> Set predefined options:
Далее «Add» и как на скриншоте справа
Теперь находим наш телефон в списке устройств по MAC адресу и резервируем IP (раздел Reservations).
Применяем к нему опцию 150.
Подготовка необходимых файлов
Самое главное здесь — правильно настроить файл конфигурации SEP<MAC адрес телефона>.cnf.xml.
Пример рабочего конфигурационного файла для Cisco 7911:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 |
<?xml version="1.0" encoding="UTF-8"?> <device xsi:type="axl:XIPPhone" ctiid="94"> <fullConfig>true</fullConfig> <deviceProtocol>SIP</deviceProtocol> <sshUserId>root</sshUserId> <sshPassword>fhtr44*FD</sshPassword> <devicePool> <dateTimeSetting> <dateTemplate>Y-M-D</dateTemplate> <timeZone>Russian Standard/Daylight Time</timeZone> </dateTimeSetting> <callManagerGroup> <members> <member priority="0"> <callManager> <name>10.16.30.81</name> <ports> <ethernetPhonePort>2000</ethernetPhonePort> <sipPort>5060</sipPort> <securedSipPort>5061</securedSipPort> </ports> <processNodeName>10.16.30.81</processNodeName> </callManager> </member> </members> </callManagerGroup> <srstInfo> <srstOption>Disable</srstOption> <ipAddr1></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> <sipProfile> <sipProxies> <backupProxy></backupProxy> <backupProxyPort></backupProxyPort> <emergencyProxy></emergencyProxy> <emergencyProxyPort></emergencyProxyPort> <outboundProxy></outboundProxy> <outboundProxyPort></outboundProxyPort> <registerWithProxy>true</registerWithProxy> </sipProxies> <sipCallFeatures> <cnfJoinEnabled>true</cnfJoinEnabled> <callForwardURI>x-cisco-serviceuri-cfwdall</callForwardURI> <callPickupURI>x-cisco-serviceuri-pickup</callPickupURI> <callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI> <callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI> <meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI> <abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI> <rfc2543Hold>false</rfc2543Hold> <callHoldRingback>2</callHoldRingback> <localCfwdEnable>true</localCfwdEnable> <semiAttendedTransfer>true</semiAttendedTransfer> <anonymousCallBlock>2</anonymousCallBlock> <callerIdBlocking>2</callerIdBlocking> <dndControl>0</dndControl> <remoteCcEnable>true</remoteCcEnable> <retainForwardInformation>false</retainForwardInformation> </sipCallFeatures> <sipStack> <sipInviteRetx>6</sipInviteRetx> <sipRetx>10</sipRetx> <timerInviteExpires>180</timerInviteExpires> <timerRegisterExpires>3600</timerRegisterExpires> <timerRegisterDelta>5</timerRegisterDelta> <timerKeepAliveExpires>120</timerKeepAliveExpires> <timerSubscribeExpires>120</timerSubscribeExpires> <timerSubscribeDelta>5</timerSubscribeDelta> <timerT1>500</timerT1> <timerT2>4000</timerT2> <maxRedirects>70</maxRedirects> <remotePartyID>true</remotePartyID> <userInfo>None</userInfo> </sipStack> <autoAnswerTimer>1</autoAnswerTimer> <autoAnswerAltBehavior>false</autoAnswerAltBehavior> <autoAnswerOverride>true</autoAnswerOverride> <transferOnhookEnabled>false</transferOnhookEnabled> <enableVad>false</enableVad> <preferredCodec>none</preferredCodec> <dtmfAvtPayload>101</dtmfAvtPayload> <dtmfDbLevel>3</dtmfDbLevel> <!-- ??? --> <dtmfOutofBand>avt</dtmfOutofBand> <kpml>3</kpml> <alwaysUsePrimeLine>false</alwaysUsePrimeLine> <alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail> <phoneLabel>Miratech</phoneLabel> <stutterMsgWaiting>2</stutterMsgWaiting> <callStats>false</callStats> <offhookToFirstDigitTimer>15000</offhookToFirstDigitTimer> <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts> <disableLocalSpeedDialConfig>true</disableLocalSpeedDialConfig> <poundEndOfDial>false</poundEndOfDial> <startMediaPort>16384</startMediaPort> <stopMediaPort>32766</stopMediaPort> <sipLines> <line button="1" lineIndex="1"> <featureID>9</featureID> <proxy>10.16.30.81</proxy> <port>5060</port> <autoAnswer> <autoAnswerEnabled>2</autoAnswerEnabled> </autoAnswer> <callWaiting>3</callWaiting> <sharedLine>false</sharedLine> <messageWaitingLampPolicy>3</messageWaitingLampPolicy> <messagesNumber></messagesNumber> <ringSettingIdle>4</ringSettingIdle> <ringSettingActive>5</ringSettingActive> <forwardCallInfoDisplay> <callerName>true</callerName> <callerNumber>true</callerNumber> <redirectedNumber>false</redirectedNumber> <dialedNumber>true</dialedNumber> </forwardCallInfoDisplay> <!-- ***************************** --> <featureLabel></featureLabel> <displayName>Miratech</displayName> <name>6317</name> <authName>6317</authName> <authPassword>fhtvjd4gH-</authPassword> </line> </sipLines> <externalNumberMask>$num</externalNumberMask> <!-- ***************************** --> <voipControlPort>5060</voipControlPort> <dscpForAudio>184</dscpForAudio> <ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy> <dialTemplate>dialplan.xml</dialTemplate> </sipProfile> <commonProfile> <phonePassword>1231</phonePassword> <backgroundImageAccess>true</backgroundImageAccess> <callLogBlfEnabled>2</callLogBlfEnabled> </commonProfile> <loadInformation>SIP11.8-4-2S</loadInformation> <vendorConfig> <disableSpeaker>false</disableSpeaker> <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset> <forwardingDelay>1</forwardingDelay> <pcPort>0</pcPort> <settingsAccess>1</settingsAccess> <garp>0</garp> <voiceVlanAccess>0</voiceVlanAccess> <videoCapability>0</videoCapability> <autoSelectLineEnable>1</autoSelectLineEnable> <webAccess>0</webAccess> <daysDisplayNotActive>1,7</daysDisplayNotActive> <displayOnTime>09:00</displayOnTime> <displayOnDuration>12:00</displayOnDuration> <displayIdleTimeout>01:00</displayIdleTimeout> <spanToPCPort>1</spanToPCPort> <loggingDisplay>2</loggingDisplay> <loadServer>10.16.30.81</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>10.16.30.81</logServer> <g722CodecSupport>0</g722CodecSupport> <headsetWidebandUIControl>0</headsetWidebandUIControl> <handsetWidebandUIControl>0</handsetWidebandUIControl> <headsetWidebandEnable>0</headsetWidebandEnable> <handsetWidebandEnable>0</handsetWidebandEnable> <peerFirmwareSharing>0</peerFirmwareSharing> <enableCdpSwPort>1</enableCdpSwPort> <enableCdpPcPort>1</enableCdpPcPort> </vendorConfig> <versionStamp>1143565489-a3cbf294-7526-4c29-8791-c4fce4ce4c37</versionStamp> <userLocale> <name></name> <langCode></langCode> <version></version> <winCharSet></winCharSet> </userLocale> <networkLocale></networkLocale> <networkLocaleInfo> <name></name> <version></version> </networkLocaleInfo> <deviceSecurityMode>1</deviceSecurityMode> <idleTimeout>0</idleTimeout> <authenticationURL>http://10.16.30.81/ccmcip/authenticate.jsp</authenticationURL> <directoryURL>http://10.16.30.81/ccmcip/xmldirectory.jsp</directoryURL> <idleURL></idleURL> <informationURL>http://10.16.30.81/ccmcip/GetTelecasterHelpText.jsp</informationURL> <messagesURL></messagesURL> <proxyServerURL></proxyServerURL> <servicesURL>http://10.16.30.81/ccmcip/getservicesmenu.jsp</servicesURL> <dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig> <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices> <dscpForCm2Dvce>96</dscpForCm2Dvce> <transportLayerProtocol>2</transportLayerProtocol> <singleButtonBarge>0</singleButtonBarge> <capfAuthMode>0</capfAuthMode> <capfList> <capf> <phonePort>3804</phonePort> <!-- <processNodeName>10.16.30.81</processNodeName> --> </capf> </capfList> <certHash></certHash> <encrConfig>false</encrConfig> <advertiseG722Codec>1</advertiseG722Codec> </device> |
Вносите свои правки и сохраняйте с именем SEP<MAC адрес телефона>.cnf.xml, например SEP000A240AB79C.cnf.xml.
Простейший dialplan.xml:
1 2 3 |
<DIALTEMPLATE> <TEMPLATE MATCH="*" Timeout="3"/> </DIALTEMPLATE> |
Теперь ложим файлы в папку TFTP сервера и можно начинать прошивку. В папке должны быть:
apps11.8-5-3TH1-6.sbn
cnu11.8-5-3TH1-6.sbn
cvm11sip.8-5-3TH1-6.sbn
dialplan.xml
dsp11.8-5-3TH1-6.sbn
jar11sip.8-5-3TH1-6.sbn
SEP<MAC>.cnf.xml
SIP11.8-5-3S.loads
term06.default.loads
term11.default.loads
зажимаем # на телефоне и включаем шнур питания. Как только индикатор на трубке начнет мигать отпускаем # и нажимаем 123456789*0#. Телефон начнет прошиваться. В процессе прошивки телефон может запрашивать другие файлы — они опциональны.
Здесь меня поджидала лажа. По логам TFTp32 было видно что телефон запрашивает term11.default.loads, успешно его скачивает но дальше дело не идет. Телефон не прошивается. С периодичностью ~ 1 мин опять запрашивает term11.default.loads но прошивка не начинается.
После этого полдня ушло на поиски причины ступора. В итоге, я решил попробовать другую прошивку и скачал прошивку для Cisco 7911 8.4.2. Я распаковал содержимое архива в отдельную папку, изменил Current Directory в TFTPd32 и телефон начал прошиваться. После того, как он прошился с 8.4.2 я натравил его на 8.5.3. Все пошло как по маслу. К слову сказать, на телефоне была установлена SCCP прошивка версии 8.3.2. Вывод: Cisco 7911 не прошивается сразу на SIP 8.5.3. Необходимо сначала прошить на 8.4.2 (здесь я думаю возможны варианты, буду благодарен за дополнения в коментах относительно совместимости версий прошивок).
После прошивки телефон без проблем заработал с Asterisk.
Все вопросы относительно процесса прошивки задаем в коментах. Также могу помочь подружить Cisco телефоны с Asterisk.
>>>Русификация Cisco 7906 (7911) + скрипты адресной книги и ленты новостей — здесь<<<
P.S. Есть другие версии прошивок на другие телефоны Cisco, как SIP так и SCCP.
Удачной прошивки! 🙂