この記事では、シングルポートE1 Digium TE121Pカードの例を使用して、CentOSオペレーティングシステム上のFreeSWITCHに接続する例を検討します。
物理的な接続
理論的には、物理的な接続はテレフォニープロバイダーが提供する必要があります。 このカードには、75ΩRJ-45コネクタがあります。
たとえば、NSGate NS-200 / SB-LEモデムとE1 + LAN + V.35ポートを使用してプロバイダーに接続します。プロバイダーをすぐに1つの専用回線とE1およびイーサネットに接続することを強くお勧めします。
ケーブルのピン配列はこちらでご覧いただけます 。
カードがプロバイダーに接続されると、もちろん以下で説明するようにすべてを正しく構成しない限り、カードのライトが緑色に変わります。
カスタマイズ
ボードを機能させるには、次の3つのコンポーネントをインストールして構成する必要があります。
- libPRIは、ISDNのストリーミングTDMインターフェースであるPRI(プライマリレートインターフェース)およびBRI(ベーシックレートインターフェース)で動作するように設計されたライブラリです。
- DAHDI -Digiumが製造したボード用のドライバー。
- 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
wctdmが別のirqを占有している場合は良好ですが、誰かと共有する場合は、カードの操作と音声の品質に影響を与える可能性があるため、ドライバーを別の割り込みに配置することをお勧めします。cat /proc/interrupts
ここから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
そして/ etcにフォルダーを作成しますadduser asterisk
必要ありませんが、ドライバーをインストールする際のエラーを回避するために行う必要があります。mkdir /etc/asterisk
最初のインストールがあった場合は、configを実行してサンプルの構成ファイルをインストールする必要がありますmake all make install
起動時にすぐにDAHDIを有効にできますmake config
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_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 -channel 、 fxs-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ヘッダー、チャネル変数など、多くの追加情報もあります。