Настройка DAHDI - chan_dahdi
Драйвер DAHDI отвечает за работу плат интерфейсов телефонии устанавливаемых непосредственно в сервер или работающих по TDM over IP, от Digium и других производителей: Openvox, Sangoma, Parabel, Cronyx и др..
DAHDI Linux и DAHDI Tools
Dahdi linux драйвер с открытым исходным кодом, для взаимодействия Asterisk с телефонным оборудованием.
Dahdi Tools набор утилит для управления и мониторинга DAHDI устройств.
Скачать DAHDI
Исходный конфигурационный файл chan_dahdi.conf
Пример файла chan_dahdi.conf для интерфейса ISDN PRI E1.
настройка 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 отобразит состояние установленных плат.
Команда 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
DAHDI Tools
dahdi_tool