Смена прошивок IP-phone-ов

Основная идея: подсунуть во время начальной загрузки телефона нужные файлы по TFTP.

В качестве DHCP и TFTP сервера под windows можно использовать tftpd32. В настройках DHCP указать ip-адрес самого же компьютера в качестве значения опции 66.

Берется1) архив с прошивками (а ля cmterm-7970_7971-sip.8-2-1.zip). Распаковывается в корневую директорию tftp-сервера. Туда же складывается подготовленный файл дефолтных настроек.

Соединить ip-phone с компьютером ethernet-кабелем напрямую. Получится маленькая сеть из двух хостов. Можно, конечно просто воткнуть и компьютер и телефон в вашу локальную сеть, но тогда следите, что бы на dhcp-запросы от телефона не ответил другой dhcp-сервер (или, по крайней мере, ответил правильно).

Включаете ip-phone. Начинается следующий процесс:

  1. ip-phone посылает dhcp-запрос
  2. dhcp-сервер вместе с адресом, маской и прочими параметрами отдает адрес TFTP-сервера (т.е. свой) в опции 66 (или 150).
  3. ip-phone запрашивает tftp-сервер специфичные (привязанные к его MAC-у) файлы настроек. И не получает.
  4. ip-phone запрашивает файл дефолтных настроек. Вот его-то мы и подсовываем.
  5. ip-phone сравнивает версию софта указанную в файле конфигурации с имеющейся у него. Если они разные (а так оно и есть), то продолжает процесс выкачивания файлов по tftp
  6. первым выкачиватеся файл с именем указанным в файле настроек и с рассырением loads. Он содержит список необходимых файлов.
  7. с tftp-сервера выкачиваются файлы, перечисленные в .loads-файле.
  8. файлы устанавливаются на телефоне.

Основная загвоздка состоит в том, что название файла дефолтных настроек зависит от исходной прошивки на телефоне. В последнее время используется XMLDefault.cnf.xml. Это имя можно установить экспериментально, в логах tftp-сервера видно какие файлы пытался запросить ip-phone.

См Upgrade IP Phone Firmware with CCME

CP-7970G: SCCP 8.4(1SR1S) -> SIP 8.2(1S)

Файл с прошивками cmterm-7970_7971-sip.8-2-1.zip распаковывается в нужной директории.

Туда же складывается файл XMLDefault.cnf.xml, содержащий

<Default>
<callManagerGroup>
<members>
<member  priority="0">
<callManager>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
</ports>
<processNodeName>192.168.20.5</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
<loadInformation6  model="IP Phone 7910"></loadInformation6>
<loadInformation124  model="Addon 7914"></loadInformation124>
<loadInformation9  model="IP Phone 7935"></loadInformation9>
<loadInformation8  model="IP Phone 7940"></loadInformation8>
<loadInformation7  model="IP Phone 7960"></loadInformation7>
<loadInformation20000  model="IP Phone 7905"></loadInformation20000>
<loadInformation30008  model="IP Phone 7902"></loadInformation30008>
<loadInformation30002  model="IP Phone 7920"></loadInformation30002>
<loadInformation30019  model="IP Phone 7936"></loadInformation30019>
<loadInformation30006  model="IP Phone 7970">SIP70.8-2-1S</loadInformation30006>
<loadInformation119  model="IP Phone 7971"></loadInformation119>
<loadInformation30018  model="IP Phone 7961"></loadInformation30018>
<loadInformation30007  model="IP Phone 7912"></loadInformation30007>
</Default>

Обратите внимание на строку

<loadInformation30006  model="IP Phone 7970">SIP70.8-2-1S</loadInformation30006>

в ней указано имя файла SIP70.8-2-1S :!: без расширения .loads

Содержимое директории выглядит так

apps70.8-2-0-55.sbn
cnu70.8-2-0-55.sbn
cvm70sip.8-2-0-55.sbn
dsp70.8-2-0-55.sbn
jar70sip.8-2-0-55.sbn
SIP70.8-2-1S.loads
term70.default.loads
term71.default.loads
XMLDefault.cnf.xml

лог tftp-сервера

Rcvd DHCP Rqst Msg for IP 0.0.0.0, Mac 00:13:19:02:3A:BF [17/03 10:50:52.140]
Rcvd DHCP Rqst Msg for IP 0.0.0.0, Mac 00:13:19:02:3A:BF [17/03 10:51:08.125]
Rcvd DHCP Discover Msg for IP 0.0.0.0, Mac 00:13:19:02:3A:BF [17/03 10:51:40.125]
DHCP: proposed address 192.168.20.100 [17/03 10:51:40.140]
Rcvd DHCP Rqst Msg for IP 0.0.0.0, Mac 00:13:19:02:3A:BF [17/03 10:51:40.156]
Previously allocated address acked [17/03 10:51:40.156]
Connection received from 192.168.20.100 on port 49152 [17/03 10:51:40.625]
Read request for file <CTLSEP001319023ABF.tlv>. Mode octet [17/03 10:51:40.625]
File <CTLSEP001319023ABF.tlv> : error 2 in system call CreateFile Не удается найти указанный файл. [17/03 10:51:40.625]
Connection received from 192.168.20.100 on port 49153 [17/03 10:51:40.765]
Read request for file <SEP001319023ABF.cnf.xml>. Mode octet [17/03 10:51:40.765]
File <SEP001319023ABF.cnf.xml> : error 2 in system call CreateFile Не удается найти указанный файл. [17/03 10:51:40.765]
Connection received from 192.168.20.100 on port 49154 [17/03 10:51:40.859]
Read request for file <XMLDefault.cnf.xml>. Mode octet [17/03 10:51:40.859]
<XMLDefault.cnf.xml>: sent 3 blks, 1118 bytes in 0 s. 0 blk resent [17/03 10:51:40.859]
Connection received from 192.168.20.100 on port 49155 [17/03 10:51:52.031]
Read request for file <SIP70.8-2-1S.loads>. Mode octet [17/03 10:51:52.031]
<SIP70.8-2-1S.loads>: sent 2 blks, 638 bytes in 0 s. 0 blk resent [17/03 10:51:52.046]
Connection received from 192.168.20.100 on port 49156 [17/03 10:51:52.750]
Read request for file <Jar70sip.8-2-0-55.sbn>. Mode octet [17/03 10:51:52.765]
<Jar70sip.8-2-0-55.sbn>: sent 930 blks, 476147 bytes in 1 s. 0 blk resent [17/03 10:51:53.812]
Connection received from 192.168.20.100 on port 49157 [17/03 10:51:57.078]
Read request for file <cnu70.8-2-0-55.sbn>. Mode octet [17/03 10:51:57.078]
<cnu70.8-2-0-55.sbn>: sent 850 blks, 434729 bytes in 1 s. 0 blk resent [17/03 10:51:58.062]
Connection received from 192.168.20.100 on port 49158 [17/03 10:52:01.234]
Read request for file <apps70.8-2-0-55.sbn>. Mode octet [17/03 10:52:01.234]
<apps70.8-2-0-55.sbn>: sent 4603 blks, 2356238 bytes in 5 s. 0 blk resent [17/03 10:52:06.421]
Connection received from 192.168.20.100 on port 49159 [17/03 10:52:18.812]
Read request for file <dsp70.8-2-0-55.sbn>. Mode octet [17/03 10:52:18.812]
<dsp70.8-2-0-55.sbn>: sent 963 blks, 492817 bytes in 1 s. 0 blk resent [17/03 10:52:19.890]
Connection received from 192.168.20.100 on port 49160 [17/03 10:52:23.250]
Read request for file <cvm70sip.8-2-0-55.sbn>. Mode octet [17/03 10:52:23.250]
<cvm70sip.8-2-0-55.sbn>: sent 4837 blks, 2476522 bytes in 5 s. 0 blk resent [17/03 10:52:28.593]

Rcvd DHCP Discover Msg for IP 0.0.0.0, Mac 00:13:19:02:3A:BF [17/03 10:55:48.093]
DHCP: proposed address 192.168.20.100 [17/03 10:55:48.109]
Rcvd DHCP Rqst Msg for IP 0.0.0.0, Mac 00:13:19:02:3A:BF [17/03 10:55:48.140]
Previously allocated address acked [17/03 10:55:48.156]
Rcvd DHCP Rqst Msg for IP 0.0.0.0, Mac 00:13:19:02:3A:BF [17/03 10:55:53.625]
Previously allocated address acked [17/03 10:55:53.640]
Connection received from 192.168.20.100 on port 49152 [17/03 10:56:13.968]
1)
с cisco.com при соответствующем доступе или у добрых людей