Работа с аналоговой платой TDM410 от компании Digium
В данной статье я хочу поделиться своим опытом работы с аналоговой платой TDM410 от компании Digium. В начале статьи рассмотрим саму плату, компоненты, из которых она может состоять и цели, для которых она предназначена. После чего, на примере, увидим как можно определить данную интерфейсную плату в системе и сконфигурировать ее на работу с Asterisk IP-PBX.
пришла на смену плате TDM400P. В отличии от предыдущей платы Digium TDM400P, новая плата допускает установку модуля аппаратной эхокомпенсации VPMADT032, что снижает нагрузку на сервер телефонии и повышает качество звука по сравнению с программными алгоритмами. Для работы модулей FXS требуется свободный 12 В (molex) разъём от блока питания сервера, потому как FXS-порт должен обеспечивать тональный сигнал, и напряжение сигнала звонка, предупреждающего о входящем вызове. FXO-порт не генерирует тонального сигнала, он его принимает, поэтому для работы FXO модулей дополнительное напряжение не требуется.
На рисунке ниже представлена плата TDM410 с двумя S110M (FXS) и двумя X100M (FXO) модулями. Под номерами 1 и 2 модули X100M красного цвета, под номерами 3 и 4 модули S110M зеленого цвета и соответствующие им на плате порты. Также на рисунке можно увидеть разъем molex для подключения к блоку питания сервера и модуль аппаратной эхокомпенсации VPMADT032, который позволяет на аппаратном уровне подавлять эхо на всех каналах платы.
Внимание! Подключение FXS-порта (зеленый модуль) к линии телефонной сети общего пользования (далее ТфОП) может привести к выходу из строя модуля и платы из-за подачи напряжения в систему, которая предназначена для его производства, а не потребления!
Расшифровка обозначений моделей плат на базе TDM410: TDM4XYZ, где X определяет количество модулей S110M (FXS), Y определяет количество модулей X100M (FXO). Суффикс 'B' обозначает что продукт является набором плат и модулей, а 'E' — что в этот набор включен еще и модуль эхоподавления VPMADT032.
Если в выводе плата присутствует — отлично, можно двигаться дальше. Первое, что нужно сделать — сконфигурировать DAHDI для связи с платой, для этого открываем конфигурационный файл /etc/dahdi/system.conf. Файл должен содержать, в нашем случае, нечто следующее:
Данная конфигурация определяет два FXO порта под номерами 3 и 4, использующими протокол обмена сигналами FXS. Также в первой строке, кроме указания используемого протокола обмена сигналами (FXO или FXS), для каналов 3 и 4 задается один из следующих типов сигнализации: Loop start (ls), Ground start (gs) или Kewlstart (ks). Если вы не знаете, сигнализация какого типа используется в вашей телефонной линии — выбирайте ks, скорее всего вам не придется иметь дело с сигнализациями другого типа. Параметр loadzone задает набор сигналов используемых для канала (всевозможные звуки, воспроизводимые телефонной системой в определенной стране: тональный сигнал, сигналы дозвона, сигнал «занято» и т. д.). Если для канала зона не задана, используется параметр зоны по умолчанию defaultzone. Параметр echocanceller отвечает за эхоподавление на заданных каналах. Сохранив изменения — смотрим, как dahdi определил плату:
Видим, что на данной плате (плате, которая оказалась у меня на руках) установлено 2 FXO модуля на 3 и 4 портах. Теперь сконфигурируем Asterisk для связи с DAHDI, для этого необходимо отредактировать файл /etc/asterisk/chan_dahdi.conf. Приводим его к следующему виду:
В данном файле нас интересует раздел [channels], в нем определяется метод обмена сигналами для аппаратных каналов и их параметры. Если параметр задан, он наследуется далее по всему файлу. Для определения канала используется синтаксис channel =>. Каждое описание канала наследует все параметры, которые определены в файле выше. Если для разных каналов требуется задать различные параметры, они должны задаваться перед описанием channel =>. После того, как канал сконфигурирован, можно попробовать подключить плату к телефонной линии и посмотреть на вывод команды lsdahdi, при наличии сигнала на FXO порту, вывод будет походить на следующий:
Определим в файле /etc/asterisk/sip.conf хотя бы одного sip-абонента, для тестирования связи:
А так же добавим в файл /etc/asterisk/extensions.conf контексты для входящих и исходящих вызовов через сконфигурированный нами канал:
Теперь, если мы позвоним на городской номер, Asterisk «поднимет трубку», проиграет файл «demo-abouttotry», затем «повесит трубку». В контексте «to=pstn» шаблоном _X. определены все исходящие вызовы через 4-ый канал нашей платы.
Думаю, что решения на базе Asterisk и аналоговой платы TDM410 — вполне пригодны для дома или небольшого офиса. Это поможет превратить обычный телефонный аппарат, подключенный к местной телефонной сети, в устройство, функционал которого ограничен только вашей фантазией!
Описание платы
Digium Wildcard TDM410 — это полуразмерная PCI 2.2-совместимая плата для аналоговой телефонии, представляющая собой платформу для одного, двух, трех или четырех модулей S110M (FXS) и X100M (FXO), которые можно сочетать в любом соотношении. При помощи модулей X100M (FXO) плату можно подключить к телефонной сети общего пользования (далее ТфОП), а при помощи модулей S110M (FXS) к аналоговым телефонам. Плата TDM410пришла на смену плате TDM400P. В отличии от предыдущей платы Digium TDM400P, новая плата допускает установку модуля аппаратной эхокомпенсации VPMADT032, что снижает нагрузку на сервер телефонии и повышает качество звука по сравнению с программными алгоритмами. Для работы модулей FXS требуется свободный 12 В (molex) разъём от блока питания сервера, потому как FXS-порт должен обеспечивать тональный сигнал, и напряжение сигнала звонка, предупреждающего о входящем вызове. FXO-порт не генерирует тонального сигнала, он его принимает, поэтому для работы FXO модулей дополнительное напряжение не требуется.
На рисунке ниже представлена плата TDM410 с двумя S110M (FXS) и двумя X100M (FXO) модулями. Под номерами 1 и 2 модули X100M красного цвета, под номерами 3 и 4 модули S110M зеленого цвета и соответствующие им на плате порты. Также на рисунке можно увидеть разъем molex для подключения к блоку питания сервера и модуль аппаратной эхокомпенсации VPMADT032, который позволяет на аппаратном уровне подавлять эхо на всех каналах платы.
Внимание! Подключение FXS-порта (зеленый модуль) к линии телефонной сети общего пользования (далее ТфОП) может привести к выходу из строя модуля и платы из-за подачи напряжения в систему, которая предназначена для его производства, а не потребления!
Расшифровка обозначений моделей плат на базе TDM410: TDM4XYZ, где X определяет количество модулей S110M (FXS), Y определяет количество модулей X100M (FXO). Суффикс 'B' обозначает что продукт является набором плат и модулей, а 'E' — что в этот набор включен еще и модуль эхоподавления VPMADT032.
Для работы нам потребуется следующее:
- Установленный сервер Asterisk версии 1.4.21 или выше + драйверы телефонии DAHDI + DAHDI Tools
- Плата Digium Wildcard TDM410 или аналог хотя бы с одним X100M (FXO) модулем
- Базовые знания о конфигурировании каналов и диалплана в Asterisk IP-PBX
Конфигурирование DAHDI и Asterisk
Допустим все из списка требований выше у нас есть, запущено и готово к работе. Для начала посмотрим, видит ли система нашу плату:root@asterisk:~# lspci -v
03:00.0 Ethernet controller: Digium, Inc. Wildcard TDM410 4-port analog card (rev 11)
Subsystem: Digium, Inc. Wildcard TDM410 4-port analog card
Flags: bus master, medium devsel, latency 64, IRQ 23
I/O ports at e800 [size=256]
Memory at febffc00 (32-bit, non-prefetchable) [size=1K]
Expansion ROM at febc0000 [disabled] [size=128K]
Capabilities: [c0] Power Management version 2
Kernel driver in use: wctdm24xxp
Kernel modules: wctdm24xxp
Если в выводе плата присутствует — отлично, можно двигаться дальше. Первое, что нужно сделать — сконфигурировать DAHDI для связи с платой, для этого открываем конфигурационный файл /etc/dahdi/system.conf. Файл должен содержать, в нашем случае, нечто следующее:
fxsks = 3,4
echocanceller = mg2,1-4
loadzone = ru
defaultzone = ru
Данная конфигурация определяет два FXO порта под номерами 3 и 4, использующими протокол обмена сигналами FXS. Также в первой строке, кроме указания используемого протокола обмена сигналами (FXO или FXS), для каналов 3 и 4 задается один из следующих типов сигнализации: Loop start (ls), Ground start (gs) или Kewlstart (ks). Если вы не знаете, сигнализация какого типа используется в вашей телефонной линии — выбирайте ks, скорее всего вам не придется иметь дело с сигнализациями другого типа. Параметр loadzone задает набор сигналов используемых для канала (всевозможные звуки, воспроизводимые телефонной системой в определенной стране: тональный сигнал, сигналы дозвона, сигнал «занято» и т. д.). Если для канала зона не задана, используется параметр зоны по умолчанию defaultzone. Параметр echocanceller отвечает за эхоподавление на заданных каналах. Сохранив изменения — смотрим, как dahdi определил плату:
root@asterisk:~# dahdi_cfg -vvvvv
DAHDI Tools Version - 2.2.1
DAHDI Version: 2.2.1
Echo Canceller(s): MG2
Configuration
======================
Channel map:
Channel 03: FXS Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 03)
Channel 04: FXS Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 04)
2 channels to configure.
Setting echocan for channel 3 to mg2
Setting echocan for channel 4 to mg2
Видим, что на данной плате (плате, которая оказалась у меня на руках) установлено 2 FXO модуля на 3 и 4 портах. Теперь сконфигурируем Asterisk для связи с DAHDI, для этого необходимо отредактировать файл /etc/asterisk/chan_dahdi.conf. Приводим его к следующему виду:
[trunkgroups]
; Описание магистральных групп
[channels]
; Аппаратные каналы
usecallerid=yes
hidecallerid=no ;определяет, что идентификатор вызывающего абонента не будет скрыт для исходящих вызовов
callwaiting=yes ;отложенный вызов деактивирован для FXO-линии
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes ;активация вызова с подключением третьего абонента
transfer=yes ;разрешение переадресации вызова
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=yes ;активация эхокомпенсатора Asterisk
echotraining=yes ;обучение эхоподавления (для ускорения процесса изучения эха)
rxgain=0.0
txgain=0.0
signalling=fxs_ks ;Для канала FXO используется протокол обмена сигналами FXS
group=0
context=from-pstn ;Входящие вызовы направляются в контекст [from-pstn], описанный в extensions.conf
channel => 4 ; ТфОП подключается к 4-му fxo порту
В данном файле нас интересует раздел [channels], в нем определяется метод обмена сигналами для аппаратных каналов и их параметры. Если параметр задан, он наследуется далее по всему файлу. Для определения канала используется синтаксис channel =>. Каждое описание канала наследует все параметры, которые определены в файле выше. Если для разных каналов требуется задать различные параметры, они должны задаваться перед описанием channel =>. После того, как канал сконфигурирован, можно попробовать подключить плату к телефонной линии и посмотреть на вывод команды lsdahdi, при наличии сигнала на FXO порту, вывод будет походить на следующий:
root@asterisk:~# lsdahdi
### Span 1: WCTDM/0 "Wildcard TDM410P Board 1" (MASTER)
1 FXO FXSKS
2 FXO FXSKS
3 FXO FXSKS (SWEC: MG2) RED
4 FXO FXSKS (In use) (SWEC: MG2)
### Span 2: DAHDI_DUMMY/1 "DAHDI_DUMMY/1 (source: HRtimer) 1"
Определим в файле /etc/asterisk/sip.conf хотя бы одного sip-абонента, для тестирования связи:
[101]
username=101
secret=101
callerid="User 1" <101>
type=friend
context=local_calls
host=dynamic
nat=yes
А так же добавим в файл /etc/asterisk/extensions.conf контексты для входящих и исходящих вызовов через сконфигурированный нами канал:
[local_calls]
include => default
include => to-pstn
exten => 101,1,Dial(SIP/102) ;для звонков на внутренние номера
exten => 102,1,Dial(SIP/101)
[from-pstn] ; контекст, указаный в /etc/asterisk/chan_dahdi.conf
exten => s,1,Answer()
exten => s,n,Playback(demo-abouttotry)
exten => s,n,Hangup
[to-pstn]
exten => _X.,1,Dial(DAHDI/4/${EXTEN})
Теперь, если мы позвоним на городской номер, Asterisk «поднимет трубку», проиграет файл «demo-abouttotry», затем «повесит трубку». В контексте «to=pstn» шаблоном _X. определены все исходящие вызовы через 4-ый канал нашей платы.
Думаю, что решения на базе Asterisk и аналоговой платы TDM410 — вполне пригодны для дома или небольшого офиса. Это поможет превратить обычный телефонный аппарат, подключенный к местной телефонной сети, в устройство, функционал которого ограничен только вашей фантазией!
Спасибо за внимание!
1 комментарий
Разве FXO не под номерами 1 и 2?