Digium E1ボードをFreeSWITCHに接続する

Digium TE12x

この記事では、シングルポートE1 Digium TE121Pカードの例を使用して、CentOSオペレーティングシステム上のFreeSWITCHに接続する例を検討します。



物理的な接続



理論的には、物理​​的な接続はテレフォニープロバイダーが提供する必要があります。 このカードには、75ΩRJ-45コネクタがあります。

たとえば、NSGate NS-200 / SB-LEモデムとE1 + LAN + V.35ポートを使用してプロバイダーに接続します。プロバイダーをすぐに1つの専用回線とE1およびイーサネットに接続することを強くお勧めします。

ケーブルのピン配列はこちらでご覧いただけます

カードがプロバイダーに接続されると、もちろん以下で説明するようにすべてを正しく構成しない限り、カードのライトが緑色に変わります。



カスタマイズ



ボードを機能させるには、次の3つのコンポーネントをインストールして構成する必要があります。

  1. libPRIは、ISDNのストリーミングTDMインターフェースであるPRI(プライマリレートインターフェース)およびBRI(ベーシックレートインターフェース)で動作するように設計されたライブラリです。
  2. DAHDI -Digiumが製造したボード用のドライバー。
  3. FreeTDM-テレフォニーボードを操作するためのFreeSWITCHモジュール。




libPRI



ここからlibpriをダウンロードします: downloads.asterisk.org/pub/telephony/libpri

たとえば、次のように:

wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
      
      



そしてインストール:

 make make install
      
      





実際にインストールし、すべて。 特別な設定は必要ありません。

FreeSWITCHは、libPRIを介してDAHDIと対話します。



DAHDI



また、DAHDIのインストールプロセスについては、wiki.freeswitch.org / wiki / OpenZap_Dahdiで説明しています。

したがって、カードをインストールした後、システムで確認してください
 lspci -v
      
      



そして、カードが座っている割り込みを見てください:
 cat /proc/interrupts
      
      



wctdmが別のirqを占有している場合は良好ですが、誰かと共有する場合は、カードの操作と音声の品質に影響を与える可能性があるため、ドライバーを別の割り込みに配置することをお勧めします。



ここからDAHDIをダウンロードします: downloads.asterisk.org/pub/telephony/dahdi-linux-complete

たとえば、次のように:

 wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
      
      



ユーザーアスタリスクを追加

 adduser asterisk
      
      



そして/ etcにフォルダーを作成します

 mkdir /etc/asterisk
      
      



必要ありませんが、ドライバーをインストールする際のエラーを回避するために行う必要があります。

 make all make install
      
      



最初のインストールがあった場合は、configを実行してサンプルの構成ファイルをインストールする必要があります

 make config
      
      



起動時にすぐにDAHDIを有効にできます

 chkconfig dahdi on
      
      





DAHDI構成ジェネレーターを起動します

 /usr/sbin/dahdi_genconf
      
      





ファイルの編集/ etc / dahdi / modules

コメント化されていない行が1つあります。

wcte12xp

残りのモジュールは不要です。ロードしないようにコメントアウトする必要があります。



次に、/ etc / dahdi / system.confを構成します。

接続設定:

span = <span num>、<timing source>、<line build out(LBO)>、<framing>、<coding> [、yellow]

span num-スパンシリアル番号

タイミングソース -タイマー同期のソースを選択します。 0-マスター、1以上-マスターはリモート側です。 数値が大きいほど、優先順位は低くなります。

ラインビルドアウト(LBO) -リモート側までの距離に応じた選択。 この場合に機能するかどうかはわかりませんが、表は次のとおりです。

0:0 db(CSU)/ 0-133フィート(DSX-1)

1:133-266フィート(DSX-1)

2:266-399フィート(DSX-1)

3:399-533フィート(DSX-1)

4:533-655フィート(DSX-1)

5:-7.5db(CSU)

6:-15db(CSU)

7:-22.5db(CSU)

フレーミング -電話アラームのタイプ。 E1では、ccsまたはcasが選択されています。

コーディング -インラインでコーディング。 E1の場合は、amiまたはhdb3を選択します。

黄色 -crc4がチェックおよび生成されているかどうか。

これらすべてのE1パラメーターは、テレフォニープロバイダーから報告される必要があります(もちろん、span numを除く)。

以下は、 チャネル構成です。

<デバイス> = <チャネルリスト>

E1ストリームでは、bchanとdchanのみのデバイスに関心があります。 E1の場合、次の設定が使用されます。

bchan = 1-15,17-31

dchan = 16

以下にタイムゾーンについて説明します。

loadzone = <ゾーン>

defaultzone = <ゾーン>

タイムゾーンは2文字のコードで示されます。 デフォルトはusです。

以下は、チャネル上のPCMエンコードについて説明しています。

mulaw(G.711u = PCMU)とalaw(G.711a = PCMA)から選択します。

次に、 エコーキャンセラについて説明します

echocanceller = <echocanceller name>、<channel's>

エコーキャンセラー名 -mg2、kb1、sec2、sec。



以下に、例として/etc/dahdi/system.confファイルを示します。

 # Autogenerated by ./dahdi_genconf on Tue Jun 7 18:38:22 2011 # If you edit this file and execute ./dahdi_genconf again, # your manual changes will be LOST. # Dahdi Configuration File # # This file is parsed by the Dahdi Configurator, dahdi_cfg # # Span 1: WCT1/0 "Wildcard TE121 Card 0" (MASTER) HDB3/CCS ClockSource. span=1,1,0,ccs,hdb3 bchan=1-15,17-31 dchan=16 alaw=1-15,17-31 loadzone = ru defaultzone = ru echocanceller=mg2,1-15,17-31
      
      





これで、DAHDIを開始できます。

 service dahdi start
      
      





/ usr / sbinにDAHDIをインストールすると、いくつかのユーティリティが書き込まれます。

dahdi_test

 dahdi_test Opened pseudo dahdi interface, measuring accuracy... 99.999% 99.995% 99.999% 99.999% 99.999% 99.999% 99.999% --- Results after 7 passes --- Best: 99.999 -- Worst: 99.995 -- Average: 99.998506, Difference: 99.998507
      
      





99.9未満の値は悪い結果です。 これは、DAHDIデバイスが割り込みやプロセッサ時間に関して他のプロセスと競合することを余儀なくされることを意味し、音質の低下につながる可能性があります。



dahdi_tool

カードのステータスとその操作のエラーを表示します。

dahdi_tool



dahdi_scan

たとえば、次のようなマップに関する情報を表示します。

 [1] active=yes alarms=OK description=Wildcard TE121 Card 0 name=WCT1/0 manufacturer=Digium devicetype=Wildcard TE121 (VPMADT032) location=PCI Bus 05 Slot 09 basechan=1 totchans=31 irq=169 type=digital-E1 syncsrc=1 lbo=0 db (CSU)/0-133 feet (DSX-1) coding_opts=AMI,HDB3 framing_opts=CCS,CRC4 coding=HDB3 framing=CCS
      
      





dahdi_cfg [オプション]

構成を表示



dahdi_hardware

インストールされているカードに関する情報を表示します



Freetdm


ボードを使用するには、FreeSWDMにfreetdmモジュールをインストールする必要があります。 さらに、libpriサポートを使用してコンパイルする必要があります。 libpriなしでコンパイルされた場合、再コンパイルする必要があります。

 cd libs/freetdm ./configure --with-libpri make make install
      
      





FreeTDMを構成するには、confフォルダー内の3つのファイル、freetdm.conf、zt.conf、およびautoload_configs / freetdm.conf.xmlを調整する必要があります。 もちろん、FreeTDMモジュールはautoload_configs / modules.conf.xmlファイルに含める必要があります。



freetdm.confの構成


Zaptel / DAHDIセクションを構成します。 これを行うには、次のセクションを作成します(既定では既に作成されています)。

[span zt myDAHDISpan]

myDAHDISpan-これは任意の名前にすることができます。

このファイルでは、パラメーターは「=>」記号で値と区切られていることに注意してください。

name-選択した名前

trunk_type-タイプ、可能な値:E1、T1、J1、BRI、BRI_PTMP、FXO、FXS、EMを決定します。

group-発信コールの条件付きグループ名。文字で始まる必要があります。 さらに、ダイヤルプランの例では、ダイヤルプランの使用方法がわかります。

txgain-送信用のサウンドを強化または減衰します。 floatと入力します。 値が大きすぎると、歪みが生じる可能性があります。 典型的な値の範囲は-5.0〜5.0

rxgain-受信するサウンドを強化または減衰します。 floatと入力します。 値が大きすぎると、歪みが生じる可能性があります。 典型的な値の範囲は-5.0〜5.0

E1ストリームのanalog-start-typeおよびnumberオプションは必要ありません。

bチャネル-bチャネル番号。 bchanパラメーターから(ファイル/etc/dahdi/system.conf)

dチャネル-dチャネルの番号。 dchanパラメーターから(ファイル/etc/dahdi/system.conf)

このケースではfxo -channelfxs-channelおよびem-channelパラメーターは必要ありません。

cas-channelオプションとdebugdtmfオプションも役立つ場合があります。

私の作業freetdm.confの例:

 [span zt pri] name => pri trunk_type => E1 group => e1group b-channel => 1-15 d-channel => 16 b-channel => 17-31
      
      





zt.confの構成


私はそれを気にせず、すべてのデフォルト値を取りました。

 [defaults] codec_ms => 20 wink_ms => 150 flash_ms => 750 echo_cancel_level => 64 rxgain => 0.0 txgain => 3.0
      
      





freetdm.conf.xmlの構成


 <configuration name="freetdm.conf" description="Freetdm Configuration"> <settings> <param name="debug" value="7"/> <!--<param name="hold-music" value="$${moh_uri}"/>--> <!--<param name="enable-analog-option" value="call-swap"/>--> <!--<param name="enable-analog-option" value="3-way"/>--> </settings> <libpri_spans> <span id="1" name="pri"> <param name="node" value="network"/> <param name="switch" value="euroisdn"/> <param name="l1" value="alaw"/> <param name="dp" value="international"/> <param name="debug" value="all"/> <param name="dialplan" value="XML"/> <param name="context" value="default"/> </span> </libpri_spans> </configuration>
      
      





名前属性-freetdm.confで指定した名前と一致するスパン名

他のパラメーターは次の値を取ることができます。

ノードまたはモード -ノードタイプ(括弧内は有効な同義語):cpe(ユーザー)、network(net)

スイッチまたは方言 (括弧内は有効な同義語):ni1、ni2、dms100、lucent5e(5ess)、att4ess(4ess)、euroisdn(q931)、gr303eoc、gr303tmc

l1またはlayer1 :alaw、ulaw

dpまたはton :インターナショナル、ナショナル、ローカル、プライベート、不明

これらのパラメーターを理解すると、プロバイダーはE1ストリームの接続先のプロバイダーに通知する必要があります。

次に、通話の送信先を指定します。

dialplan-コールが送信されるダイヤルプラン :XML、YAML、アスタリスク(?)

context-呼び出しが送信されるコンテキスト。

次のオプションはオプションです。

debug :q921_all、q921_raw、q921_dump、q921_state、q931_all、q931_dump、q931_state、q931_anomaly、config、apdu、aoc

重複ダイヤル (括弧内は有効な同義語):はい(両方)、着信(受信)、発信(送信)、いいえ

opts :サジェストチャネル、除外ディスプレイ、省略リダイレクト番号、aoc

service_message_support :true、false

ノードタイプ、方言、エンコードのパラメーターは、テレフォニープロバイダーに提供する必要があります。

はい、パラメーター名には同義語があります。 ノード=モード、スイッチ=ダイアレクト。



ダイヤルプランのセットアップ


発信コールは、次のルールに従って記述されます。

freetdm / <スパン名またはグループ名> / a / <destination_number>



文字「a」は小さい場合もあれば、大きい場合もあります。 文字サイズ(hehe)は、FreeTDMがスパン内の空きチャネルを選択する方法を定義します。 「A」-下から上、つまり 最初から最大まで、および「A」-上から下、つまり 最大値(この場合は31)から最初の値まで。



たとえば、9で始まるすべての番号がカードに送信されます

 <extension name="outgoing_pri"> <condition field="destination_number" expression="^9(\d+)$"> <action application="bridge" data="freetdm/e1group/a/$1"/> </condition> </extension>
      
      







次の例では、すべての着信コールをivr_main(私の場合はIVRメニュー)という名前で内線番号に送信します。

 <extension name="pri_input"> <condition field="chan_name" expression="^(FreeTDM)"> <action application="set" data="ringback=${ru-ring}"/> <action application="set" data="transfer_ringback=${ru-ring}"/> <action application="transfer" data="ivr_main XML default"/> </condition> </extension>
      
      







まあ、一般的に、どういうわけか。



もちろん、主な情報源はこちらです: http : //wiki.freeswitch.org/wiki/FreeTDM

CLIコマンド、SIPヘッダー、チャネル変数など、多くの追加情報もあります。



All Articles