2015年1月13日火曜日

3GモデムをAsteriskに【つなぐ】

今まで「GP-712」や「GP-710」を使って【つなぐ】(※)を構築してきました。

しかし、これらは非常に高価です。
これらで【つなぐ】を構築すると、トータルで4万円以上かかります。
そこで、もっと安価に【つなぐ】を構築できないかを考えます。


※ 【つなぐ】とは何かは、以下の記事をご覧ください。
ガラケー(話し放題)と、スマホ(MVNO)を【つなぐ】>(概要説明)
MVNO(データSIM)で「話し放題」を実現する 【つなぐ】>(設定紹介)




しかしながら、2万も3万もする「GP-710」や「GP-712」を使った時点で、すでにもう高価です。
そこで、「GP-71x」の代わりに、安価な「Huawei製の3Gモデム」で【つなぐ】を構築してみました。

これならば、導入費を半額以下に抑えられると同時に、別途ガラケーを用意する必要もなくなります。



【必要な機材と設置】

  • IP-PBX(Asterisk)
  • Huawei 3Gモデム(※1)
  • スマホ(普段使い用)


    「IP-PBX」は今までどおり、「Raspberry Pi」を使います。
    そして、今回は「GP-71x」ではなく、代わりに「3Gモデム」を使います。

    設置は簡単です。
    「3Gモデム」のSIMスロットにドコモなどのSIMカードを装着して、「Raspberry Pi」にUSB接続するだけです。(※2、※3)
    なお、「3Gモデム」のSIMスロットは標準サイズが多いので、必要に応じてSIMアダプタを介します。

    ※1 使用可能モデル一覧は<このサイト>を参考にしてください。
    ※2 auは規格が違うため利用できません。
    ※3 一部のY!mobile(タイプ2)およびPHSは利用できません。




    【chan_dongleのインストール ~ Asteriskの設定】

    USBの3GモデムをAsteriskに接続するためには「chan_dongle」を使います。

    導入方法はすべてこのサイトのとおり実行するだけです。
    Wiki Chan_dongle


    ・・・それだけではあまりにも気が利かないので、ここではもっと簡単に、「chan_dongle」を使えるようにします。


    以下は、上記サイトを参考に、我流でインストールした備忘録です。

    OSには「Raspbian」を使いました。
    多分「RasPBX」でも問題ないと思いますが、動作未確認です。
    RasPBXを使う場合は、Asteriskのインストールは不要です。


    ● Asteriskをインストールします。
    apt-get install asterisk

    ● 続いて開発者ツールをインストールします。
    apt-get install asterisk-dev

    ● 3Gモデムを使えるようにするドライバみたいなものをダウンロードします。
    cd /usr/src
    wget https://asterisk-chan-dongle.googlecode.com/files/chan_dongle-1.1.r14.tgz

    ● 解凍します。
    tar -zxvf chan_dongle-1.1.r14.tgz

    ● makeします。
    cd /usr/src/chan_dongle-1.1.r14
    ./configure
    make

    ● インストールします。
    make install

    ● chan_dongleの設定ファイルとダイヤルプランを作成します。
    (extensions.confが上書きされるため、自分専用ダイヤルプランを作成していた人は事前にバックアップします。)
    cd /etc/asterisk/
    wget http://asterisk-chan-dongle.googlecode.com/svn/trunk/etc/dongle.conf
    wget http://asterisk-chan-dongle.googlecode.com/svn/trunk/etc/extensions.conf

    ● Raspbianを再起動します。
    reboot



    【chan_dongleで通話する】

    Raspbianの再起動が完了したら、「3Gモデム」が使えるかを確認します。
    「3Gモデム」に挿したSIMカードの電話番号に、他の電話機から電話します。

    英語のデモが流れたら成功です。
    あとは適切に「dongle.conf」と「extensions.conf」を設定します。
    なお、「3Gモデム」を1つしか使わない場合は、「dongle.conf」を編集する必要はありません。



    【ダイヤルプランの作成】

    「3Gモデム」から発信させるためには、extenの記述が通常と若干異なります。
    以下のように記述することで「3Gモデム」から発信するようになります。

    ; 0をトリガーにした発信例
    exten => _0.,1,Dial(Dongle/dongle0/${EXTEN},60)
    exten => _0.,n,Hangup()

    着信やその他の記述は、通常と変わりませんので、自分の環境にあったダイヤルプランを作成します。



    【音質の検証】

    私の環境では非常に良好な通話品質でした。
    特に遅延を感じることもなく、「普通の電話」です。

    ところが、【つなぐ】同士の会話は、かなりの遅延を感じます。(これはGP-71xを使ったシステムも同様です。)
    そのため、【つなぐ】同士の会話には、外線を使わずに内線通話となるように、ダイヤルプランを作成する必要があります。

    こうすれば、音声回線を経由しない通話が実現でき、その結果、より低遅延・高音質な通話が可能になります。


    今回もいつもどおり、3Gモデム版【つなぐ】の音質と遅延時間を検証します。
    音質については自分がどう聞こえるかより、自分の声が相手にどのように聞こえているかが重要なため、それを掲載します。

    [使用した端末]
  • iPhone4s(ドコモSIM使用)
  • SH-07D(Groundwire使用)

    [回線種別]
  • Wi-Fi(光回線)

    [録音環境]
  • 「FUSION IP-Phone SMART」の留守電(128kbps RIFF-WAVE)

    [遅延測定条件]
  • 「iPhone4sから音声を発信してから、SH-07Dがそれを受信する」までのタイムラグの測定

    [音声の元データ]


    [検証結果]
    回線種別
    (アプリ)
    コーデック 音質 遅延時間
    (つなぐから発信/つなぐで受話)
    Wi-Fi
    (Acrobits Groundwire)
    G.711μ

    257ms / 590ms


    何度か試験をしているうちに気付きました。
    どういうわけか、発信時より受話時の遅延時間が大きいのです。

    これの回避策は、以下『着信時の遅延回避策』に記載します。



    【着信時の遅延回避策】

    3Gモデム版【つなぐ】で受話した際の遅延時間については、もしかすると私の環境依存かもしれません。
    しかし、いずれにしても、この遅延時間では実用できません。

    そこで、これを実用するためには、キャリア転送を併用します。

    キャリアの転送を使うことによって、【つなぐ】による着信を迂回して、別の電話番号に着信させることが出来ます。
    つまり、受話時は【つなぐ】を使わないことで、遅延を回避させるわけです。

    転送先の電話番号には「ブラステル 050 free」を用います。(無料)
    ここであれば、低遅延・高音質での通話が可能です。
    (ブラステルを経由していることを全く意識せずに運用できます。)


    以上より、3Gモデム版【つなぐ】は、転送も「カケホーダイ」対象となるドコモとの相性が抜群です。
    もちろん、着信にはほとんど使用しない前提でしたら、ソフトバンクやY!mobileでも構いません。



    【まとめ】

    GP-71xを使った【つなぐ】と、3Gモデムを使った【つなぐ】、それぞれのメリットとデメリットを以下の表にまとめました。

      安定性 音質 遅延 価格 備考
    GP-71x 高い ・通話最初の1秒ぐらいが聞こえない。
    ・シェアの「有効/無効」切替ができる。
    ・収容する携帯キャリアを問わない。
    3Gモデム 未知 特殊 安い ・つなぐからの発信は遅延なし、受信時は遅延大。
    ・検証期間が浅いため、安定性がわからない。(現在までは良好)
    ・別途携帯を必要としない。(SIMをそのまま使う)
    ・auとPHSは収容できず。
    BTドングル 安い ・Bluetoothで携帯を直接Asteriskへ収容する。
    ・収容する携帯キャリアを問わない。
    ・ペアリングできる端末がかなり限定される。
    (私の手持ちデバイスではHFPで繋がらないため試験できず。)

    GP-71x限定機能の「シェアの切替」とは、GP-71xの設定画面を利用することで、その回線をシェアするか否かが簡単に切り替えられる機能になります。

    「最初はひとりで使いたいけど、後から複数人でシェアするかも知れない。」(またはその逆)などが、Asteriskのダイヤルプランを変えることなく切り替えられます。(要初期設定)

    なお、この表の中に「BTドングル」というのもがありますが、これは「chan_mobile」というAsteriskのアドオンを使って、携帯電話をAsteriskに直接収容する手法になります。

    しかし、私の技術力不足もありますが、あまりにも相性が酷く使用を断念しました。
    また、Asteriskとペアリングするために、Linuxコマンドを駆使するため、現実的ではないとも判断しました。
    Bluetoothを使う場合は素直にGP-71x使うべきです。



    【あとがき】

    chan_dongleは以前から知っていたのですが、私の知識ではハードルが高すぎて、今まで諦めていました。
    しかし、GP-71xを使った【つなぐ】を他の方に販売することになって、ひしひしと感じていたことがありました。

    「高すぎる・・・」と。

    と言うことで、今回はかなりがんばりました。

    分かってしまえばなんてこと無いのですが、Asteriskの開発者ツールを導入しないと「chan_dongle」のmakeに失敗します。
    うまく導入できない人のほとんどが、これが原因ではないかと思います。

    LinuxとAsteriskが扱える人は、本記事のとおりで【つなぐ】を構築できますので、ぜひチャレンジしてみてください。

    なお、<【つなぐ】オーダーフォーム>に「3Gモデム版」も追加しました。
    これにより、かなり安価に【つなぐ】を提供できるようになりました。


    【つなぐ】のオーダーは終了いたしました。
    本当はずっと続けていきたかったのですが、私の時間が無くなってしまったことと、かなりの赤字で販売していたことにより、継続が厳しくなってしまいました。申し訳ありません。
  • 2015年1月7日水曜日

    「GP-708」を使った【つなぐ】について(フォーラム)

    「GP-708」についてのフォーラム(掲示板・BBS)です。

    本ブログでは「GP-712」と「GP-710」を使った【つなぐ】しか紹介していませんが(下記参照)、『GP-708』というIP-PBX機能を兼ね備えたBluetooth-VoIPゲートウェイも存在します。

  • ガラケー(話し放題)と、スマホ(MVNO)を【つなぐ】
  • MVNO(データSIM)で「話し放題」を実現する 【つなぐ】

    国内において「GP-708」について、情報収集できる場所は現在のところ、どこにもありません。
    そのため、ここを「GP-708」に関する情報共有の場として頂ければ幸いです。

    現在のところ「GP-708」についてはどこにも情報がありませんので、個人的な運用方法の紹介なども、大いに参考になると思われます。
    また、「GP-708」の疑問点なども、ここでご質問頂けたらと思います。

    きっとB氏が応えてくれます。(他力本願モード全開)♪~( ̄ε ̄;)
  • 2015年1月4日日曜日

    ガラケー(話し放題)と、スマホ(MVNO)を【つなぐ】

    MVNO(データSIM)で「話し放題」を実現する 【つなぐ】>では、技術的なことや設定がメインでした。
    今回は【つなぐ】とはなにか、またその設置についてを紹介します。




    【「つなぐ」とは何か?】

    【つなぐ】とは造語であって、そのような装置があるわけではありません。
    【つなぐ】とは、話し放題を契約した携帯電話と、IP-PBXとBluetooth-VoIPゲートウェイなどとを【つなぐ】ことによって、データSIM(MVNO含む)から、話し放題を実現するものになります。

    ・・・こんなこと言われても意味がわかりません。

    簡単に言うと、
    『話し放題を契約したガラケーを、スマホから利用できるようにすること』
    を、便宜上【つなぐ】と言っています。

    話し放題はガラケーで1500~2200円で契約できます。
    スマホはMVNOで、500~900円程度で利用できます。

    よって、【つなぐ】を使えば、両者の良いとこ取りをして、2000~3100円で、1台のスマホで通話(話し放題)と通信を行えることになります。
    これで、かさばる2台持ちから開放されます。

    また、【つなぐ】の醍醐味として、ガラケーの話し放題(1回線)を、複数のスマホでシェアできます。
    これにより、通話料を劇的に節約できます。

    さらに、【つなぐ】に登録したスマホ同士の通話は無料になります。
    場所は関係なく、遠方(海外も可)に住む家族・友人も登録できます。



    【「つなぐ」で何ができるのか?】

    前項と被りますが、【つなぐ】でできることを列挙していきます。
    なお、ここに記載されていること以外でも、アイディア次第で色々な運用が可能になります。


    ◆ ガラケーとスマホの2台持から1台運用へ

    家に置いてあるガラケーの発着信をスマホから行えます。
    よって、安価な2台持ちを継続しつつも、持ち歩く端末をスマホ1台のみにできます。


    ◆ 話し放題のシェア

    せっかくの話し放題回線を一人で使うなんてもったいないです。
    これを複数人でシェアすれば、話し放題回線を最大限に活かせることになります。

    例えば、5人家族で考えます。
    家族で話し放題回線を1回線持っておき、あとはそれぞれ900円のMVNOを使います。

    話し放題回線(1500円)+家族5人分のMVNO(900円×5)= 6000円

    これで5人家族全員が話し放題となりつつも、月額維持費は全員で6000円という破格になります。
    もちろん、これにはデータ通信費も含んでいます。


    ◆ 家族・友人間の通話料を無料にする

    これは【つなぐ】の機能というより、IP-PBXの機能になります。
    【つなぐ】に登録したスマホ同士の通話はすべて無料になります。

    これはLINEの無料通話を想像するとわかりやすいです。
    しかし、LINEのように声が遅れて聞こえることはなく、高品質での通話が可能です。


    ◆ 話し放題のシェア+IP電話の併用

    話し放題回線は発信専用とし、自分用の電話番号には、ブラステルの050番号などを取得します。
    このように、発信と着信とを運用上で分離することで、効率的な運用が可能です。


    ◆ 話し放題のシェア+内線番号の併用により、1回線を複数人で使う。

    話し放題1回線を発信だけでなく、着信にも利用します。
    「話し放題回線番号」+「,(P)」+「内線番号」を相手の電話帳に登録して貰うことで実現できます。
    (例えばiPhoneであれば、電話帳に「090-1234-5678,6123」のように登録します。※動作未確認です。)

    なお、直接、話し放題回線番号にかけた場合は、ガイダンスにしたがって内線番号を入力することで、該当するスマホが着信します。


    その他、内線番号とIP電話番号を同一のものにしてみたり、DTMFにより事前にキャリア転送を設定するなど、アイディア次第で色々なことができるようになります。



    【「つなぐ」の構成】

    【つなぐ】は以下の機器により構成されます。
  • 携帯電話
  • GP-71x
  • IP-PBX
  • スマホ(常時持ち歩くもの)

    このうち、「GP-71x」と「IP-PBX」とは固定回線に接続し、スマホには格安MVNOなどを利用することになります。

    なお、【つなぐ】に最適なMVNOとしては、極めて良好な応答速度から、「BIGLOBE」をお勧めします。
    また、安定した回線品質と良好な応答速度から「OCN」もお勧めできます。
  • BIGLOBE LTE・3G
  • OCN モバイル ONE

    もちろん、その他のMVNOでも利用できますが、応答速度(Ping値)の遅いMVNOは避けてください。
    なお、VoIP規制やプライベートIPが付与されるMVNOでは、正常に利用できないかもしれません。

    私の環境で、上記以外に動作確認できているSIMは以下のものです。
  • ドコモ純正SIM  (要STUNサーバ)
  • DTI(プライベートIP)  (要STUNサーバ)



    【準備するもの】

    【つなぐ】を構成するもの“以外”に、準備するものを列挙します。

  • 携帯電話に常時給電するためのケーブル(お使いのケータイに合う充電ケーブル)
  • IP-PBXに給電するためのケーブル(スマホを充電するケーブルと同一のもの)
  • 上記2つを接続するするためのUSB充電器
  • LANケーブル

    IP-PBXには「Raspberry Pi」を使いますので、1A程度出力できるUSB充電器が必要です。
    手持ちの充電器があれば、それで構いません。

    もし持っていなければ充電器とケーブルを用意します。
  • 2ポート USB充電器(アマゾンへのリンク)
    これは非常に安価なうえ、1年間の保証があります。(PLANEX製)

  • MicroUSB ケーブル(楽天へのリンク)
    スマホの充電を行うわけではないので、ケーブルはこの程度のもので構いません。
    送料を入れても100円ショップより安いです(^_^;)

    なお、Raspberry Piも携帯電話も大した消費電力ではないので、充電器が壊れることはそうそうないとは思います。
    しかし、いざ故障すると【つなぐ】が使えなくなります。
    もし故障してもすぐに交換できるように、充電器の予備は1台持っていても良いと思います。

  • LANケーブル(楽天へのリンク)
    100円です。IP-PBXとGP-71xとで2本必要になります。



    【「つなぐ」の設置方法】

    1.既存ルータに「GP-71x」と「IP-PBX」をLANケーブルで接続します。



    もし、ルータに2ポート分の空きがないようでしたら、ハブを介して接続します。
    なお、「GP-71x」「IP-PBX」ともに、高速通信を必要としませんので、安価なハブで問題ありません。



    2.「GP-71x」と「携帯電話」をBluetooth接続します。

    「GP-71x」は常にペアリング待ち受け状態ですので、携帯電話から簡単にペアリングできます。
    実際のペアリング作業は、以下動画の後半をご覧ください。



    【ルータの設定】

    外出時でも【つなぐ】へアクセスできるように、ルータを設定します。
    たとえば、auひかりでは「ポートマッピング」と言う項目から行えます。

    ポート5062(SIP用)と10000~20000(RTP用)とを「IP-PBX」へ向けます。

    これらの設定方法は利用しているルータによって、それぞれ異なります。
    もし、分からなければ、ご使用中のルータをお知らせ頂ければ、お教えできると思います。


    【「つなぐ」の設定とスマホの設定】

    これ以外の細かい設定に関しては、<MVNO(データSIM)で「話し放題」を実現する 【つなぐ】>に記載しています。
    音質なども掲載していますので、よろしければご覧ください。



    【私が提供する「つなぐ」について】

    Linuxが扱えない人向けに、設定済みの【つなぐ】を販売しています。
    本来、やるならば、もっと大々的にやるべきだと思います。

    『話し放題・つなぎ放題でなんと2000円!ご購入はこちら!!』 みたいに(^_^;)

    ですが、【つなぐ】の販売に関しては、未だにいくつか迷い中でして、今は大々的に販売するつもりはありません。
    (考えがまとまったら、ちゃんとWEBサイトを立ち上げようかと思います。)

    今のところ簡易的なメールフォームしかありませんが、ご容赦ください。
    (セキュリティの都合上、外部のシステムを採用しています。)

    【つなぐ】オーダーフォーム

    なお、少なからずマージンは頂くので、接続できるようになるまでサポートします。


    【つなぐ】のオーダーは終了いたしました。
    本当はずっと続けていきたかったのですが、私の時間が無くなってしまったことと、実はかなりの赤字で販売していたことにより、継続が厳しくなってしまいました。申し訳ありません。


    【つなぐ】システムには以下のものを用います。
  • ハード:Raspberry Pi(model B+)+GP-71x
  • OS:Raspbian(Debian)
  • IP-PBX:Asterisk


    購入者には、最初にその回線を1人で使うか、複数人でシェアするかを決めてもらいます。

    初期設定として内線番号をいくつか用意しています。(増減可)
    → 6000番台 : 「6001」、「6101」~「6120」 (21個)
    → 7000番台 : 「7001」、「7101」~「7120」 (21個)

    内線番号とはスマホ1台1台に割り振る固有番号のようなものです。
    この番号に発信することにより、該当するスマホが着信します。(内線通話)

    回線をシェアするか否かで、この内線番号の発着信時の挙動が変わってきます。


    ◆ 1人(2人)で使う場合

    外線発信可能な内線を「6001」及び「7001」のみに限定します。
    「6001」はGP-712に接続した1台目の携帯からの発信となります。同様に「7001」は2台目の携帯からの発信となります。

    1台目の携帯への着信は「6001」が鳴動し、同様に2台目は「7001」が鳴動します。

    「6101」~「6120」及び「7101~7120」はすべて、普通の内線番号となります。
    内線番号間での通話はもちろん無料ですが、外線発信はできません。


    ◆ 回線をシェアする場合

    6000番台の内線番号から発信すると、GP-712に接続した1台目の携帯からの発信となります。
    同様に、7000番台は2台目の携帯からの発信となります。

    動作はどのようにでもカスタマイズ可能ですが、一例として以下のような動作があります。

  • 外線発信はすべての番号から可能。
  • 外線着信時は2パターンから選ぶ。
      → 決められた内線番号を鳴動させる。
      → どの端末も鳴動せず。
  • どの端末も鳴動させない場合は、その後の動作を次の2パターンから選ぶ。
      → 相手に呼出音「プルルルル・・・」を鳴らし続ける。
      → Asteriskの自動応答により「呼び出したい番号を入力してください」のガイダンスを流す。
  • ガイダンスの後に内線番号を入力することで、該当端末が着信する。
  • 最初から該当端末を着信させる場合は、以下を相手の電話帳に登録しておく。
     例) 話し放題回線番号:09012345678  内線番号:6110
     「09012345678,6110」または「09012345678P6110」
  • 間違った内線番号入力時には「内線番号が間違っています。もう一度入力してください。」のガイダンス。
  • 内線番号入力待ち状態は30秒(タイムアップで切断)。
  • 内線番号同士はすべて無料通話可能。


    ◆ 1回線を1人で使い、もう1回線をシェアする(GP-712限定機能)

    「6000番(携帯1台目)は自分で使って、7000番(携帯2台目)は回線をシェアしたい。」
    と言った設定も可能です。

    このように設定すると、6000番台の内線番号は「6001」のみ外線発信が可能となります。
    7000番代の内線番号は「7001」と「7101」~「7120」から外線発信が可能になります。
    内線通話は「6001」と「6101」~「6120」及び「7001」と「7101」~「7120」においてすべて無料です。

    このように、6000番台の動作は「1人(2人)で使う場合」と同じになり、7000番台の動作は「回線をシェアする場合」と同じ動作になります。




    【あとがき】

    ものを販売すると言うことは難しいです。
    4万円とか掛かるものを販売するわけなので、その責任の重さを感じます。
    また、ただ転売すれば良いわけではなく、個人個人で異なるシステムを構築します。

    オーダーメイド的にシステムを構築しますので、1台の制作にかかる時間は10時間程度だと思います。
    慣れればもっと時間は短縮できるのでしょうが、現在はそのぐらいです。

    もういっそのこと、マージンは0でもいいかなとも思ったのですが、色々悩んだ末、この金額に落ち着きました。
    お金とってごめんなさい。(>_<)


    おわりに。

    自分が作ったものを販売するということは、すごい面白いです。

    すでに、購入してくれた方が1人いたのですが、その人に沿ったシステムを構築するのが楽しすぎでした♪
    (まだ1台しか売れていませんが)新たな自己満を発見できました。