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

Администратор,

Описание


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 и X110M для карты TDM400P

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


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:

 explorer ~ # modprobe zaptel
 explorer ~ # modprobe wctdm

После загрузки модулей файл /var/log/messages должен содержать строки (для карты TDM22B):

 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)


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


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

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


Минимальные настройки - это тип сигналинга (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
zaptel.conf

Ниже представлен пример минимальной конфигурации zaptel.conf (для TDM411B):

 cat /etc/zaptel.conf

 fxoks=1
 fxsks=2
 loadzone=gr
 defaultzone=gr

zapata.conf


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

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

Пояснения


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

Номер порта можно узнать из лога /var/log/messages после подгрузки модуля wctdm:

 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)

Тут мы видим что на первом порту стоит FXS, а на четвертом FXO. По этим данным записываем в файле zaptel.conf:

 fxoks=1
 fxsks=4
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 порта:
 context=from-pstn
 signalling=fxs_ks
 callerid=""<2323956>
 echocancel=yes
 channel=2

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

Тест


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

 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


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


SIP телефоны могут быть "железные" или в виде программы на компьютере. Сначала нужно создать запись для каждого телефона в файле /etc/asterisk/sip.conf:

 [sipura_1]
 host=dynamic
 secret=12pass34
 type=friend
 context=incoming-sip
 disallow=all
 allow=all

Потом нужно настроить сип телефон на астериск, для этого прописать в его настройках IP астериска, логин и пароль. В нашем случае login=sipura_1, а пароль=12pass34. Все звонки с этого телефона попадают в контекст incoming-sip.

 exten => _9x.,1,Dial(ZAP/2/${EXTEN:1})
 exten => _9x.,n,Hangup()

Эти инструкции срабатывают когда набирается номер, который начинается с девятки. Если наберается 91234567, то астериск позвонит через второй порт на номер 1234567. ${EXTEN:1} указывает на номер без 9. ${EXTEN} указывает на весь номер.