Настройка DAHDI - chan_dahdi
Драйвер DAHDI отвечает за работу плат интерфейсов телефонии устанавливаемых непосредственно в сервер или работающих по TDM over IP, от Digium и других производителей: Openvox, Sangoma, Parabel, Cronyx и др..
Dahdi linux драйвер с открытым исходным кодом, для взаимодействия Asterisk с телефонным оборудованием.
Dahdi Tools набор утилит для управления и мониторинга DAHDI устройств.
Скачать DAHDI
настройка E1 - /etc/dahdi/system.conf
span => <Number>,<Timing>,<Line BuildOut>,<Framing>,<Coding>[,Yellow]
Драйвер DAHDI работает с синхронным оборудованием, т.е. каждая следующая порция данных в следующий такт должна быть доступна. Если Периферийных устройств несколько - они должны работать синхронно, по одним часам.
В синхронной сети должно выполняться одно простое правило - master должен быть соединен с slave. Если это правило нарушается - будут потерянные(skip) или повторенные (slip) кадры.
Предположим, вы получаете от АТС поток E1, т.е. АТС - master, заводите его в Asterisk/DAHDI, и у вас есть внутренний коммутатор.
В такой схеме вы должны настроить порт 1 платы потока как slave {span = 1,1,0,ccs,hdb3,crc4} , он смотрит на АТС.
Порт 2 настроить как master {span = 2,0,0,ccs,hdb3,crc4}, порт 2 будет получать синхронизацию от порта 1, т.к. это одно устройство.
Внутренний коммутатор должен быть в режиме slave. DAHDI будет работать с устройствами по часам АТС
Timing:
This determines how timing is handled by the card.
* 0 - Порт является источником синхронизации
* 1 - Получает синхронизацию с удаленной станции
* 2 - Receives secondary backup timing from remote end
* 3 - Receives tertiary backup timing from remote end
* 4 - Receives quaternary backup timing from remote en
span = 1,1,0,ccs,hdb3,crc4
bchan = 1-15,17-31
dchan = 16
span = 2,0,0,ccs,hdb3,crc4
bchan = 32-46,48-62
dchan = 47
При разговоре слышно легкое пощелкивание, факсы не идут или проходят с ошибками.
У вас неправильно настроена синхронизация.
Настройте синхронизацию как описано выше.
ISDN PRI - /etc/asterisk/chan_dahdi.conf
chan_dahdi.conf - определяет параметры каналов TDM интерфейса DAHDI. Каналы должны быть определены в этом файле, чтобы Asterisk мог их использовать.
chan_dahdi.conf состоит из секций, а секции в свою очередь из ключевых слов и их значений. Значения могут быть булевы (да/нет), или содержать специфичные для данного ключевого слова значения. Секции используют формат наследования свойств объекта.
context - привязывает канал к контексту в плане набора (диалплане), тем самым определяя действия при инициации вызова. :
context => default
channel - назначает канал или несколько каналов, Каналы могут быть определены индивидуально, через запятую, или диапазоном через дефис.
channel => 16
channel => 2,3
channel => 1-15, 17-31
group - назначает каналы в группу. Для исходящей связи будет выбираться первый свободный канал. Для назначения в несколько групп, перечислите значения через запятую.
Чтобы не назначать в группу - оставьте значение пустым.
group = 1
group = 2,3
group =
switchtype - устанавливает тип сигнализации для PRI.
national: National ISDN type2 (Американский)
ni1: National ISDN type 1
dms100: Nortel DMS100
4ess: AT&T 4ESS
5ess: Lucent 5ESS
euroisdn: EuroISDN
qsig: Протокол с минимальной функциональностью, используемый для построения «сети» между двумя или более АТС от различных производителей.
switchtype => euroisdn
signalling - Параметр устанавливает тип соединения и/или сигнализации. Эти параметры должны соответствовать тому, что описано в конфигурации драйвера DAHDI (/etc/dahdi/system.conf). Значение этого параметра частично зависит от типа используемой Вами интерфейсной карты. Сервер Asterisk не запустится: если определение типа соединения для канала неправильное или нерабочее, если значение не совпадает с тем, что описано в конфигурации Zaptel драйвера или, если устройство не установлено или сконфигурировано не должным образом. Во многих случаях, правильное значение этого параметра - это одно из этих четырех значений: fxs_ks, fxo_ks, pri_cpe or pri_net. Этот параметр не имеет значения по умолчанию, Вы обязательно должны определить его значения перед описанием какого-либо канала.
Полный список типов соединений и сигнализаций
fxo_ks: Используется для сигнализации FXS устройств.
fxs_ks: Противоположная сторона fxo_ks. Для сигнализации FXO устройств
pri_cpe: Сигнализация PRI. Клиентская сторона оборудования (user)
pri_net: Сигнализация PRI, network side.
Аналоговые интерфейсы могут стать источником путаницы в Asterisk.
Для FXS интерфейсов используется fxo_ks.
Для FXO - fxs_ks.
signalling => fxs_ks
priindication: Этот параметр устанавливает то, как сервер Asterisk должен сигнализировать состояние Busy() и Congestion() для удаленного коммутатора или пользователя. По умолчанию: inband. Доступные значения следующие:
inband: Сервер Asterisk будет сам проигрывать тональные сигналы без перевода канала в отвеченное состояние; Не доступно для всех соединений PRI/BRI.
outofband: Сервер Asterisk будет разрывать связь с информационным кодом busy/congestion, при этом уже сам телефонный коммутатор будет проигрывать тональные сигналы пользователю. Busy(), в этом случае, это то же самое, что установка: PRI_CAUSE=17 и выполнение команды: Hangup().
pridialplan - устанавливает тип плана набора для ISDN PRI. Игнорируется в большинстве случаев. Может понадобиться для корректной работы CallerID Доступные значения: unknown, local, private, national, international.
pridialplan => national
overlapdial: если - «yes», то набранные цифры будут сразу отправляться в поток.
По умолчанию: no. (enblock)
overlapdial => yes
Состояние аналоговых вызовов
В этой секции описываются директивы сигнализирующие о состоянии вызовов аналоговых интерфейсов.
busydetect - детектирование сигнала занято для FXS, FXO или T1 (E&M, Wink, Feature Group D). Значение 'yes' или 'no'.
callprogress - контроллировать состояние вызова (КПВ, занято или подняли трубку). Значение 'yes' или 'no'.
busydetect => yes
callprogress => yes
Функции CallerID
usecallerid - разрешить или запретить передачу CallerID (yes/no) По умолчанию 'yes'.
hidecallerid - скрывать исходящий CallerID. По умолчанию 'no'.
calleridcallwaiting - получать CallerID во время вызова.
usecallerid => yes
hidecallerid => no
callerid - устанавливает CallerID для данного канала. Принимает данные правильного формата «имя» и <номер>. Возможное значение 'asreceived' для передачи полученных значений.
callerid => "Oleg" <8123216111>
callerid =>
callerid => asreceived
Call feature options
Эти параметры включают или отключают дополнительные опции для FXS (FXO) каналов, такие как конференция и пере-адресация и т.д.. Значения могут быть только (yes/no)
threewaycalling - разрешает или запрещает three-way calling для канала.
cancallforward - разрешает или запрещает функцию «следуй за мной».
transfer - разрешает или запрещает функцию флэш для канала (для включения threewaycallingдолжно быть 'yes')
immediate - Если этот режим установлен 'yes', входящий вызов немедленно направляется на расширение 's' без тона набора и чтения цифр.
ADSI - Включает или выключает поддержку ADSI. ADSI
спецификации системы, аналогичной Caller ID для передачи закодированной
информация для аналоговых телефонов. Это позволяет создавать интерактивные
меню и обеспечивает доступ к таким услугам,
как голосовая почта, посредством текстового интерфейса.
threewaycalling = yes
transfer = yes
immediate = no
adsi = yes
cancallforward = yes
Параметры качества аудио
echocancelвключить эхо-подавление.
По умолчанию всегда включен.
echocancelwhenbridgedВключение или выключает эхо-подавление в режиме моста между TDM интерфейсами.В принципе в этом режиме не требуется эхо-подавления, но иногда это позволяет улучшить качество связи. Значение (yes / no).
rxgain - регулировка усиления приемника.
txgain - регулировка усиления передатчика.
echocancel = yes
echocancelwhenbridged = no
rxgain = 20%
Call Logging Options
Эти параметры влияют на записи Call Detail Records Asterisk.
amaflags: Устанавливает AMA флаги, влияющие на классификацию записей
в Call Detail Records. Принимает следующие значения:
billing: маркирует для биллинга
documentation: маркирует для документирования.
omit: не записывать информацию о звонке.
default: по умолчанию.
accountcode: Устанавливает код счета за звонки.
Код в счете может иметь любое буквенное или цифровое значение.
accountcode = oleg145
amaflags = billing
Asterisk -vvvvvv команды CLI для тестирования DAHDI
dahdi show status
localhost*CLI> dahdi show status
Description Alarms IRQ bpviol CRC Fra Codi Options LBO
Wildcard TE121 Card 0 OK 2 -1 -1 CCS HDB3 0 db (CSU)/0-133 feet (DSX-1)
Команда dahdi show status отобразит состояние установленных плат.
localhost*CLI> dahdi show channels
Chan Extension Context Language MOH Interpret Blocked State
pseudo default default In Service
1 from-avaya en default In Service
2 from-avaya en default In Service
3 from-avaya en default In Service
4 from-avaya en default In Service
5 from-avaya en default In Service
6 from-avaya en default In Service
7 from-avaya en default In Service
8 from-avaya en default In Service
9 from-avaya en default In Service
10 from-avaya en default In Service
11 from-avaya en default In Service
12 from-avaya en default In Service
13 from-avaya en default In Service
14 from-avaya en default In Service
15 from-avaya en default In Service
17 from-avaya en default In Service
18 from-avaya en default In Service
19 from-avaya en default In Service
20 from-avaya en default In Service
21 from-avaya en default In Service
22 from-avaya en default In Service
23 from-avaya en default In Service
24 from-avaya en default In Service
25 from-avaya en default In Service
26 from-avaya en default In Service
27 from-avaya en default In Service
28 from-avaya en default In Service
29 from-avaya en default In Service
30 from-avaya en default In Service
31 from-avaya en default In Service
Команда dahdi show channels выведет список сконфигурированных каналов «channel ⇒ 1-15,17-31».
pri show spans
localhost*CLI> pri show spans
PRI span 1/0: Up, Active
Команда pri show spans выводит информацию о ISDN PRI ( в частности статус layer2 - Up или Down)
Linux команды для тестирования DAHDI
ls
[root@localhost ~]# ls /dev/dahdi/
1 11 13 15 17 19 20 22 24 26 28 3 31 5 7 9 ctl timer
10 12 14 16 18 2 21 23 25 27 29 30 4 6 8 channel pseudo transcode
lspci
[root@localhost ~]# lspci | grep Digium
02:08.0 Ethernet controller: Digium, Inc. Wildcard TE121 single-span T1/E1/J1 card (PCI-Express) (rev 11)
[root@localhost ~]# lspci | grep Ethernet
02:08.0 Ethernet controller: Digium, Inc. Wildcard TE121 single-span T1/E1/J1 card (PCI-Express) (rev 11)
dmesg
на примере Digium te120b
[root@localhost ~]# dmesg | grep wcte12xp
wcte12xp 0000:02:08.0: Setting up global serial parameters for E1
wcte12xp 0000:02:08.0: Found a Wildcard TE121
wcte12xp 0000:02:08.0: Booting VPMADT032
wcte12xp 0000:02:08.0: VPM present and operational (Firmware version 125)
wcte12xp 0000:02:08.0: Span configured for CCS/HDB3
cat /proc/dahdi/span_number
[root@localhost ~]# cat /proc/dahdi/1
Span 1: WCT1/0 "Wildcard TE121 Card 0" (MASTER) HDB3/CCS
BPV count: -1
CRC4 error count: -1
E-bit error count: -1
FAS error count: -1
IRQ misses: 2
1 WCT1/0/1 Clear (In use) (EC: VPMADT032 - INACTIVE)
2 WCT1/0/2 Clear (In use) (EC: VPMADT032 - INACTIVE)
3 WCT1/0/3 Clear (In use) (EC: VPMADT032 - INACTIVE)
4 WCT1/0/4 Clear (In use) (EC: VPMADT032 - INACTIVE)
5 WCT1/0/5 Clear (In use) (EC: VPMADT032 - INACTIVE)
6 WCT1/0/6 Clear (In use) (EC: VPMADT032 - INACTIVE)
7 WCT1/0/7 Clear (In use) (EC: VPMADT032 - INACTIVE)
8 WCT1/0/8 Clear (In use) (EC: VPMADT032 - INACTIVE)
9 WCT1/0/9 Clear (In use) (EC: VPMADT032 - INACTIVE)
10 WCT1/0/10 Clear (In use) (EC: VPMADT032 - INACTIVE)
11 WCT1/0/11 Clear (In use) (EC: VPMADT032 - INACTIVE)
12 WCT1/0/12 Clear (In use) (EC: VPMADT032 - INACTIVE)
13 WCT1/0/13 Clear (In use) (EC: VPMADT032 - INACTIVE)
14 WCT1/0/14 Clear (In use) (EC: VPMADT032 - INACTIVE)
15 WCT1/0/15 Clear (In use) (EC: VPMADT032 - INACTIVE)
16 WCT1/0/16 HDLCFCS (In use) (EC: VPMADT032 - INACTIVE)
17 WCT1/0/17 Clear (In use) (EC: VPMADT032 - INACTIVE)
18 WCT1/0/18 Clear (In use) (EC: VPMADT032 - INACTIVE)
19 WCT1/0/19 Clear (In use) (EC: VPMADT032 - INACTIVE)
20 WCT1/0/20 Clear (In use) (EC: VPMADT032 - INACTIVE)
21 WCT1/0/21 Clear (In use) (EC: VPMADT032 - INACTIVE)
22 WCT1/0/22 Clear (In use) (EC: VPMADT032 - INACTIVE)
23 WCT1/0/23 Clear (In use) (EC: VPMADT032 - INACTIVE)
24 WCT1/0/24 Clear (In use) (EC: VPMADT032 - INACTIVE)
25 WCT1/0/25 Clear (In use) (EC: VPMADT032 - INACTIVE)
26 WCT1/0/26 Clear (In use) (EC: VPMADT032 - INACTIVE)
27 WCT1/0/27 Clear (In use) (EC: VPMADT032 - INACTIVE)
28 WCT1/0/28 Clear (In use) (EC: VPMADT032 - INACTIVE)
29 WCT1/0/29 Clear (In use) (EC: VPMADT032 - INACTIVE)
30 WCT1/0/30 Clear (In use) (EC: VPMADT032 - INACTIVE)
31 WCT1/0/31 Clear (In use) (EC: VPMADT032 - INACTIVE)
проверка прерываний - interrupts
Every 1.0s: cat /proc/interrupts Sat Aug 16 15:21:34 2014
CPU0 CPU1
0: 298549499 30187 IO-APIC-edge timer
1: 61 4 IO-APIC-edge i8042
8: 1 2 IO-APIC-edge rtc
9: 0 0 IO-APIC-level acpi
12: 1614 57 IO-APIC-edge i8042
14: 41268991 24 IO-APIC-edge ide0
50: 126 116383116 PCI-MSI eth0
58: 168 0 PCI-MSI hda_intel
169: 8391 298523206 IO-APIC-level uhci_hcd:usb5, wcte12xp0
217: 0 0 IO-APIC-level uhci_hcd:usb4
225: 0 0 IO-APIC-level ehci_hcd:usb1, uhci_hcd:usb2
233: 2119 3653665 IO-APIC-level uhci_hcd:usb3, ata_piix
NMI: 0 0
LOC: 298575253 298575261
ERR: 0
MIS: 0
modules
# Contains the list of modules to be loaded / unloaded by /etc/init.d/dahdi.
#
# NOTE: Please add/edit /etc/modprobe.d/dahdi or /etc/modprobe.conf if you
# would like to add any module parameters.
#
# Format of this file: list of modules, each in its own line.
# Anything after a '#' is ignore, likewise trailing and leading
# whitespaces and empty lines.
# Digium TE205P/TE207P/TE210P/TE212P: PCI dual-port T1/E1/J1
# Digium TE405P/TE407P/TE410P/TE412P: PCI quad-port T1/E1/J1
# Digium TE220: PCI-Express dual-port T1/E1/J1
# Digium TE420: PCI-Express quad-port T1/E1/J1
wct4xxp
# Digium TE120P: PCI single-port T1/E1/J1
# Digium TE121: PCI-Express single-port T1/E1/J1
# Digium TE122: PCI single-port T1/E1/J1
wcte12xp
# Digium T100P: PCI single-port T1
# Digium E100P: PCI single-port E1
wct1xxp
# Digium TE110P: PCI single-port T1/E1/J1
wcte11xp
# Digium TDM2400P/AEX2400: up to 24 analog ports
# Digium TDM800P/AEX800: up to 8 analog ports
# Digium TDM410P/AEX410: up to 4 analog ports
wctdm24xxp
# X100P - Single port FXO interface
# X101P - Single port FXO interface
wcfxo
# Digium TDM400P: up to 4 analog ports
Asterisk Dialplan - extensions.conf
Файлы конфигурации Asterisk
Asterisk: настройка и установка