Настройка TDM410P c asterisk

На тесте подключил китайскую плату TDM410P с четырьмя FXO-портами (красными) в PCI слот выключенного Ubuntu сервера.
Для удобства в Ubuntu на root пользователя можно переключится командой:

sudo -i

Включил сервер, выполнил команду которая отображает PCI устройства и шины:

lspci -v

В списке увидел установленную плату:

05:00.0 Ethernet controller: Digium, Inc. Wildcard TDM410 4-port analog card (rev 11)
Subsystem: Digium, Inc. Wildcard TDM410 4-port analog card
Physical Slot: 1
Flags: bus master, fast Back2Back, medium devsel, latency 64, IRQ 16
I/O ports at 1000 [size=256]
Memory at b1900000 (32-bit, non-prefetchable) [size=1K]
Expansion ROM at b1920000 [disabled] [size=128K]
Capabilities:
Kernel driver in use: wctdm24xxp
Kernel modules: wctdm24xxp

Зарегистрируем плату (параметры автоматически пропишутся в конфигурации /etc/dahdi/ и /etc/asterisk/dahdi-channels.conf):

dahdi_span_assignments -v auto
dahdi_genconf -v

Теперь плату можно увидеть командой:

dahdi_scan
dahdi_cfg -vvvv
lsdahdi

Если возникают ошибки при команде dahdi_cfg, то возможно не установлен dahdi, скомпилируем его например как я писал в статье указанной по ссылке ниже, тем более если китайская плата не имеет аппаратного шумоподавления то dahdi по любому придется собирать с Oslec.
Установка эхоподавителя Oslec и DAHDI

В файле /etc/dahdi/modules у меня указаны модули (последний wctdm24xxp как раз предназначен для TDM410P):

dahdi
dahdi_dummy
dahdi_transcode
wctdm24xxp

Подгрузить его можно командой:

modprobe wctdm24xxp

В файле /etc/dahdi/system.conf изменим зону на свою (она может сбросится после выполнения команды dahdi_genconf):

loadzone=ru
defaultzone=ru

В файле /etc/asterisk/modules.conf, в блоке [modules] должна быть строка для автозагрузки модуля chan_dahdi:

load => chan_dahdi.so

Из консоли asterisk его также можно загрузить, но он будет активен до перезапуска asterisk (первая команда открывает консоль asterisk, последняя выходит из него):

asterisk -rvv
module load chan_dahdi
quit

Перезапустить dahdi можно из консоли asterisk командой:

dahdi restart

Проверить статус можно командой (в списке должна быть Wildcard TDM410P):

dahdi show status

Я подключил к 1 порту платы провод с телефонным номером городской аналоговой линии (нумерация портов идет сверху вниз, порт что ближе к PCI слоту четвертый).
Теперь пропишем его в конце файла users.conf для первого порта (канала):

[trunk_1]
group = 1
context = DID_trunk_1
busydetect = yes
busycount = 3
busypattern = 500,500
ringtimeout = 8000
progzone = ru
usecallerid = yes
cidstart = ring
cidsignalling = bell
flash = 750
rxflash = 1250
callerid = asreceived
dahdichan = 1
trunkstyle = analog
allow = all
group = 1
pulsedial=yes
dialtone_detect=yes
signalling = fxs_ks
channel = 1

Замечу что без параметров pulsedial=yes, dialtone_detect=yes у меня не работали исходящие вызовы, а был слышен беспрерывный гудок линии (телефонные линии Укртелеком).

Добавим в конце файла /etc/asterisk/chan_dahdi.conf

context=DID_trunk_1
signalling=fxs_ks
group=1
channel => 1

Перезапустим asterisk чтобы применить изменения:

service asterisk restart

Подключимся к его консоли и посмотрим активен ли добавленный канал:

asterisk -vvr
dahdi show channels
dahdi show channel 1

Посмотреть уровень громкости и трафик на канале можно командой:

dahdi_monitor 1 -v

В файле extensions.conf укажем куда отправлять входящие звонки (в моём случае на IP телефон с номером 6001):

[DID_trunk_1]
exten => s,1,DIAL(SIP/6001,20)
exten => s,2,Hangup()

Также добавим к диалплану в котором настроены IP телефоны, строки с шаблонами номеров телефонов куда можно звонить (в первой строке например конкретно указан номер 21545, а во второй шаблон под который попадают все номера из пяти цифр начинающиеся на семерку, буква W означает паузу перед набором):

exten => _21545,1,Dial(DAHDI/1/W${EXTEN})
exten => _7XXXX,1,Dial(DAHDI/1/W${EXTEN})

Если необходимо дождаться паузы после набора 0 перед набором остальной части номера:

exten => _022XXXXXX,1,Dial(DAHDI/1/W0W${EXTEN:1},60)

Перезапустить asterisk можно командой:

service asterisk restart

Из консоли asterisk можно по отдельности подгружать конфиги, например sip и extensions:

asterisk -rvv
sip reload
dialplan reload
quit

Добавить комментарий