Cisco 7940: прошивка, SIP и TFTP


Вчера ко мне попал новый интересный телефон от Cisco — 7940. Новый он для меня, а не для Cisco — они эту модель сняли с производства уже достаточно давно, но несмотря на это она не теряет своей актуальности и по сей день, особенно учитывая то, что стоит в сравнении с модными моделями совсем недорого. Единственная проблема с ним заключается в том, что в базовой комплектации отсутствует блок питания, так как производителем предполагается, что питание будет осуществляться посредством PoE. У меня в сетях PoE нет и пока не ожидается, поэтому я потратил некоторое время на поиск блока питания. И нет, если в вашей сети нет PoE, то телефон не будет работать просто от локальной сети (может быть, звучит смешно, но мне почему-то казалось, что это возможно).

Итак, давайте рассмотрим, как устроен 7940. Во внутреннюю память каждого телефона установлен загрузчик приложений — это тот самый экран с логотипом Cisco и быстро крутящимся спиннером. Его функция заключается в том, чтобы загрузить нужную прошивку, настройки и поднять сетевое подключение. Я лично знаю две прошивки под этот телефон — SCCP и SIP. В данной инструкции речь пойдет о SIP и использовании телефона вместе с АТС Asterisk.

У телефона отсутствует возможность принудительной прошивки — загрузчик сам обратится к TFTP-серверу и скачает все, что ему нужно, вам же остается только указать версию прошивки в конфигурационном документе. TFTP-сервер может как постоянно размещаться в вашей сети, так и запускаться только для настройки телефона, однако стоит обратить внимание на то, что пользовательские рингтоны вы сможете загружать и использовать только в случае постоянного наличия подключения к TFTP-серверу, т.к. телефон не сохраняет выбранный рингтон, а скачивает его каждый раз, когда он потребуется. Таким образом, как только связь с сервером пропадает — возвращается рингтон по умолчанию. Обратите также внимание на то, что TFTP-серверу вовсе не обязательно находиться в локальной сети, но ему обязательно иметь публичный IPv4-адрес, так как обращение происходит именно по IP.

Временный TFTP-сервер
Потребуется в том случае, если на телефоне не установлена никакая прошивка и после подключения к сети он не загружается дальше логотипа Cisco с надписью «TFTP Timeout» (т.е. у вас нет доступа к настройкам в принципе).

1. Скачиваем tftpd для Windows (или tftp-hpa для Linux). Крайне рекомендую portable-версию, так как версия с установщиком работает на Windows 10 крайне странно: после настройки требует перезапуститься для сохранения настроек, после чего запускается с настройками по умолчанию).

2. Соединяем патч-кордом порт для сетевого подключения на Cisco 7940 и сетевую карту компьютера, назначаем сетевой карте статичный внутренний IP-адрес (я буду настраивать на примере 192.168.100.10). Телефон пока можно не включать.

3. Запускаем tftpd32, создаем папку для TFTP-сервера, где именно — не важно. В настройках TFTP-сервера задаем IP-адрес тот, который назначили на предыдущем шаге, а в качестве публичного каталога выбираем ту папку, которую только что создали. Также в настройках включаем DHCP-сервер, в качестве настроек задаем следующее:
IP pool starting address — начальный адрес, с которого будут назначаться адреса по DHCP. Я указал 192.168.100.100.
Size of pool — размер пула IP-адресов. Так как у нас один телефон, то можете указать любое число больше единицы.
WINS/DNS Server — так как у телефона пока нет доступа в Интернет, то и DNS нам пока ни к чему, указываем 0.0.0.0.
Default router — тот же IP-адрес, который назначен вашей сетевой карте (192.168.100.10).
Mask — маска подсети (255.255.255.0 будет вполне достаточно).

4. Включаем телефон, наблюдаем за тем, как он получит IP-адрес. Закончится все это, если дела пошли как надо, ошибкой 404, т.к. мы еще не загрузили на TFTP-сервер прошивку. Если вместо этого вы получили ошибку «TFTP Timeout» или же IP-адрес не назначился — проверьте, проходят ли запросы со стороны телефона на компьютер и не блокирует ли их брандмауэр.

5. Скачиваем прошивку и размещаем ее в созданной для TFTP-сервера папке на компьютере. В Интернете много сообщений о том, что на сайте Cisco невозможно найти актуальные прошивки, не имея клиентского аккаунта. Спешу вас разочаровать — наличие аккаунта проблему не решает, в ответ почти на все свои вопросы я получил ошибку 404, так как ссылки ведут на портал с прошивками старого сайта Cisco, который уже не существует, но по-прежнему просит авторизоваться. Для вашего удобства, я собрал прошивку вот в этот архив.

6. Отключаем телефон от питания и снова включаем. Если он начал скачивать прошивку, значит все прошло успешно и сейчас вы получите доступ к настройкам телефона. Если что-то пойдет не так, смотрите логи TFTP- и DHCP-серверов.

Настройка
После того, как телефон загрузился с действующей прошивкой, у вас появилась возможность настроить SIP-линии вручную при помощи меню. Это можно сделать также и автоматически, указав все параметры в конфигурационных файлах на TFTP-сервере — этот процесс отлично описан здесь. В файле SIPDefault.cnf я задал только параметр phone_label, который задает название терминала в верхней черной строке на дисплее. Обратите внимание, что лучше всего это название заканчивать пробелом, так как в противном случае оно будет написано слитно с «Sip». Также обратите внимание на то, что если данный параметр убрать, то в черной полосе будет указан логин первой линии.

Все настройки задаются в меню под «SIP Configuration» (пролистайте до конца, их больше, чем кажется). По умолчанию, настройки заблокированы. Для того, чтобы получить возможность их редактировать, нажмите кнопку «Settings», девятку, после чего введите «cisco» строчными буквами. Отметьте, что этот пароль нужно вводить каждый раз перед изменением настроек, так как они снова блокируются после того, как вы закрываете меню.

В сетевых настройках вам потребуется указать внешний TFTP-сервер, если вы планируете его использовать (так как готов поспорить, что вы не станете добавлять этот адрес в опции на DHCP сервере), а также некоторые другие настройки, если их требуется изменить. Обратите внимание на настройки NAT, если телефон находится в сети за NAT. Также, не забывайте о необходимости проброса портов до телефона, если сервер телефонии находится за пределами вашей локальной сети — в противном случае телефон будет осуществлять только исходящие звонки без звука.

Пользовательские рингтоны
Теперь, когда телефон настроен, вероятно, вы удивитесь тому, что на нем всего лишь два обыкновенных рингтона. Все верно — на этом телефоне они не хранятся, их место на TFTP-сервере. С данной инструкцией имеет смысл ознакомляться только в том случае, если вы планируете создавать постоянно функционирующий TFTP-сервер для нужд телефона. Одноразовое к нему подключение не даст результата, так как рингтоны, отличные от имеющихся в прошивке, не хранятся на самом телефоне, а скачиваются с сервера каждый раз, когда требуются.

Я нашел список рингтонов и создал архив с ними. Лично у меня телефон спрашивает с сервера только файл RINGLIST.DAT, однако некоторые люди пишут, что он также может интересоваться такими файлами, как ringlist.xml и DISTINCTIVERINGLIST.XML (регистр важен). На всякий случай, в сборку я добавил и их тоже. Все, что нужно сделать для того, чтобы новые рингтоны появились — загрузить все это в корень TFTP-сервера и перезапустить телефон. Обратите внимание, что также вы можете добавить свои рингтоны — телефон поддерживает только форматы pcm и raw, к тому же не любит длинные названия. Как вы уже догадались, добавленные рингтоны нужно также объявить в вышеописанных файлах по образу и подобию уже существующих.

Русификация
С русификацией я пока не справился. Я нашел языковой пакет, поддерживающий SIP-прошивку (что было нелегко, так как везде только SCCP-версия) и добавил его в SEP%MAC%.cnf.xml, однако ничего не произошло и в настройках русский язык не появился. На всякий случай, вот вам файлы локализации. Возможно, придумаете, как их применить.

Логотип на главном экране
С логотипом все просто — добавьте в SIPDefault.cnf следующую строку:

logo_url: "http://1.1.1.1/logo.bmp";

Как вы уже, наверное, догадались, «http://1.1.1.1/logo.bmp» — это URL файла логотипа в формате BMP на любом HTTP-сервере (на HTTPS не пробовал). Размеры логотипа — 90 на 56 пикселей. Цвета, которые телефон может отображать: #000000, #FFFFFF, #404040, #808080. Обратите внимание, что логотип загружается после перезагрузки телефона и также загружается каждый раз, т.е. если вы его удалите с сервера после того, как он появится на экране — после следующей перезагрузки вы снова увидите эмблему Cisco.

Время и дата
Нигде в телефоне вы не найдете возможности задать дату и время. А виной всему то, что принимать эти данные он согласен только с NTP-сервера. Где же задать NTP-сервер, спросите вы, ведь в Интернете их пруд пруди и проблем вроде как возникнуть не должно. А вот нигде. Брови

Телефон признает данные о дате и времени только в том случае, если их передает роутер, заданный в настройках сети. То есть, если у вас есть возможность настроить NTP-сервер на роутере — так и поступите, так как другого варианта, увы, нет. Существует DHCP-опция 042, которая указывает устройству на IP-адрес NTP-сервера, с которым следует синхронизироваться, но данная опция носит лишь рекомендательный характер и взглянув на дамп DHCP-обмена между телефоном и DHCP-сервером можно увидеть, что он эту опцию даже не запрашивает. Таким образом, единственный вариант — это иметь NTP-сервер (или же прокси) на основном роутере, обслуживающем телефон.


03.11.2018, 20:48
  Cisco, VoIP, SIP, телефония.
Просмотров: 300403.
Хорошая статья..
По всей видимости именно модель 7940 не схватывает файлы локали, перечитав весь опыт интернета . . увидел что локаль схватывают телефоны 7942 и даже 7941 ... что то связано именно с самими потрохами
Комментарий был отправлен 24.11.2018, 15:34. Автор: revol2.