View Source

h1. Установка и настройка аналоговой карты Digium TDM400P


h2. Описание

!wildcard_tdm400p.jpg|align=right!
TDM400P - это PCI карта, которая служит основой для четырех FXS/FXO модулей. Модули можно сочетать в любом количестве. Чтобы различать различные комбинации, существует следующая нотация TDMXYB, где:
* X - количество FXS портов.
* Y - количество FXO портов.
* B - bundle (комлект).
Пример: карта TDM411B имеет 1 FXS и 1 FXO порт.


Зеленые модули
\\
\- это FXS порты (S110M), красные модули
\\
\- FXO порты (X110M). TDM400P подходит в любой (3.3/5 вольт) PCI слот. Смотрите также FXS/FXO интерфейсов и [S110M|Digium:Digium S110m] и [X110M|Digium:Digium X100m] для карты TDM400P

h2. Пошаговая инструкция

1. Выключите компьютер
2. Выключите шнур питания из сети 220 вольт.
3. Вставьте TDM400P в PCI слот с напряжением 3.3 вольта или 5 вольт. Требуется PCI версии 2.2 или выше.
4. Вставьте 4-х пиновый 12-ти вольтный коннектор (такой как кабель питания жесткого диска) белую пластиковую розетку, расположенную в задней части карты.
5. Включите сервер.

После установки карты нужно убедиться, что ядро видит PCI устройство. Варианты вывода команды lspci:
* Communication controller: Tiger Jet Network Inc. [Tiger3XX] Modem/ISDN interface / Network controller: Tiger Jet Network Inc. [Tiger3XX] Modem/ISDN interface \-для карт TE110p или TDM400p.
* Network controller: Jens Scoenfeld для TE110p или TDM400p.

Далее нужно загрузить модуль ядра для карты TDM400P:
{noformat}
explorer ~ # modprobe zaptel
explorer ~ # modprobe wctdm
{noformat}
После загрузки модулей файл /var/log/messages должен содержать строки (для карты TDM22B):
{noformat}
May 26 21:54:29 explorer kernel: Zapata Telephony Interface Registered on major 196
May 26 21:54:32 explorer kernel: Freshmaker version: 63
May 26 21:54:32 explorer kernel: Freshmaker passed register test
May 26 21:54:32 explorer kernel: Module 0: Installed — AUTO FXO
May 26 21:54:32 explorer kernel: Module 1: Installed — AUTO FXO
May 26 21:54:32 explorer kernel: Module 2: Installed — AUTO FXS
May 26 21:54:32 explorer kernel: Module 3: Installed — AUTO FXS
May 26 21:54:32 explorer kernel: Found a Wildcard TDM: Wildcard TDM400P REV E/F (4 modules)
{noformat}

h2. Конфигурирование

За конфигурацию карты отвечает файл /etc/zaptel.conf.

h3. Сигнализация

Минимальные настройки
\\
\- это тип сигналинга (FXO/FXS). Здесь может быть небольшая путаница. FXO модули используют тип сигналинга FXS, и наоборот. Для FXO модулей могут использоваться следующие типы сигналинга:
* fxsls : Channel(s) are signalled using FXS Loopstart protocol
* fxsgs : Channel(s) are signalled using FXS Groundstart protocol
* fxsks : Channel(s) are signalled using FXS Koolstart protocol

Для FXS модулей используются типы:
* fxols : Channel(s) are signalled using FXO Loopstart protocol
* fxogs : Channel(s) are signalled using FXO Groundstart protocol
* fxoks : Channel(s) are signalled using FXO Koolstart protocol

h3. zaptel.conf

Ниже представлен пример минимальной конфигурации zaptel.conf (для TDM11B):
{noformat}
cat /etc/zaptel.conf

fxoks=1
fxsks=2
loadzone=gr
defaultzone=gr
{noformat}

h3. zapata.conf

Далее необходимо сконфигурировать zaptel каналы в asterisk. Это делается в файле /etc/asterisk/zapata.conf. Пример конфигурации zapata.conf (для карты TDM11B):
{noformat}
cat /etc/asterisk/zapata.conf

[channels]
usecallerid=yes
hidecallerid=no
immediate=no

context=from-phone
group=1
signalling=fxo_ks
echocancel=yes
channel=1

context=from-pstn
group=2
signalling=fxs_ks
callerid="" <2323956>
echocancel=yes
channel=2
{noformat}

h3. Пояснения

Строка "fxsks=1" означает что будет использоваться fxsks сигнализация на первом порту карточки. Если у вас FXO порт, то вы должны использовать FXS сигнализацию для него.

Номер порта можно узнать из лога /var/log/messages после подгрузки модуля wctdm:
{noformat}
root# modprobe wctdm
root# tail /var/log/messages
Jun 29 15:51:48 localhost Freshmaker version: 73
Jun 29 15:51:48 localhost Freshmaker passed register test
Jun 29 15:51:50 localhost Module 0: Installed -- AUTO FXS/DPO
Jun 29 15:51:50 localhost Module 1: Not installed
Jun 29 15:51:50 localhost Module 2: Not installed
Jun 29 15:51:50 localhost Module 3: Installed -- AUTO FXO (FCC mode)
{noformat}
Тут мы видим что на первом порту стоит FXS, а на четвертом FXO. По этим данным записываем в файле zaptel.conf:
{noformat}
fxoks=1
fxsks=4
{noformat}
* *loadzone=gr* и *defaultzone=gr* используются для подгрузки настроек сигнализации для зоны gr (Greece) и использование ее по-умолчанию. В описание зоны входят настройке dialtone, busytone, ringtone ... Все зоны вы можете посмотреть в файле: src/zaptel-/zonedata.c.
* *Usecallerid=yes* и *hidecallerid=no* означает что астериск не будет скрывать callerid (номер звонящего).
* *context=from-phone*
\\
\- это контекст куда будут попадать все звонки с FXS порта. Контекст это список инструкций который выполняет астериск step-by-step когда вы набираете определенный номер. Все контексты определяются в файле /etc/asterisk/extensions.conf.
* *signaling=fxo_ks*
\\
\- устанавливает тип сигнализации. Так как это FXS порт, то сигнализация будет fxo_ks.
* *echocancel=yes*
\\
\- астериск будет пытаться подавлять эхо
* *channel=1*
\\
\- здесь мы указываем номер порта для которого мы определили все настройке описаны выше.
Далее мы описываем настройки FXO порта:
{noformat}
context=from-pstn
signalling=fxs_ks
callerid=""<2323956>
echocancel=yes
channel=2
{noformat}
Тут уже используется сигнализация fxs_ks. Callerid это номер который будет передаваться па телефонной линии как номер звоняшего. Для начала можно не использовать эту опцию.

После всех настроек нужно вызвать команду реконфигурации драйвера zaptel
\\
\- ztcfg. Если коммада молча прекратила выполнение, все в порядке, можно запускать Asterisk (asterisk \-vvvvvgnc или сразу safe_asterisk или asterisk).

h2. Тест


h3. Вызов команд Dial для звонков в город/из города и на аналоговые телефоны

План набора номера конфигурируется в /etc/asterisk/extensions.conf. Ниже представлен план набора (диалплан), позволяющий звонить в город с аналогового телефона, сип клиента, принимать звонки из города, а также звонить с аналогового телефона на сип клиента и наоборот. Также демонстрируются приемы манипуляции с номером (отрезание префикса) и шаблоном номера. Пример диалплана с пояснениями:
{noformat}
cat /etc/asterisk/extensions.conf

[from-pstn]
; Звонки из города по внешним линиям, подключенным к FXO модулям. Все звонки отправляются одновременно на аналоговый телефон
; и SIP устройство
include => cause-codes
exten => s,1,Dial(Zap/1&SIP/sipura_1)
exten => s,n,Hangup()

[from-phone]
; Звонки с аналоговых телефонов направлются в город через 9-ку, с ее отрезанием.
; Звонок на номер 200 отправляется на SIP телефон.
include => cause-codes
exten => _9X.,1,Dial(ZAP/2/${EXTEN:1})
exten => _9X.,n,Hangup()
exten => 200,1,Dial(SIP/sipura_1)
exten => 200,n,Hangup

[from-sip]
; Звонки с SIP клиента.
; 100 - звонит аналоговый телефон
; На 9-ку - выход в город.
include => cause-codes
exten => 100,1,Dial(ZAP/1)
exten => 100,n,Hangup
exten => _9X.,1,Dial(ZAP/2/${EXTEN:1})
exten => _9X.,n,Hangup()

[cause-codes]
; Обработка таймаутов и неправильного номера (для которого нет правил)
exten => i,1,Playback(invalid)
exten => i,n,Hangup()
exten => t,1,Hangup
{noformat}

h3. Настройка SIP подключения

SIP телефоны могут быть "железные" или в виде программы на компьютере. Сначала нужно создать запись для каждого телефона в файле /etc/asterisk/sip.conf:
{noformat}
[sipura_1]
host=dynamic
secret=12pass34
type=friend
context=incoming-sip
disallow=all
allow=all
{noformat}
Потом нужно настроить сип телефон на астериск, для этого прописать в его настройках IP астериска, логин и пароль. В нашем случае login=sipura_1, а пароль=12pass34. Все звонки с этого телефона попадают в контекст incoming-sip.

{noformat}
exten => _9x.,1,Dial(ZAP/2/${EXTEN:1})
exten => _9x.,n,Hangup()
{noformat}
Эти инструкции срабатывают когда набирается номер, который начинается с девятки. Если наберается 91234567, то астериск позвонит через второй порт на номер 1234567. $\{EXTEN:1} указывает на номер без 9. $\{EXTEN} указывает на весь номер.