Установка и настройка аналоговой платы 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} указывает на весь номер.