How to recovery Cisco IP Phone from “Upgrading” state using CUCME [SOLVED]

Решил законспектировать процесс вывода Cisco Phone 7900 серии из состояния “Upgrading”. Симптомы: Купили телефон на Ebay.com, подключаете и видите экран “Upgrading” и через некоторое время девайс уходит в reboot, и так по кругу. На органы управления не реагирует. Вывод: у телефона нет прошивки и ее нужно ему предоставить.

  1. Для упрощения подключаем телефон непосредственно к порту маршрутизатора с CME. Если у вас ISR G2, у которого оба порта поддерживают “Auto-MDIX”, то подключаем любым кабелем, если у вас ISR G1 или младше, то подключаем cross-over-ным кабелем. То, что линк поднялся следует проверить (”show ip int brief”, к примеру).
  2. Если конфиг пуст, то конфигурим интерфейс и DHCP сервер:
    interface FastEthernet0/1
     ip address 192.168.255.254 255.255.255.0
     exit
    
    ip dhcp excluded-address 192.168.255.254
    ip dhcp pool LAN
     network 192.168.255.0 255.255.255.0
     option 150 ip 192.168.255.254 
     default-router 192.168.255.254
     exit
    
  3. Скачиваем прошивку к телефону. В нашем конкретном случае это SCCP прошивка к Cisco IP Phone 7906/7911. Cisco.com > Support > All Downloads > Products > Collaboration Endpoints > IP Phones > Cisco Unified IP Phone 7900 Series > Cisco Unified IP Phone 7906G > Skinny Client Control Protocol (SCCP) Software.

    При выборе прошивки мы должны помнить важное из “Release Notes”:

    For all SCCP firmware upgrades from firmware release versions earlier than 8.3(3) to Version 9.3(1) or later, you must first upgrade your phone firmware to an intermediate version (8.3(3) to 8.5(2)) and then upgrade to 9.3(1).

    The following upgrade issues apply:
    • If you are currently running firmware earlier than 6.0(2) on a Cisco Unified IP Phone and want to upgrade to 8.x(x), you must first install an intervening 7.0(x) load to prevent upgrade failure. Cisco recommends using the most recent 7.0(3) load as the intervening load to avoid lengthy upgrade times.
    • If you are currently running firmware 6.0(2) to 7.0(2) on a Cisco Unified IP Phone and want to upgrade to 8.x(x), you can do so directly. However, expect the upgrade to take twice as long as usual.

    Маловероятно, что версия имеющегося телефона ниже версии 6.0(2), поэтому предлагаю использовать 8.5(2), т.е. скачиваем cmterm-7911_7906-sccp.8-5-2.zip, раскрываем, полученные файлы заливаем в понравившийся нам каталог на flash. В моем случае это выглядит так:

    R1#dir flash:/firmware/7911/SCCP_8.5.2/
    Directory of flash:/firmware/7911/SCCP_8.5.2/
    
       46  -rw-     2942935   May 7 2009 10:06:22 +00:00  apps11.8-5-2TH1-9.sbn
       47  -rw-      502531   May 7 2009 10:06:20 +00:00  cnu11.8-5-2TH1-9.sbn
       48  -rw-     2114845   May 7 2009 10:06:26 +00:00  cvm11sccp.8-5-2TH1-9.sbn
       49  -rw-      340383   May 7 2009 10:06:24 +00:00  dsp11.8-5-2TH1-9.sbn
       50  -rw-     1616098   May 7 2009 10:06:26 +00:00  jar11sccp.8-5-2TH1-9.sbn
       51  -rw-         670   May 7 2009 10:06:16 +00:00  SCCP11.8-5-2S.loads
       52  -rw-         674   May 7 2009 10:06:20 +00:00  term06.default.loads
       53  -rw-         674   May 7 2009 10:06:18 +00:00  term11.default.loads
    
    511664128 bytes total (97017856 bytes free)
    R1#
  4. Делаем так, чтобы эти файлы были доступны телефону по TFTP:
    tftp-server flash:/firmware/7911/SCCP_8.5.2/apps11.8-5-2TH1-9.sbn alias apps11.8-5-2TH1-9.sbn
    tftp-server flash:/firmware/7911/SCCP_8.5.2/cnu11.8-5-2TH1-9.sbn alias cnu11.8-5-2TH1-9.sbn
    tftp-server flash:/firmware/7911/SCCP_8.5.2/cvm11sccp.8-5-2TH1-9.sbn alias cvm11sccp.8-5-2TH1-9.sbn
    tftp-server flash:/firmware/7911/SCCP_8.5.2/dsp11.8-5-2TH1-9.sbn alias dsp11.8-5-2TH1-9.sbn
    tftp-server flash:/firmware/7911/SCCP_8.5.2/jar11sccp.8-5-2TH1-9.sbn alias jar11sccp.8-5-2TH1-9.sbn
    tftp-server flash:/firmware/7911/SCCP_8.5.2/SCCP11.8-5-2S.loads alias SCCP11.8-5-2S.loads
    tftp-server flash:/firmware/7911/SCCP_8.5.2/term06.default.loads alias term06.default.loads
    tftp-server flash:/firmware/7911/SCCP_8.5.2/term11.default.loads alias term11.default.loads
    
  5. В принципе, все готово. Можно даже ничего другого и не делать, и CME нам даже не понадобился. Можно использовать любой TFTP сервер, к примеру, обычный ПК + tftpd32.
  6. Что по идее должно поизойти:

    В включении телефона он используя DHCP получает IP и адрес TFTP сервера по DHCP Option 150. После этого он идет на Cisco и скачивает файл termXX.default.loads (в случае 7906 это будет term06.default.loads), в котором указаны файлы прошивки которые нужно забраться телефоны (строго по списку). После этого телефон скачивает файлы и перезагружается. Фактически после этого телефон готов к работе. По идее он также должен по DHCP получить адрес и TFTP сервер, спросить у него SEP111122223333.cnf.xml и если его нет, то XMLDefault.cnf.xml, в котором будут содержаться адрес CUCM или CUCME. Также в SEP111122223333.cnf.xml может быть указана версия прошивки (если она не совпадет с текущей на телефоне, то телефон пойдет за указанной новой прошивкой). После этого телефон будет пытаться зарегистрироваться.

Cisco IOS ACL for WiFi Associations.

Один из WiFi клиентов, вероятно из-за низкого уровня сигнала, создает проблему для других WiFi клиентов. Чтобы определить виновника и чтобы исключить что-то неладное использовал “Filters Using MAC-Based ACLs”. Главный результат - устройство не может ассоциироваться с интерфейсом. При наличии проблем я просто отключаю пользователей один за другим. Так достаточно просто найти проблемное устройство. Все что не разрешено - запрещено.

conf t
 access-list 700 permit 0040.96a5.b5d4 0000.0000.0000
 access-list 700 permit 0013.4660.7675 0000.0000.0000

 dot11 association mac-list 700

Free DDNS for Cisco (FreeDNS.afraid.org, noip.com).

Не так давно, “Dyn solutions” (dyndns.com, dyndns.org, dyn.com) исключила возможность бесплатного использования услуги DDNS. Решил перенастроить свой домашний Cisco девайс на использование других бесплатных DDNS. На этот раз решил сделать сразу два, чтобы особенно не надеяться на одного. Помню мне доставляло неудобство политика “Dyn” по частоте обновлений.

FreeDNS.afraid.org

  1. Регистрируемся - http://freedns.afraid.org/signup/
  2. Сразу после заполнения придет email для активации. Если используете Gmail, то ищите в каталоге SPAM.
  3. В левом меню выбираем “Registry” > выбираем понравившееся имя, к примеру mooo.com > вписываем имя желаемого домена > Save!.
  4. В левом меню “Dynamic DNS” > “Direct URL“. Копируем себе этот URL.
  5. Конфигурим IP SLA на Cisco, будем запускать его раз в 2 минуты (по умолчанию раз в минуту). Для ввода знака ? следует в CLI сначала набрать Ctrl+V.
    conf t
     ip sla 1
      http get http://freedns.afraid.org/dynamic/update.php?NTFMM0pmcmw2SnlFNjZWYTQzdElhcEV2OjExNzkxXXXX
      frequency 120
      exit
     ip sla schedule 1 life forever start-time now
    
  6. Сразу после первого выполнения можно проверять:
    nslookup hostname.mooo.com 8.8.8.8
    Server:  google-public-dns-a.google.com
    Address:  8.8.8.8
    
    Non-authoritative answer:
    Name:    hostname.mooo.com
    Address:  1.0.123.113
    

noip.com

Сервис noip.com (он же no-ip.com и еще очень много различных алиасов) предоставляет бесплатный сервис DDNS требующий подтверждения раз в 60 дней.

  1. Регистрируемся на сайте noip.com.
  2. На основе их инструкции конфигурим Cisco девайс. Конфиг вполне рабочий.
  3. Username - Имя зарегистрированного пользователя, а не email как указано в многих сторонних блогах.
  4. Параметр remove я считаю конфигурить не нужно. Какой смысл? Все равно линк уже отвалился, у меня только один провайдер.
  5. Для ввода знака ? следует в CLI сначала набрать Ctrl+V.
    conf t
     ip ddns update method noip
      HTTP
       add http://username:password@dynupdate.no-ip.com/nic/update?hostname=<h>&myip=<a>
       exit
      interval maximum 0 2 0 0
      exit
    
     interface dialer0
      ip ddns update hostname hostname.noip.me
      ip ddns update noip
    

По поводу интервалов:

  1. DDNS update срабатывает как только изменился адрес (поднялся интерфейс dialer0). Некоторые провайдеры, например DynDNS запрещают обновлять чаще чем указано в его политиках. Для решения проблемы можно использовать параметр interval minimum.
  2. Если требуется обновление раз в какой-то период даже если ничего не происходит (адрес не меняется, интерфейс всегда в UP), то следует использовать interval maximum. Получается что-то типа keepalive.

Все это более подробно внес в Wiki, с чем себя и поздравляю.

Admin area