Рейтинг@Mail.ru

Как прошить IP-телефон Cisco

Итак вы купили IP-телефон от Cisco, но вот незадача – по умолчанию он использует родной цисковский протокол SCCP.


И хотя тот же Asterisk умеет работать с этим протоколом, большинство провайдеров IP телефонии предоставляют услуги по православному, открытому протоколу SIP. Соответственно, телефон надо перешить на этот протокол, благо практически все аппараты Cisco позволяют это сделать. Первым делом вам нужно найти SIP прошивку для вашей модели. Казалось бы, проще всего это сделать на сайте производителя – Cisco. А вот хуй, для скачивания вам необходимо зарегистрироваться, но вот прям сразу возможность скачивать вам не дадут. Вам нужно поумолять админов, чтобы получить доступ. Я послал все это нахуй, и просто нагуглил прошивку по названию файла и скачал ее в итоге с софтопедии. Если у вас есть Cisco Call Manager, то прошивку можно залить через него. Но поскольку вы смотрите это видео, навряд ли у вас есть доступ к такому корпоративному серверу. Можно перешить и на коленке. Для этого нам понадобится какой-нибудь tftp сервер, ну например tfpd32. Телефон и компьютер нужно соединить между собой, в принципе можно напрямую, но лучше наверное с чем-нибудь что имеет DHCP сервер. Я воткнул телефон в роутер, к которому по вайфайю подключил ноутбук. Теперь на компьютере распаковываем прошивку в папку с tftpd32 и запускаем tftp сервер. В большинстве туториалов указано, что нужно создать еще рядом с прошивкой файл XMLDefault.cnf.xml, где внутри будет указаны модели всех телефонов и названия прошивок которые им надо брать.

<Default>
<callManagerGroup>
    <members> 
       <member priority="0"> 
          <callManager> 
             <ports> 
                <ethernetPhonePort>2000</ethernetPhonePort> 
                <mgcpPorts> 
                   <listen>2427</listen> 
                   <keepAlive>2428</keepAlive> 
                </mgcpPorts> 
             </ports> 
             <processNodeName></processNodeName> 
          </callManager> 
       </member> 
    </members> 
 </callManagerGroup> 
<loadInformation30007 model="CP-7912">CP7912080000SIP060111A</loadInformation30007>
<loadInformation115 model="CP-7941G">SIP41.9-2-3S</loadInformation115>
<loadInformation434 model="Cisco 7942"></loadInformation434>
<loadInformation309 model="Cisco 7941G-GE">SIP41.8-5-2S</loadInformation309>
<loadInformation435 model="Cisco 7945"></loadInformation435>
<loadInformation465 model="Cisco IP Phone 6941">SIP69xx.9-4-1-3</loadInformation465>
<loadInformation30018 model="CP-7961">SIP41.8-5-2S</loadInformation30018>
<loadInformation308 model="Cisco 7961G-GE">SIP41.8-5-2S</loadInformation308>
<loadInformation404 model="Cisco 7962"></loadInformation404>
<loadInformation436 model="Cisco 7965"></loadInformation436>
<loadInformation6 model="CP-7970">SIP70.8-4-2S</loadInformation6>
<loadInformation30006 model="CP-7970">SIP70.8-4-2S</loadInformation30006>
<loadInformation119 model="Cisco 7971">SCCP70.8-3-1S</loadInformation119>
<loadInformation437 model="Cisco 7975"></loadInformation437>
<loadInformation302 model="Cisco 7985">cmterm_7985.4-1-4-0</loadInformation302>
<authenticationURL></authenticationURL> 
<directoryURL></directoryURL> 
<idleURL></idleURL> 
<informationURL></informationURL> 
<messagesURL></messagesURL> 
<servicesURL></servicesURL> 
</Default>

Я честно проебался с этим файлом битый час, но так у меня ничего и не получилось.

Connection received from 192.160.1.100 on port 49203 [23/11 20:49:17.882]
Read request for file . Mode octet [23/11 20:49:17.882]
File : error 2 in system call CreateFile The system cannot find the file specified. [23/11 20:49:17.882]

Поэтому создаем персональный файл вида SEPxxxxxxxx.cnf.xml , где после SEP идет MAC-адрес нужного аппарата. Внутри него прописываем всего одну строчку, с именем прошивки.

<device>
<loadInformation model="Cisco IP Phone 6941">SIP69xx.9-4-1-3</loadInformation>
</device>

Теперь на телефоне включаем Alternate TFTP server, и прописываем ему IP адрес этого самого сервера, в моем случае адрес ноутбука. Передергиваем телефон по питанию, и начинается загрузка прошивки в аппарат. Это займет некоторое время, в ходе которого аппарат сам несколько раз перезагрузится. И вот собственно результат. Была у нас прошивка 9.0.2, и неактивная 8.5, теперь стала SIP 9.4.1, а 9.0.2 теперь в бекапе. Собственно все. Настройки этого самого SIP от провайдера в телефон передаются точно таким же макаром – путем создания конфигурационного файла и закачки его через TFTP сервер. Данный способ безусловно не очень-то подходит, если вам нужно перешить сотню-другую аппаратов, так как для каждого придется создавать персональный файл по имени MAC-адреса, и именно здесь на выручку должен придти тот файл по умолчанию XMLDefault.cnf.xml который у меня почему-то не заработал. Но если надо перешить с десяток телефонов или меньше, то способ вполне рабочий.

Здесь можно скачать архив с настроечными файлами.

Небольшие комментарии по правильной настройке файлов:

XMLDefault.cnf.xml
Этот файл используется по умолчанию, в отличии от файла SEPXXXXXXXXXXXX.cnf.xml специфического для каждого конкретного телефонного аппарата.
Убедись, что load information совпадает с прошивкой, которую ты пытаешься загрузить, т.к. телефон считывает версию прошивки из этого файла. UCXIPADDRESS надо заменить на адрес UCX сервера.

<Default>
  <callManagerGroup>
     <members>
        <member priority="0">
           <callManager>
              <ports>
                 <ethernetPhonePort>2000</ethernetPhonePort>
              </ports>
              <processNodeName>UCXIPADDRESS</processNodeName> <!-- IP адрес UCx сервера -->
           </callManager>
        </member>
     </members>
  </callManagerGroup>  
<loadInformation495    model="Cisco 6921">SIP69xx.9-4-1-3SR3</loadInformation495> <!-- версия прошивки для конкретной модели аппарата -->
<loadInformation496    model="Cisco 6941">SIP69xx.9-4-1-3SR3</loadInformation496>
<loadInformation497    model="Cisco 6961">SIP69xx.9-4-1-3SR3</loadInformation497>
</Default>

SEPXXXXXXXXXXXX.cnf.xml
В отличии от предыдущего, этот файл настроек для конкретного аппарата с конкретным MAC-адресом. Поэтому в названии файла необходимо заменить XXXXXXXXXXXX на мак-адрес телефона. Важно писать адрес БОЛЬШИМИ БУКВАМИ иначе файл не будет считан. Например, если мак-адрес телефона 00260С9DИС21 то файл для этого телефона должен называться SEP00260С9DИС21.cnf.xml
В каждом файле под каждый конкретный аппарат нужно изменить loadinformation на версию прошивки, EXTENSION на (внутренний) номер телефона, а также следующие строки:

<callManager>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5060</sipPort>
<securedSipPort>5061</securedSipPort>
</ports>
<processNodeName>#UCXIPADDRESS</processNodeName>   <!-- IP адрес UCx сервера -->
</callManager>
...
<phoneLabel>EXTENSION</phoneLabel>  <!-- Отображаемый телефонный номер этого аппарата -->
...
<sipLines>
<line button="1">
<featureID>9</featureID>
<featureLabel>KEYLABEL</featureLabel>  <!-- Отображаемое название функциональной кнопки -->
<proxy>UCXIPADDRESS</proxy>  <!-- IP адрес UCx сервера -->
<port>5060</port>
<name>EXTENSION</name>  <!-- Телефонный номер этого аппарата -->
<displayName>EXTENSIONDISPLAYNAME</displayName>  <!-- Отображаемое название номера -->
<autoAnswer>
<autoAnswerEnabled>2</autoAnswerEnabled>
</autoAnswer>
<callWaiting>3</callWaiting>
<authName>EXTENSION</authName>   <!-- Телефонный номер этого аппарата (логин) -->
<authPassword>#EXTENSIONSECRET</authPassword>  <!-- Секрет для этого номера (пароль) -->
<sharedLine>false</sharedLine>
<messageWaitingLampPolicy>1</messageWaitingLampPolicy>
<messagesNumber>*97</messagesNumber>
<ringSettingIdle>4</ringSettingIdle>
<ringSettingActive>5</ringSettingActive>
<contact>#EXTENSION</contact>
...
<loadInformation>SIP69xx.9-4-1-3SR3</loadInformation>  <!-- Должно в точности совпадать с файлом прошивки без расширения .loads -->

Leave a Comment