====== Смена прошивок IP-phone-ов ====== **Основная идея**: подсунуть во время начальной загрузки телефона нужные файлы по TFTP. В качестве DHCP и TFTP сервера под windows можно использовать [[wpru>tftpd32]]. В настройках DHCP указать ip-адрес самого же компьютера в качестве значения опции 66. Берется((с cisco.com при соответствующем доступе или у добрых людей)) архив с прошивками (а ля 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. См [[http://www.cisco.com/en/US/products/sw/voicesw/ps4625/products_configuration_example09186a00805a2fa5.shtml|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, содержащий 2000 192.168.20.5 SIP70.8-2-1S Обратите внимание на строку SIP70.8-2-1S в ней указано имя файла ''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 . Mode octet [17/03 10:51:40.625] File : 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 . Mode octet [17/03 10:51:40.765] File : 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 . Mode octet [17/03 10:51:40.859] : 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 . Mode octet [17/03 10:51:52.031] : 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 . Mode octet [17/03 10:51:52.765] : 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 . Mode octet [17/03 10:51:57.078] : 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 . Mode octet [17/03 10:52:01.234] : 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 . Mode octet [17/03 10:52:18.812] : 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 . Mode octet [17/03 10:52:23.250] : 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]