Настройка DAHDI - chan_dahdi

Драйвер DAHDI отвечает за работу плат интерфейсов телефонии устанавливаемых непосредственно в сервер или работающих по TDM over IP, от Digium и других производителей: Openvox, Sangoma, Parabel, Cronyx и др..

DAHDI Linux и DAHDI Tools

Dahdi linux драйвер с открытым исходным кодом, для взаимодействия Asterisk с телефонным оборудованием.
Dahdi Tools набор утилит для управления и мониторинга DAHDI устройств.

Скачать DAHDI

Скачать Dahdi-Linux-Complete

Исходный конфигурационный файл 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

dahdi show channels

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

DAHDI Tools

dahdi_tool

modules

модули dahdi

модули dahdi

# 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

  • asterisk/cf/chan_dahdi.txt
  • Последние изменения: 2018/03/12