Смена прошивок 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. Начинается следующий процесс:
- ip-phone посылает dhcp-запрос
- dhcp-сервер вместе с адресом, маской и прочими параметрами отдает адрес TFTP-сервера (т.е. свой) в опции 66 (или 150).
- ip-phone запрашивает tftp-сервер специфичные (привязанные к его MAC-у) файлы настроек. И не получает.
- ip-phone запрашивает файл дефолтных настроек. Вот его-то мы и подсовываем.
- ip-phone сравнивает версию софта указанную в файле конфигурации с имеющейся у него. Если они разные (а так оно и есть), то продолжает процесс выкачивания файлов по tftp
- первым выкачиватеся файл с именем указанным в файле настроек и с рассырением loads. Он содержит список необходимых файлов.
- с tftp-сервера выкачиваются файлы, перечисленные в .loads-файле.
- файлы устанавливаются на телефоне.
Основная загвоздка состоит в том, что название файла дефолтных настроек зависит от исходной прошивки на телефоне. В последнее время используется XMLDefault.cnf.xml. Это имя можно установить экспериментально, в логах tftp-сервера видно какие файлы пытался запросить ip-phone.
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]