DAHDIインストール

2009年11月8日 (日) 15:39時点におけるTakahashi (トーク | 投稿記録)による版 (参考情報)

DAHDIのインストール手順
Asterisk 1.4の現在バージョンではZaptel,DHADIいずれも使用可能。1.6からはDAHDIのみ使用可能。

目次

セットパッケージの提供

現在、DAHDIとDAHDI Toolをセットにしたものも提供されていますので、個別にダウンロードせずに、こちらを使用してもかまいません。
http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/

DAHDI+CentOS 5.2

CentOS 5.2の基本インストールはサーバインストールの場合です。
インストール終了後は yum update でシステムを更新しておいてください。

追加パッケージ

以下のパッケージをCentOSに追加します。すでに追加してある場合には必要ありません。

# yum install gcc gcc-c++ kernel-devel ncurses-devel

DAHDIの入手と展開

DAHDIは http://downloads.digium.com/pub/telephony/dahdi-linux/ からダウンロードできます。

# wget http://downloads.digium.com/pub/telephony/dahdi-linux/dahdi-linux-2.1.0.3.tar.gz
# tar zxvf dahdi-linux-2.1.0.3.tar.gz
# cd dahdi-linux-2.1.0.3

DAHDIのコンパイルとインストール

パッケージが揃っていればmakeするだけです。
make install中にDigiumボードのファームウェアをダウンロードしますのでネットワーク接続が必要です。

# make
# make install

DAHDI Toolsの入手と展開

Zptelでは同梱されていましたが、DHADIからはドライバそのものとToolsに分けて配布されています。
dahdi-toolsは http://downloads.digium.com/pub/telephony/dahdi-tools/ からダウンロードできます。

# wget http://downloads.digium.com/pub/telephony/dahdi-tools/dahdi-tools-2.1.0.2.tar.gz
# tar zxvf dahdi-tools-2.1.0.2.tar.gz
# cd dahdi-tools-2.1.0.2

DAHDI Toolsのコンパイルとインストール

configure,makeを行います。なお、make menuselectも使用できます。

# ./configure
# make

コンパイルが完了したらmake installとconfigを行っておきます。

# make config
# make install

設定ファイルの調整

DAHDIの設定ファイルは /etc/dahdi に置かれます。ロードするモジュールを設定するには modules ファイルを編集します。例えばdahdi_dummyだけしか使用しないのであれば以下のようにdahdi_dummyを追加します。

# 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のカードを使ってなければコメントアウト

# 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 TC400B: G729 / G723 Transcoding Engine
#wctc4xxp

# Xorcom Astribank Devices
#xpp_usb

# DAHDI Dummy                                       <--追加
dahdi_dummy                                         <--追加

dahdi_dummyはその名の通り、ztdummy同様にタイミングだけを生成するモジュールです。Digiumのカード類などのハードウェアを実装していなければ、このdahdi_dummyだけロードすればよく、他のモジュールはロードする必要はありません。
なお、DAHDIのスタート時に、ハードが実装されていなければ自動的にdahdi_dummyがロードされますが、ここでは明示的に設定しています。

ロードのテスト

インストール、設定が完了したら起動してテストしてみます。

# /etc/init.d/dahdi start
Loading DAHDI hardware modules:
 dahdi_dummy:                                             [  OK  ]

Running dahdi_cfg:                                        [  OK  ]

lsmodでロードを確認します。

Module                  Size  Used by
dahdi_dummy             9384  0
dahdi                 190600  1 dahdi_dummy
crc_ccitt               6337  1 dahdi

上記のようにロードされるはずです。
確認できたなら一旦、DAHDIを止めて次のステップに移ります。

# /etc/init.d/dahdi stop

udevの調整

Asteriskをユーザ名asteriskで起動する場合、DAHDIのパーミッションが問題となりますので、ここでudevを調整しておきます。
以下のコマンドでユーザとグループを登録しておきます。

# groupadd -g 5060 asterisk
# adduser -g 5060 -u 5060 -d /var/lib/asterisk -s /sbin/nologin asterisk

/etc/udev/rules.d に dahdi.rules ファイルがインストールされているはずなので、これを以下のように名前を変更します。

# cd /etc/udev/rules.d
# mv dahdi.rules 99-dahdi.rules

DAHDIを再度起動してオーナとグループを確認します。

# /etc/init.d/dahdi start
Loading DAHDI hardware modules:
 dahdi_dummy:                                             [  OK  ]

Running dahdi_cfg:                                        [  OK  ]
# ls -l /dev/dahdi/
total 0
crw-rw---- 1 asterisk asterisk 196, 254 Feb  3 16:58 channel
crw-rw---- 1 asterisk asterisk 196,   0 Feb  3 16:58 ctl
crw-rw---- 1 asterisk asterisk 196, 255 Feb  3 16:58 pseudo
crw-rw---- 1 asterisk asterisk 196, 253 Feb  3 16:58 timer

RTCを使用しない場合

注:DAHDI Linux 2.2.0ではRTC関連の定義がなくなっています。

Zaptelと同じですが、dahdi_dummyでRTCを使用したくない場合にはソースを調整します。
dahdi_dummyは drivers/dahdi/ の下の dahdi_dummy.c です。

#define USE_RTC
#endif
#endif
#endif

#undef USE_RTC              <--追加します

#include <linux/kernel.h>
#include <linux/errno.h>

ソースを変更したならば再度、make,make installを行います。DAHDI Toolsは再インストールする必要はありません。

Asterisk 1.4での留意点

Asterisk 1.4の後期ではasterisk.confにdahdichannameオプションが追加されています。設定値はyesまたはnoで、デフォルトはyesのようです。

  • dahdichanname = no の場合
*CLI> core show channeltypes
Type        Description                              Devicestate  Indications  Transfer
----------  -----------                              -----------  -----------  --------
IAX2        Inter Asterisk eXchange Driver (Ver 2)   yes          yes          yes
Local       Local Proxy Channel Driver               yes          yes          no
Zap         DAHDI Telephony Driver                   no           yes          no
SIP         Session Initiation Protocol (SIP)        yes          yes          yes
Agent       Call Agent Proxy Channel                 yes          yes          no
----------
5 channel drivers registered.
  • dahdichanname = yes の場合
*CLI> core show channeltypes
Type        Description                              Devicestate  Indications  Transfer
----------  -----------                              -----------  -----------  --------
IAX2        Inter Asterisk eXchange Driver (Ver 2)   yes          yes          yes
Local       Local Proxy Channel Driver               yes          yes          no
DAHDI       DAHDI Telephony Driver                   no           yes          no
SIP         Session Initiation Protocol (SIP)        yes          yes          yes
Agent       Call Agent Proxy Channel                 yes          yes          no
----------
5 channel drivers registered.

dahdichannameオプションはasterisk.confの[options]セクションに記述します。上記の結果からわかるようにnoが指定されている場合には、チャネル名が"Zap"にすり替えが行われます。このためDAHDIを使用していてもextensionsを書き換えず動かすことができます。
ただしこのオプション指定はAsterisk 1.6では廃止されているようですので、Asterisk 1.6に移行する際にはextenのテクノロジ書き換えを忘れないようにしてください。

参考情報

Digiumの回線インタフェース類を使用しない場合、DAHDIの回線インタフェース向けモジュールは必要ありません。Zaptel同様にdahdi_dummyのみあればMeetMeとIAXトランキングが動作します。このため不必要なモジュールをコンパイル/インストールせずにDAHDIを使う場合には以下のようにします。
玄箱ではどのみちdahdi_dummyしか使えないので、余計なものをコンパイル&インストールするのは無駄です。必要なものだけをコンパイルするには以下のように行います。

linux/drivers/dahdi/Kbuild を編集します。要らないものをコメントアウトします。

obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI)                   += dahdi.o
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DUMMY)             += dahdi_dummy.o
#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DYNAMIC)          += dahdi_dynamic.o
#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DYNAMIC_LOC)      += dahdi_dynamic_loc.o
~略~
#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_TOR2)             += tor2.o
#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_PCIRADIO)         += pciradio.o

#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_XPP)              += xpp/

obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_JPAH)      += dahdi_echocan_jpah.o
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_STEVE)     += dahdi_echocan_sec.o

この状態でmake installすると最低限のモジュールだけでDAHDIを動かすことができます。