Voyage Asterisk

2007年6月23日 (土) 15:06時点におけるTakahashi (トーク | 投稿記録)による版 (chan_cellphone)

VoyageはDebian派生のためaptでAsteriskを入手できますが、バージョンが古いものしかないこととCF向けに調整されていません。そこでVoyage用のAsteriskを用意しました。
まずはVoyage Linuxのページを見て、Voyage Linuxをインストールしてください。Voyage Linuxが動作する環境であれば、Microclient JR以外のマシンでもこのAsteriskが動作すると思います。

なお当然ですが起動した後はroマウントされていますので、入手や展開などはremountrwを実行してから行います。

目次

グループとユーザの登録

"asterisk"で動作させるのなら、グループとユーザを登録しておきます。UID,GID=5060は趣味です :)

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

Zaptel

ftp://ftp.voip-info.jp/asterisk/voyage/zaptel-1.4.3_voyage.tar.gz
ルートディレクトリで展開してください。 展開したならばdepmod -aldconfigを実行しておいてください。
udevの関係でAsteriskをユーザ:asterisk、グループ:asteriskで実行する場合にはファイルの調整が必要です。
/etc/udev/permissions.rules のzaptelのエントリを以下のように修正します。

SUBSYSTEM=="zaptel",                            GROUP="dialout"
             ↓
SUBSYSTEM=="zaptel",    OWNER="asterisk",       GROUP="asterisk"

修正した後は /etc/init.d/udev restart でudevデーモンを再起動しておきます。

Asterisk

ftp://ftp.voip-info.jp/asterisk/voyage/asterisk-1.4.5_voyage.tar.gz
日本語音声対応済み、ひかり電話のRT-200NE対応パッチ適用済みです。入手したならばルートディレクトリへ展開してください。
デフォルトで入っている設定ファイル類はAsterisk サンプル設定ファイルの1.4用に準じますが、asterisk.confのastrundirが/var/run/asteriskに変更されています。

Asteriskを動作させるにはパッケージの追加が必要です。

# apt-get install libstdc++5

を実行してください。
再起動するか/etc/init.d/asterisk startで起動するはずです。
CFのROマウントから起動するため、/var/spool/asteriskや/var/log/asteriskはtmpfs上にあります。そのまま使い続けるといずれメモリ不足で落ちるはずですので注意してください。
AsteriskのログはSyslogに頼っています。Asterisk自体ではログを吐かないため、ログを確認する際には/var/log/messagesを見てください。ログもtmpfs上なので継続使用には注意します。Syslogを別なマシンに飛ばすなどすれば良いでしょう。

  • 別パーティションの使用

Asterisk用に別なパーティションを作成するか例えばUSBメモリのような外部ストレージを使ってマウントしておくと、自動的にそれを使用します。設定の手順は以下の通りです。

  1. fdisk等でパーティションを作成し、mkfsします。tune2fs -c 0 <デバイス> でチェックを無効にします。
  2. /asteriskというディレクトリを作成します
  3. /etc/fstabに次の1行を追加しておきます。
/dev/hdb2       /asterisk     ext2    defaults,noatime,rw     0       0
  • 実行ユーザの変更

/etc/init.d/asteriskスクリプト内のAST_USERとAST_GROUPのコメントを外してください。ディレクトリパーミッション等も自動的に適切に調整される(はず)です。

インストール後の状況

1GBのCFを使用しルートとして600MB程度を割り当てた場合のディスク使用量は概ね次のようになっています。

voyage:/# df -H
Filesystem             Size   Used  Avail Use% Mounted on
rootfs                 600M   165M   405M  29% /
udev                    11M    29k    11M   1% /dev
/dev/hdb1              600M   165M   405M  29% /
/dev/hdb1              600M   165M   405M  29% /dev/.static/dev
tmpfs                   61M      0    61M   0% /lib/init/rw
tmpfs                   61M   4.1k    61M   1% /dev/shm
tmpfs                  8.4M   435k   8.0M   6% /rw

chan_cellphone

実はBluetoothドングルを挿せば携帯ゲートウェイとして動作するようにしてあります。なお、このAsteriskに含まれるのは現在のtrunkのadd-onではなく、Asterisk 1.4.4用のchan_cellphoneです。

まずaptでbluetoothを持ってきます。

# apt-get install bluetooth

余計なものを結構引きつれてくるので、ディスクの消費を抑えたい人は依存無視してホゲってください。
/etc/bluetoothのhcid.confの以下の箇所を修正します。

        # Security Manager mode
       #   none - Security manager disabled
       #   auto - Use local PIN for incoming connections
       #   user - Always ask user for a PIN
       #
       security auto;         <-- autoにする
       # Default PIN code for incoming connections
       passkey "1234";        <-- passkeyは自分で設定

rfcomm.confに以下のようなエントリを追加します。

rfcomm28 {
        # Automatically bind the device at startup
        bind no;

        # Bluetooth address of the device
        device アドレス;
        channel 1;
        comment "Nokia E60";
}

/etc/init.d/bluetooth restartでbluetoothを再起動します。エラーが出ますが無視してかまいません。
次にhcitool scan を実行して、使用する電話機のアドレスを調べてメモしておきます。この後、電話機側からの操作でペアリングを行い、設定したパスキーを入力します。認識されたならば"認証済み"にし、自動接続を許可しておきます。

Asteriskの設定は、まずmodules.confのnoload=>chan_cellphone.soをコメントアウトしてください。
次にcellphone.confに以下のようなエントリを追加します。

[NokiaE60]
address=アドレス
port=28
context=cell-in
type=Phone

ノキアの場合、ヘッドセットプロファイルで入るにはport=28に設定しないとダメなようです。他の電話機は・・ちょっとわかりません。
設定が完了したならばAsteriskを再起動します。reloadでは不十分です。/etc/init.d/asterisk stopで停止し、startしなおしてください。
これで携帯がFXOになるはずです。テクノロジはCELLでCELL/デバイス/番号で発信できます。上の例では

CELL/NokiaE60/0312345678

を指定すると発信できます。着信はsエクステンションに対して行われますので、適切なコンテキストを作成してください。

CLIコマンド

cell search を実行するとbluetoothデバイスを検索します。実行に時間がかかるので慌てないように。
cell show devices を実行すると現在接続されているデバイス一覧が出ます。
電話機が接続されると、以下のようなメッセージがCLIに出ます。

  -- Bluetooth Device NokiaE60 has connected.
  -- Bluetooth Device NokiaE60 initialised and ready.