понедельник, 29 сентября 2008 г.

Подружим Cisco IP Phone и Asterisk

Самый попурярный канал Asterisk, используемый в качестве канала подключения для клиентов это, конечно, SIP. Существует масса недорогих программных и аппаратных SIP-телефонов, легко интегрируемых в Asterisk. Но что делать, если нам в наследство (или в подарок!) достался один из замечательных VoIP-телефонов производства Cisco Systems, который в большинстве своём работают по собственному протоколу SCCP?


У меня так в руках оказался Cisco 7902, но без CallManager-а. Вот и решил проверить работоспособность аппарата с помощью Asterisk.

В Asterisk изначально есть канал skinny, однако рекомендуется всё-таки использовать более совершенный chan-sccp-b. Сообщается, что поддерживаются также устройства:

  • 12 — Cisco IP Phone 12SP+
  • 30 — Cisco IP Phone 30VIP
  • 7902 — Cisco IP Phone 7902G
  • 7905 — Cisco IP Phone 7905G - Fully supported
  • 7910 — Cisco IP Phone 7910
  • 7912 — Cisco IP Phone 7912G
  • 7920 — Cisco IP Wireless Phone 7920 - All basic features
  • 7935 — Cisco IP Conference Station 7935
  • 7936 — Cisco IP Conference Station 7936 - Fully supported
  • 7940 — Cisco IP Phone 7940 - Fully supported
  • 7941 — Cisco IP Phone 7941 - Initial Support
  • 7960 — Cisco IP Phone 7960 - Fully supported
  • 7961 — Cisco IP Phone 7961 - Initial Support / Reported to work
  • 7970 — Cisco IP Phone 7970 - Fully supported
  • 7971 — Cisco IP Phone 7971 - Fully supported
  • 7961GE
  • 7941GE
  • 7911
  • 7980 — Cisco IP Communicator
  • 7985
  • 7914 — Cisco IP Phone 7960 with 1 or 2 7914 addons
  • ata — Cisco ATA
  • KIRK — Kirk is a wireless phone that uses sccp

Его и поставим.
Сходим на страницу проекта, скачаем последнюю версию (в моём случае это chan_sccp_20071213.tar.gz).
# wget "http://downloads.sourceforge.net/chan-sccp-b/chan_sccp_20071213.tar.gz?modtime=1197572506&big_mirror=0"
# tar xf chan_sccp_20071213.tar.gz


Соберём модуль:

# cd chan_sccp_20071213/
# make
sh ./create_config.sh "/usr/include"
Creating config file
====================
Checking Asterisk version...
* found asterisk 1.4
Build PARK functions (y/n)[n]?y
Build PICKUP functions (y/n)[n]?y
Use realtime functionality (y/n)[n]?y
* found 'struct ast_channel_tech'
* found 'ast_bridged_channel'
* found 'struct ast_callerid'

<...>
Now compiling .... sccp_softkeys.c 558 lines
Now compiling .... sccp_socket.c 394 lines
Now compiling .... sccp_indicate.c 329 lines
Linking chan_sccp.so

Последняя строка говорит нам о том, что модуль собрался и готов к использованию. а нам это и надо, устанавливаем его простым копированием (туда, где модули Астериска, у меня в примере - по умолчанию).

cp chan_sccp.so /usr/lib/asterisk/modules/

Установили, теперь нужно убедить Asterisk в использовании его вместо стандартного. Для этого в /etc/asterisk/modules.conf пишем:

noload => chan_skinny.so
load => chan_sccp.so
Теперь необходимо создать конфиг модуля по образу и подобию со страницы описания. Добпвляем телефоны (аппараты - по MAC-адресу) и линии (номера - по екстеншену). В extensions.conf корректируем диалплан чтобы приходили входящие вызовы.

Ну и осталось дело за малым. Но немаловажным! TFTP-сервер.
У меня дистрибутив Gentoo, поэтому установка свелась к следующему:
# emerge net-ftp/tftp-hpa
# mkdir /tftproot
# /etc/init.d/in.tftpd start
# rc-update add in.tftpd default

В /tftproot должен находиться хотя бы XmlDefault.cnf.xml содержанием:

<callManager>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
</ports>
<processNodeName>IP Астериска</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
</Default>

Также для каждого аппарата можно положить свой конфиг с именем типа SEP.cnf.xml. Необходимость - только если особое время/язык прошивки. Пример тут.

MAC-адрес написан на каждом телефоне на обратной стороне. Cisco IP Communicator использует MAC используемой сетевой карты.

среда, 24 сентября 2008 г.

Ad-hoc сеть средствами Windows

Многие частенько задумываются, как быстро связать два устройства на базе Windows (типичный пример - два ноутбука) по Wi-Fi. Бывает, что сходу и не вспомнишь/не угадаешь в галочках в настройках и свойствах.
Делаю шпаргалку..

Итак.. Вся разница только в том, что Ad-hoc в отличие от инфраструктуры - не клиент-серверная архитектура (клиент-сервер, конечно, немного не из этой оперы, однако суть та же). Это точка-точка. Соответственно нужно настроить на обоих концах wifi-адаптеры и должно заработать. Microsoft нас обрадовала тем, что можно сделать ad-hoc соединение проще, а именно:
- настроить на одном устройстве подключение;
- найти его другим устройством (если конечно включено вещание SSID);
- вбить необходимые настройка на втором адаптере.
То есть та же схема, что и при работе с точками доступа.

Сейчас настроим первое устройство. Для этого по большому счёту нужно просто добавить беспроводную сеть на первом устройстве, указать, что это точка-точка. Адаптер заработает сразу.

Для этого перейдём в сетевые подключения (обычно Пуск-Настройка-Сетевые подключения).


Там на беспроводном подключении - правой кнопкой - в контекстное меню Свойства.
В появившемся окне перейдём на вкладку Беспроводные сети.


Нужно Добавить новую сеть.


Появляется окно для настройки новой беспроводной сети, где нам следует придумать имя для сети (SSID - идентификатор), не забыть поставить галочку "это прямое подключение компьютер-компьютер", и выбрать ключ шифрования. Рекомендую использовать WPA.. Так, на всякий случай. Там только один нюанс - ключ может быть 5 или 13 символов.


Жмём ОК.
После этого наша сеть появится в беспроводных соединениях.


Потом на другом устройстве ищем эту сеть в беспроводном окружении (если не выключено вещание SSID). И подключаемся как к обычной точке доступа. Или повторяем процедуру, непосредственно вбив настройки, повторяя все пункты точно так же, подключение установится само.

Небольшое замечание - Wi-Fi устанавливает соединение 1 и 2го уровня, IP-адреса следует настроить вручную, чтобы увидеть другое устройство в сети ping-ом (и остальными программами).