Cisco 7960g и 7940

Пол года тому, ко мне приехала кошка 7960g, ее вы можете наблюдать на картинке. Я ее сразу настроил включил  и успешно забыл, что где и как…(в Этой заметке я расскажу, что, где и как) Но вот сегодня принесли старшую кошечку 7940, у нее были проблемы с лапкой(подставка не держала), с определением трубки и с нежеланием работать со звездочкой. Последние два пункта я исправил, а вот с первым никак, протезик за час я ей так и не придумал. Я надеюсь полный пансион и бережный уход ей обеспечат, правда Александр?:)) Для тех кому не безразлична судьба этой кошки, и как она перенесла операцию милости прошу 

Сначала разберемся с железной проблемой кошки, а потом будем настраивать софт 1. Не определяет трубку, она как бы физически есть, а телефон ее не видит. Операция проводилась при огромном содействии известного реаниматолога сети Avenue — Николая 🙂
photo31

Более детально взглянем на рычаг фиксации трубки(обратите внимание на пружину ака проволочку):
photo30  Теперь заглянем под другим ракурсом(необходимо чтобы беленькая «пымпочка» плотно прилегала к контактам):
photo29Поправив беленькую «пымпочку» и отрегулировав пружину было принято решение зашивать:)
Зашили — трубка определяется:)
Теперь будем ковырять софт!

0. Правильная ОС FreeBSD  и DHCP сервер(желательно)
1. TFTP сервер 1шт (tftp-hpa)
Лучше сразу разворачивать его на сервере, ибо оттуда телефон будет грузиться.
Некторые могут заметить что тфтп есть из коробки через inetd, но это moveton.
1.1 cd /usr/ports/ftp/tftp-hpa && make install clean
1.2

pw groupadd tftpd
pw useradd tftpd -c TFTP\ manager -d /nonexistent -g tftpd -s /usr/sbin/nologin
#Если здесь указать /var/tftp то пляски с бубном при редактировании скрипта запуска можно будет пропустить
mkdir /var/new/tftp
chown tftpd:tftpd /var/new/tftp
chmod 750 /var/new/tftp
touch /usr/local/etc/rc.d/tftpd.sh
chmod +x /usr/local/etc/rc.d/tftpd.sh
echo 'tftpd_enable="YES"' >>  /etc/rc.conf

1.3
В файл /usr/local/etc/rc.d/tftpd.sh записываем:

#!/bin/sh
#
# tftp-hpa init script
# Copyright (c) 2006 by Alexey Tsvetnov, vorakl@fbsd.kiev.ua
#
# PROVIDE: tftpd
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown
#
# Define these tftpd_* variables in one of these files:
#       /etc/rc.conf
#       /etc/rc.conf.local
#       /etc/rc.conf.d/tftpd
#
# tftpd_enable (bool): Set it to "YES" to enable tftpd.
#             Default is "NO".
# tftpd_pidfile (path):        Set full path to tftpd.pid.
#                              Default is "/var/run/tftpd.pid".
# tftpd_datadir (path): Set full path to directory with data.
#                              Default is "/var/tftp".
# tftpd_flags (str):           Extra flags passed to start command.
#                              Default is "-cps -u tftpd -U 037 -B 1468".
#
. /etc/rc.subr
name="tftpd"
rcvar=`set_rcvar`
load_rc_config $name
# DO NOT CHANGE THESE DEFAULT VALUES HERE
: ${tftpd_enable="NO"}
: ${tftpd_pidfile="/var/run/tftpd.pid"}
: ${tftpd_datadir="/var/tftp"}
: ${tftpd_flags="--ipv4 -vvcps -u tftpd -U 037 -B 1468"}
extra_commands="reload"
start_cmd="tftpd_start"
stop_postcmd="tftpd_poststop"
reload_cmd="tftpd_reload"
pidfile=$tftpd_pidfile
procname="/usr/local/libexec/in.tftpd"
tftpd_start() {
/bin/echo -n "Starting tftpd"
/usr/local/libexec/in.tftpd $tftpd_flags -l  $tftpd_datadir
/bin/ps x | /usr/bin/grep in.tftpd | /usr/bin/grep -v grep | /usr/bin/awk '{print $1}' > $tftpd_pidfile
/bin/echo "."
}
tftpd_poststop() {
/bin/rm -f $tftpd_pidfile
}
tftpd_reload() {
/bin/kill -1 `cat $tftpd_pidfile`
}
run_rc_command "$1"

Вот там где нас просят не менять значения по умолчанию, я их и поменял, да я видел вверху секцию под это дело, не заработало, а чет придумывать меня ломало:) в итоге брюки превращаются:

${tftpd_enable="YES"} : ${tftpd_pidfile="/var/run/tftpd.pid"} : ${tftpd_datadir="/var/new/tftp"}: ${tftpd_flags="--ipv4 -vvcps -u tftpd -U 037 -B 1468"}

1.4 Делаем /usr/local/etc/rc.d/tftpd.sh start
1.5 Проверяем netstat -an | grep 69

Если есть то отлично. тфтп работает продолжаемс
2. Перешивка кошки в SIP
2.1 Качаем Прошивку
Архив должен содержать:
1) OS79XX.TXT(НЕОБХОДИМ) — название прошивки
(ВАЖНО файл чувствителен к регистру, и должен содержать только имя прошивки без .bin)
Например P003-8-12-00
2) P003-xx-y-zz.bin — где xx-y-zz версия прошивки
3) P003-xx-y-zz.sbn — где xx-u-zz версия прошивки
4) P0S3-xx-y-zz.loads — где xx-u-zz версия прошивки и «S» для SIP
5) P0S3-xx-y-zz.sb2 — где xx-u-zz версия прошивки и «S» для SIP

2.2 распаковываем на нашем тфтп сервере
2.3 Разлочиваем настройки телефона, Settings -> 9 вводим пароль cisco
2.4 Задаем на телефоне опцию Alternate TFTP. Settings->3->32->Yes->Save
2.5 Указываем сам сервер TFTP. Settings->3->8->IP-адрес сервера TFTP->Save

Если перешиваемся с sccp на sip то:
в корне TFTP должен быть файл XMLDefault.cnf , в котором будет указан номер прошивки для конкрентой модели телефона. В данном случае она выглядит так:

<loadInformation7 model="IP Phone 7960″>P0S3-8-12-00</loadInformation7>.

Наблюдаем за процессом апдейта на прошивку SIP(обновление прошивки sip). Когда все успешно закончится, то в правом верхнем углу экрана появится надпись SIP.

3. Теперь она требует конфигов
Естественно если у Вас настроен сип сервер, если нет юзайте сипнет ру и прочие…
3.1 Залить на тфтп сервер следующие файлы неприличного содержания: SIPDefault.cnf, SIP.cnf, xmlDefault.CNF.XML, RINGLIST.DAT и dialplan.xml некоторые могли быть залиты на предыдущем этапе

3.2 dialplan.xml(доподнительно)
Имя задаем произвольное
Timeout устанавливает время ожидания до набора номера, те ждет 5 секунд если мы ничего больше не вводим цыска набирает номер
Также можно использовать значек # в темплейте, тогда набор будет мгновенный
Всю логику диалпланов я возлагаю на Астериск(мне так удобнее), поэтому здесь рассматривается самый простой диалплан

<DIALTEMPLATE>
    <TEMPLATE MATCH="*" Timeout="5"/> <!--  Comment:) -->
</DIALTEMPLATE> 

Конфигурационные файлы должны отвечать следующему синтаксису:

1. variable-name : value ; optional comments
2. если в значении параметра содержатся пробелы то значение экранируется кавычками

3.3 SIPmacaddress.cnf (НЕОБХОДИМ)

; phone-specific configuration file sample
line1_name : username  ;ОБЯЗАТЕЛЬНО
line1_authname : username ;ОБЯЗАТЕЛЬНО
line1_password : password ;ОБЯЗАТЕЛЬНО
line1_displayname : username ; Имя для SIP сообщений, у вызываемого будет отображен этот текст
line1_shortname : username  ; Имя линии которое будет отображаться у вас на экране(short там указано не случайно ;)
#Если вы проснулись и не поняли где находитесь, то посмотрев на верхний правый угол поймете как называется этот телефон 
phone_label: "Chief:)"

# Приглашение для консоли или телнета
phone_prompt: "SIP Phone" ; Ограничение 15 символов (по умолчанию SIP Phone)

# Пароль на телефон (для телнета или консоли)
phone_password: "123" ; ограничение до 31 символа (по умолчанию - cisco)

# Классификация пользователя используется при Registering [ none(default), phone, ip ]
user_info: none 

#dnd_control—(Optional) Do Not Disturb (не беспокоить) возможные значения:

# 0—по умолчанию выкл, но может быть вкл через интерфейс телефона 
# 1—по умолчанию вкл, но может быть выкл через интерфейс телефона (не звонит, а автоматом помещает звонки в пропущенные)
# 2—выключен и не может быть включен через интерфейс пользователя 
# 3—включен и не может быть выключен через интерфейс пользователя 

Номер линии может быть от 1 до 6 ) поэтому если у нас много серверов, красивых и разных, нужно будет накопипастить этих строк

3.4 SIPDefault.cnf(ДОПОЛНИТЕЛЬНО) настройки для всех телефонов по умолчанию

# Image Version (Необходима) версия прошивки которую будем юзать
image_version: P0S3-08-12-00

# Proxy Server (Адреса серверов) (Необходима) к-во зависит от модели телефона
proxy1_address: "192.168.5.10" ; Can be dotted IP or FQDN
proxy2_address: "" ; Can be dotted IP or FQDN
proxy3_address: "" ; Can be dotted IP or FQDN
proxy4_address: "" ; Can be dotted IP or FQDN
proxy5_address: "" ; Can be dotted IP or FQDN
proxy6_address: "" ; Can be dotted IP or FQDN

# Proxy Server Port (default - 5060) порт для каждого сервера
proxy1_port: 5060
proxy2_port: 5060
proxy3_port: 5060
proxy4_port: 5060
proxy5_port: 5060
proxy6_port: 5060

# Proxy Registration (0-disable (default), 1-enable) 
#установите  значение 1. Это позволит телефону самостоятельно зарегаться на серве!
proxy_register: 1

# Phone Registration Expiration [1-3932100 sec]
# (по умолчанию  - 3600) время истечения регистрации
timer_register_expires: 3600

# выбираем предпочитаемый кодек(g711ulaw (default), g711alaw, g729a) 
# alaw Европа и мир, ulaw - Япония и Северная Америка
preferred_codec: g711alaw

#Настраиваем приоритезацию на телефоне
# TOS bits in media stream [0-5] (Default - 5)
#(Optional) Type of Service (ToS) возможные значения:
# 0 (IP_ROUTINE)
# 1 (IP_PRIORITY)
# 2 (IP_IMMEDIATE)
# 3 (IP_FLASH)
# 4 (IP_OVERIDE)
# 5 (IP_CRITIC)
#tos_media: 5

#Inband -послылаем сигналы по голосовуму тракту(тут пикаем, там распознает)
#Out of band - посылаем сигналы по отдельному каналу, например SIP пакетом 
# Inband DTMF Settings (0-disable, 1-enable (default))
dtmf_inband: 1

# Out of band DTMF Settings (
# none - отключено,
# avt - генерирует Out of band по требованию и вырубает inband (default), 
# avt_always - всегда генерировать  Out of band, отключает inband! )
dtmf_outofband: avt

#Настраиваем уровень сигналов("ПИКов")
#(1-6dB down, 2-3db down, 3-nominal (default), 4-3db up, 5-6dB up)
dtmf_db_level: 3
# DTMF AVT Payload (Тип полезной нагрузки в AVT пакете: 96-127)
dtmf_avt_payload: 101 ; при привышении сбрасывается в дефолт: 101

# SIP Таймеры
# наименьшее значение таймера пересылки сип сообщения по умолчанию 500 msec
timer_t1: 500 ; 
# наибольшее значение таймера пересылки сип сообщения по умолчанию 4000 msec 
timer_t2: 4000 ; 
# Максимальное количество попыток пересылки сип сообщения,кроме инвайта, 10 раз
sip_retx: 10 ;
# Максимальное количество попыток пересылки сип инвайта,  6 раз 
sip_invite_retx: 6 ; 
# время истечения срока SIP Invite(в хидере), по умолч  180 sec
timer_invite_expires: 180 ; 

# Dialplan template (.xml файл на тфтп сервере откуда грузим диалплан)
dial_template: dialplan

# Папка на  TFTP сервере где хранятся настройки
tftp_cfg_dir: "" ; Например: ./sip_phone/

# как говорит одна моя знакомая: "Настройка часиков"
sntp_server: "192.168.5.10" ; SNTP Server IP Address  (НЕОБХОДИМ)
sntp_mode: anycast ;  возможные значения 
# unicast, multicast, anycast, или directedbroadcast (default) (НЕОБХОДИМ)
time_zone: EEST ; Временная зона (НЕОБХОДИМ) возможные значения
# hour/minute, -hour/minute, +hour/minute, hour, -hour, +hour, 
# PST, MST, CST, or EST.
#DST переход на летнее и зимнее время(депутаты еще не решили)
dst_offset: 1 ; Offset from Phone's time when DST is in effect
dst_start_month: April ; Month in which DST starts
dst_start_day: "" ; Day of month in which DST starts
dst_start_day_of_week: Sun ; Day of week in which DST starts
dst_start_week_of_month: 1 ; Week of month in which DST starts
dst_start_time: 02 ; Time of day in which DST starts
dst_stop_month: Oct ; Month in which DST stops
dst_stop_day: "" ; Day of month in which DST stops
dst_stop_day_of_week: Sunday ; Day of week in which DST stops
dst_stop_week_of_month: 8 ; Week of month in which DST stops 8=last week 
dst_stop_time: 2 ; Time of day in which DST stops
dst_auto_adjust: 0 ; Enable(1-Default)/Disable(0) DST automatic adjustment
time_format_24hr: 1 ; Enable(1 - 24Hr Default)/Disable(0 - 12Hr)
date_format : D/M/Y

#Не беспокоить  (0-выкл, 1-вкл, 2-выкл и вкл нельзя, 3-вкл и выкл нельзя)
dnd_control: 0 ; по умолчанию выкл

# Caller ID Blocking Включает режим блокировки определения номера
# (0-выкл, 1-вкл, 2-выкл и вкл нельзя, 3-вкл и выкл нельзя)
callerid_blocking: 0 ;по умолчанию 0, всегда отсылать свой номер

# не принимать вызовы от скрытых номеров
# Anonymous Call Blocking 
# (0-выкл, 1-вкл, 2-выкл и вкл нельзя, 3-вкл и выкл нельзя)
anonymous_call_block: 0 ; по умолчанию 0 (принимать все вызовы)

#Значение, по которому можно сравнивать значения в syncinfo.xml 
# перед выполнением удаленной перезагрузки. До 32 символов
sync: 1 ; По умолчанию 1

# Backup Proxy Support
proxy_backup: "" ; Dotted IP of Backup Proxy
proxy_backup_port: 5060 ; Backup Proxy port (default is 5060)

# Emergency Proxy Support
proxy_emergency: "" ; Dotted IP of Emergency Proxy
proxy_emergency_port: 5060 ; Emergency Proxy port (default is 5060)

# Настройка VAD(Voice Activity Detection) - определения голоса
enable_vad: 0 ;  0-выкл (по умолчанию), 1-вкл

# NAT/Firewall Traversal
nat_enable: 0 ; 0-выкл (по умолчанию), 1-Включено
nat_address: "" ; Внешний адрес под каким мы выходим (IP/DNS)
voip_control_port: 5060 ; UDP port использ для SIP messages (по умолчанию - 5060)
start_media_port: 16384 ; начало RTP диапазона для данных (по умолчанию - 16384)
end_media_port: 32766 ; конец RTP диапазона для данных (default - 32766)
nat_received_processing: 0 ; 0-выкл (по умолчанию), 1-Включено (нужно включать)

# Исходящяя прокся
outbound_proxy: "192.168.5.10" ; restricted to dotted IP or DNS A record only
outbound_proxy_port: 5060 ; default is 5060

# При 3стороннем разговоре, когда ложим трубку, соеденить оставшиеся стороны 
cnf_join_enable : 1 ; 0-откл, 1-вкл (по умолчанию)

# разрешить переадресацию, пока телефон еще звонит
semi_attended_transfer: 1 ; 0-откл, 1-вкл (по умолчанию)

# Telnet Level (разрешает или запрещает использование телнета на телефоне)
telnet_level: 2 ; 0-Откл (default), 1-Вкл, 2-привелигированный режим

# XML URLs
services_url: "http://192.168.5.10/services.xml" ; URL  внешних Phone Services
directory_url: "http://192.168.5.10/pcg_dir.xml" ; URL внешней Directory 
logo_url: "http://192.168.5.10/pcg.bmp" ; адрес лого который красуется на экране
#  для того чтобы лого смотрелось нормально лучше использовать такие цвета
# 000000 (black)  и #FFFFFF(white) или #404040 (dark grey) и #808080 (light gray)

#настройки прокси для доступа к сервисам в инете(если надо)
http_proxy_addr: "" ; Address of HTTP Proxy server
http_proxy_port: 80 ; Port of HTTP Proxy Server (80-default)

# Поддержка динамических  DNS/TFTP серверов
dyn_dns_addr_1: "" ; restricted to dotted IP
dyn_dns_addr_2: "" ; restricted to dotted IP
dyn_tftp_addr: "" ; restricted to dotted IP

# Remote Party ID (штучка для CallerID )
remote_party_id: 0 ; 0-выкл (по умолчанию), 1-вкл

#Если линия занята, а нам звонят, то после завершения текущего разговора, 
# цыска перезвонит
# Call Hold Ringback (0-выкл, 1-вкл, 2-выкл и вкл нельзя, 3-вкл и выкл нельзя)
call_hold_ringback: 0 ; По умолчанию 0

# Dialtone Stutter for MWI(подача сигнала при наличии сообщений)
stutter_msg_waiting: 0 ; 0-Откл (по умолчанию), 1-Вкл

#номер проверки голосовой почты
messages_uri: 8500

# RTP Call Statistics (SIP BYE/200 OK message exchange)
call_stats: 0

#Трансфер когда вешают трубку
transfer_onhook_enabled:1 

#network_media_type— Тип согласования эзернет порта. Значения :
# Auto — Автосогласование (по умолчанию)
#  Full100 — full-duplex, 100MB 
#  Half100 — half-duplex, 100MB 
#  Full10 — full-duplex, 10MB
#  Half10 — half-duplex, 10MB.
network_media_type:"Auto"

#autocomplete—(Дополнительно) набор номера без необходимости нажимать кнопку Dial
0 (откл), 1 (вкл,). По умолчанию 1.
autocomplete:1 

3.5 xmlDefault.CNF.XML
Добавляем строчку :P0S3-8-12-00
Файл большой на xml, все конфиги будут во вложении

3.6 RINGLIST.DAT -Файл рингтонов(необязательный)
Файлы рингтонов загружаем на TFTP сервак. Киса понимает только raw и pcm

Piano1 Piano1.raw
Piano2 Piano2.raw
Pop Pop.raw
Pulse Pulse1.raw
Old Style ringer1.pcm
Synth Low ringer2.pcm

3.7 syncinfo.xml(Дополнительно)
контролирует версию прошивки и «associated sync value» для удаленной перезагрузки.

4.1 загрузка кошки:
1. During initialization, the phone runs a bootstrap loader that loads and executes the phone image stored in Flash memory.
2. The VLAN is configured. (если цыско свич определяет какой номер войсвлана)
3. получаем айпи адрес по dhcp, или читаем че у нас во флеше записано
4. соединяемся с tftp сервером и читаем конфиг работы аккаунта телефона(если нет тфтп читаем флеш память)
5. проверяем версию прошивки

4.2 DHCP опции которые понадобятся кошке
• dhcp option #50 (IP address)
• dhcp option #1 (IP subnet mask)
• dhcp option #3 (Default IP gateway)
• dhcp option #15 (Domain name)
• dhcp option #6 (DNS server IP address)
• dhcp option #66 (TFTP server IP address)

4.3 Настройка клавиш быстрого набора
=========
Step 1 Press the settings button.
Step 2 Press the Scroll key to highlight Call Preferences.
Step 3 Press the Select softkey.
Step 4 Press the Scroll key to highlight Speed Dial Lines from the Call Preferences menu.
Step 5 Press the Select softkey.
Step 6 Press the Scroll key to highlight Line 3, Line 4, Line 5, or Line 6.

!!!!Для 7960 доступно 4 кнопки, для 7940 только одна
Step 7 Press the Edit softkey.
Step 8 Enter a brief description for the selected speed dial line for New Label.
Step 9 Press the Scroll key down arrow to select the New Number line.
Step 10 Press the Number softkey and enter a number for the selected speed dial line.
Step 11 When the New Label and New Number are correct, press the Accept softkey.

!!! Не вводите метку слишком длинную(неюзабельно)
Step 12 Repeat Step 6 through Step 11 if you want to set speed dial for another line.
Step 13 Press the Back softkey to display the Call Preferences menu.
Step 14 Press the Back softkey repeatedly to display another menu or until the main LCD screen is displayed.

4.4 Формат рингтонов

8000 Hz sampling rate
8 bits per sample
ulaw compression
240 — 16080 samples long ( 0.03 sec — 2.01 sec )

4.5 Если после долгих мучений и чужих конфигов Вам влом в них вчитываться
В консоли телефона:
erase protflash — стирает текущие настройки протокола

4.6 Иногда телефон не хочет регаться, в этом случае попробуйте указать адрес Proxy-сервера в следующем формате: если доменное имя — ставим кавычки, если ip-адрес — без кавычек!

Конструктивная критика, дельные советы всегда приветствуются 🙂
Настройки подходят и для 7940! Смотрите внимательно в лог, если вы опечатались кошка скажет где!

Прошивка и конфиги все в одном файле -> Ссылка

Что было прочитано во время готовки:
1. Настройка tftp
2. Конфиги кошки


Комментарии: