2013年4月23日火曜日

アナログFM機とネットブックだけで出来るノードに挑戦(Sound Card Repeater)

Back



 今年に入ってからircDDB Gateway & PC Repeater Controller グループの開発が目立って活発になっているように感じます。
DVAP Node + ircDDBGatewayDummy Repeater + ircDDBGateway についてはすでにレポートしましたが、まだまだ楽しめそうなソフトウェアが一杯です。
 今回はパソコンのサウンドカードに対する入出力(Mic/Speaker)をアナログFM機のデータ端子に接続し、Sound Card Repeater というソフトウェアでコントロールすることによりアクセスポイントノードを構成してみることにしました。

ここでご紹介している D-STAR ネットワークへの接続ツール(各種ノード・DVAPなど)の運用においては 免許申請について(安田OMサイト)をご参照ください。 (2013年8月 ガイドラインが示されました。)

サウンドカード・リピータ/ノードの免許申請に必要な書類は,送信系統図(例:当局が使用したもの)と下記のインターフェースケーブル図です。 使用するノード用FM無線機の出力ワット数やケーブルの接続方法により,TSSでの保証認定が必要になります。詳しくは前もって各地の総合通信局へお問い合わせください。
(添付書類に関して JF1CXH,JH7OMK 各局のご協力を得ました。)
  1. パソコンと無線機を繋ぐケーブルの作成
  2. Sound Card Repeater 用ケーブル(TH-F7用)の作成もご参照ください。

     パソコンのスピーカーを無線の[AF IN]に入れ、無線の[AF OUT/9600bps]をパソコンのマイクに接続、DSUB 9ピンの COM ポートから RTS 信号を取り出して PTT をコントロールするということになります。
     DSUB 9ピン コネクタと6ピン DIN コネクタとはケーブルのハンダ付けをする面のピン配列です。つまりケーブルが刺さる相手機械側のピン配列と同じです。 6ピンDINは市販のこネクターが微妙に無線機の奥に刺さり切っていないことがあるので注意が必要です。
    ケーブル作成についてご協力いただいた各局に感謝致します。
    岡野さん(JF1CXH)、福田さん(JR1BFJ)、小川さん(JH7OMK)

     ネットブックのようなパソコンの場合、DSUB 9ピンのシリアルポートが付いていない場合がほとんどです。 私の場合は手元にあった「ELECOM」製の UC-SGTというUSB-シリアルコンバータを使いました。 コンバータケーブルを刺して次のような方法で認識しているか探ることが出来ます。
    $ dmesg | grep serial
    [13738.926561] pl2303: Prolific PL2303 USB to serial adaptor driver
    $ dmesg | grep pl2303
    [13738.926502] usb 4-1: pl2303 converter now attached to ttyUSB0

     その他関連コマンドとしては次のようなものも知ることが出来ました。
    $ lsusb
    $ usb-devices
     

  3. パソコンの準備

  4.  眠っているパソコンを利用したかったため、今回はLinuxをインストールしたマシンを使用する事にします。仕様は次のとおりです。 決してパワーのあるものではありませんので、普通にお使いのパソコンなら何でも問題はないでしょう。
    • acer ASPIRE one(CPU: Intel Atom N270 1.60GHz)
    • linux: Debian 6.0.7 Squeeze
    • 2013年5月 Squeeze にかわる安定版として Debian 7.0 Wheezy がリリースされましたが、同様に稼働することを確認致しました。
    • デスクワーク用としてインストールしたものでサウンドが正常に稼働している。
     新たにLinuxをインストールしてみようとされる方は、「眠っていたパソコンがLinux (Debian) で蘇る」をご覧になってください。
    =MEMO=
     Windowsでやってみたい方は、次項のソフトウェアをダウンロード、インストールした後は、すぐ調整に入れます。



  5. ソフトウェアの準備

  6. 最新β版 Yahooグループに登録している方
    http://groups.yahoo.com/group/ircDDBGateway/files/Beta/ にある
      ircDDBGateway-2013mmdd.zip と ・http://groups.yahoo.com/group/pcrepeatercontroller/files/Beta/ にある
      Repeater-2013mmdd.zip

    =MEMO=
    Windowsの方は上記ファイルの拡張子が、「.exe」のものをダウンロードしてダブルクリックするだけです。
    Program Files内にircDDBGatewayとRepeaterというフォルダーが出来ます。

    Linuxでインストール作業などをすると、コマンドモードで「デスクトップ」や「ダウンロード」というような日本語を打つのが面倒だったり、ミスが増えたりします。 好みによって元々の英語名に戻すことができます。
    $ sudo apt-get install xdg-user-dirs-gtk  # 既にインストールされていれば最新と表示される。
    $ LANG=C xdg-user-dirs-gtk-update
    $ ls                 # 確認します。
    Desktop Documents Downloads Music Pictures Public Templates Videos

    再起動したとき、今度は英語名を日本語にするかと聞かれますので、「今後聞かない」「そのままにする」を選択してください。
     なお、上記の様に sudo を実行したとき「ユーザーがsudoグループにありません」のようなエラーが出たときは次の様にしてください。
    $ su
    パスワード:              # インストール時 root(管理権限者)に設定したもの
    # adduser USERNAME sudo      # USERNAME=今ログインしているユーザ名
    # visudo               # 下記ファイルを開きユーザを追記する
     GNU nano 2.2.6          File: /etc/sudoers.tmp

         :
    # User privilege specification
    root      ALL=(ALL) ALL
    USERNAME   ALL=(ALL) ALL



  7. ソフトウェアインストールの前処理

  8.  Windowsはダブルクリックして、インストールでいいのですが、今回はテキストファイルのプログラム(Source Program)をインストール可能な形式に翻訳(コンパイル)して、 さらにインストール作業をします。したがってコンパイルの時、他にも必要な関連ファイルがありそれを前もって揃えてやっておく必要があります。 次のとおり順番にインストールしてください。
    (一行に書く方法もありますが取りあえず一歩ずつ)
    $ sudo apt-get install wx2.8-headers
    $ sudo apt-get install wx-common
    $ sudo apt-get install libwxgtk2.8-0
    $ sudo apt-get install libwxgtk2.8-dev
    $ sudo apt-get install libwxbase2.8-0
    $ sudo apt-get install libwxbase2.8-dev
    $ sudo apt-get install portaudio19-dev
    $ sudo apt-get install libportaudio2
    $ sudo apt-get install build-essential
    $ sudo apt-get install libusb-dev
    $ sudo apt-get install g++
    $ sudo apt-get install libusb-1.0-0
    $ sudo apt-get install libusb-1.0-0-dev


  9. ソフトウェアのコンパイルとインストール

  10.  Webよりダウンロードしたとき、Linuxパソコンの「ダウンロード」(今後 Downloads に名前変更したとして続けます)にファイルを置いたとして、
    $ cd Downloads
    $ sudo unzip ircDDBGateway-2013mmdd.zip  # mmdd は実際は月日
    $ sudo unzip Repeater-2013mmdd.zip

     この結果「ircDDBGateway」「Repeater」という二つのフォルダが作成されますので、それぞれのフォルダ内でコンパイルとインストールをします。
    $ cd ircDDBGateway
    $ sudo make
    $ sudo make install
    $ cd ../Repeater
    $ sudo make
    $ sudo make install
    $ cd               # Home ディレクトリへ戻っておく

     これから、テストで何度も立ち上げたり終了したりしますので、簡単な立ち上げスクリプトを作っておきましょう。
    $ sudo nano ~/sc         # ~/ はHomeディレクトリの意味です。

     GNU nano 2.2.6          File: sc

    cd /usr/local/bin
    sudo soundcardrepeater -gui &
    sudo ircddbgateway -gui &

     [Ctrl]+ O(オウ)→[Enter]→[Ctrl]+ X で保存して閉じます。
    $ sudo chmod +x sc        # eXecutable(実行可能)ファイルにする
    $ sudo ./sc            # ドット、スラッシュを付けて立ち上げる
    [sudo] password for debian:


  11. ircDDB Gateway の設定

  12.  次の様に入力して設定画面を立ち上げます。
    $ cd /usr/local/bin
    $ sudo ircddbgatewayconfig


    ircDDB Gateway 初めての設定を参照してください。

  13. Sound Card Repeater の設定

  14. ircDDBGatewayの図1、図2と設定を合わせる。
    Beaconを1分に設定し、後ほど音声テスト(TX)をし易くしておく。
    後ほどの調整はこの2画面で作業がもっとも多くなる。 先ずInputとOutputのデバイスが自動で表示されているかがもっとも大事である。

    [PTT Delay]は最初少なくとも400ms位に設定しておき調整で詰めていく。
    このサイズのパソコンでは図の様に設定画面の下部が欠けて保存ボタンが見えません。 タスクバーを隠すか、既定で[OK]が選択されていますので、そのまま[Enter]してください。

     送受信の調整以外の設定が正しく行われていると、この時点で ircDDBGateway の方は、ircDDB: ConnectedJE3HCZ B Linked to REF047 Cと表示されます。 また、Sound Card Repeater の方は、Ack Text: Linked to REF047 Cと表示され(これがアナウンスされる)、Beacon のカウンターが動いているのが確認出来ます。

  15. 全体的な調整作業

  16. Advanced Linux Sound Architecture(ALSA)の調整

     まず、音源が正常に作動しているかチェックしてみます。次のコマンドはルート権限で実行するのは好ましくないとの記述がありました。
    $ alsamixer


     特にアウトプット(今回の場合ヘッドフォン)とマスターボリュームを最大にしておきます。 インプット(マイク)に関しては直接ドライバーをコントロールしているのか、私の場合図の様にミュートしておいても問題なく無線機からデータをインターネット側に流しています。 場合によってマイクもゲインを上げておく必要がある場合があるのかも知れません。通常のヘッドセット用マイクを繋ぐときは当然必要と思います。 スピーカに関してはデータ音がけたたましく鳴るのでミュートします。
     操作方法は、[F3][F4][F5]で「再生」「録音」「すべて」を切り替え、[F6]でもし複数の音源がある場合セレクト出来ます。 また、[←][→]で横移動し、[↑][↓]でゲインコントロールします。[5]を押して「50%」という指定も出来ます。また「ミュート」の設定解除は[M]を押します。 [Esc]を押すと終了します。
    $ sudo alsactl store

     上記のコマンドで設定を保存します。この時はルート権限で実行します。ただし、パソコンを再起動させなければ設定は継続されますので調整中は立ち上げっ放しでもいいでしょう。

    =MEMO=
     図の様にグラフィック画面(スピーカマークから入る)で設定する事も可能です。両方立ち上げて連動の具合や保存はどちらが優先かなどを知っておくとトラブルが少なくなると思います。

    インプット(RX)の調整

     さて sudo ./sc を使ってソフトを立ち上げてみます。リピータ、ゲートウェイの順に立ち上げるようスクリプトに書いてあるので、うまくいくと接続の声が聞こえて来るかも知れません。 でも、現実は相当に苦労すると覚悟した方が良さそうです。パソコンとの相性問題というような厄介な状況も起こり得るのです。
     RXとはアクセスポイントとしてのサウンドカード・リピータの受信であるので、運用する者としてはハンディ機等で送信してみます。 RX State: Proccess DataRPT1: JE3HCZ B RPT2: JE3HCZ Gが表示されたら送信されています。 もし、他の接続デバイスがあれば同じところに接続してモニターしてみると分かりやすいと思います。 RX の調整の方が調整要素が少ないので、まずここを抑えてインターネット側に声が出ている様なら、 エコーサーバ(REF047 Eなど)に接続しエコーでサウンドカード・リピータのTXを調整するといいでしょう。
     もしアクセスできない時は、図の RX Level を調整してみます。それでもダメな時は RX Inversion を切り替えてみましょう。

    アウトプット(TX)の調整

     さて、TX の調整はいろんな要素が絡み合います。音源としては ALSA の設定が出来ていればまず問題とならないでしょう。 通常DV機の送信する電波を、他のアナログFM機で受信すると「ピッザーーー」という音に聞こえます。 最初の「ピッ」がヘッダー部分で、続く「ザー」が音声データです。基本的にこの音がサウンドカード・リピーターから出力され(TX=ヘッドフォン端子で聞ける)、それがケーブルを通じてノード用アナログ無線機から送信され、DV機でそれを受ければ 音声が返ってきたことになります。すなわちDV機と同周波数のアナログFM機をもう一台用意できれば(最悪DV機をFMモードにする)、その返ってきた「ピッザーー」の音の大きさを聞きながら調整出きるというわけです。これはとても楽で、私の場合決め手となりました。
     アナウンスやエコーバックを頼りに、TX Level をゆっくりスライドします。マウスでやり難ければ、矢印キーでスムーズにスライド出来ます。まず音源のALSAが100%ですので、最小の0%から徐々に上げながら調整します。 もし音が100%でも聞こえなかったら、TX Inversion のON/OFFを切り替えてみましょう。
     反応するところが「0%」付近であまりにシビアな場合は、ALSA音源のボリュームを段階的に下げて、相対的にソフト側レベル調整を中程の調整し易い所に移動すると良いでしょう。

  17. 電源を入れるだけの自動起動

  18.  例えばノード専用パソコンとして電源を入れたらログインをすることなく基準設定した接続先に繋がってくれれば便利です。
     前述の立ち上げコマンド用スクリプト sc では ircddbgatewaysoundcardrepeaterを立ち上げました。 ここでは、Windowsのサービスのようなデーモン(Daemon)を起動します。(ircddbgatewayd soundcardrepeaterd)  まず次のファイルを作成してください。
    $ sudo nano /etc/init.d/dstarnode

     GNU nano 2.2.6          File: /etc/init.d/dstarnode

    #!/bin/bash
    ### BEGIN INIT INFO
    #Provides: dstarnode
    #Required-Start: $syslog
    #Required-Stop: $syslog
    #Default-Start: 2 3 4 5
    #Default-Stop: 0 1 6
    #Short-Description: D-STAR Node
    #Description:
    #
    ### END INIT INFO
    #!/bin/sh
    # /etc/init.d/dstarnode
    #
    
    case "$1" in
        start)
            /usr/local/bin/soundcardrepeaterd -daemon &
            sleep 5  # *1下記参照
            /usr/local/bin/ircddbgatewayd -daemon &
            echo "Starting D-STAR Node ... "
            ;;
        stop)
            pkill ircddbgatewayd
            pkill soundcardrepeat
            echo "D-STAR Node has been stopped. "
            ;;
        restart)
            pkill ircddbgatewayd
            pkill soundcardrepeat
            /usr/local/bin/soundcardrepeaterd -daemon &
            sleep 5  # *1下記参照
            /usr/local/bin/ircddbgatewayd -daemon &
            echo "Restarting D-STAR Node ... "
            ;;
            *)
            echo "Usage: /etc/init.d/dstarnode {start|stop|restart}"
            exit 1
            ;;
    esac
    
    exit 0
    
    

    *1 ircDDBGatewayの立ち上がりが早いと「Linking to....」が一度流れて、しばらくして接続が完了したときもう一度「Linked to...」と2度アナウンスされるのでタイミングを調整します。(無くても良い)

     次に、作成したテキストファイルを立ち上げ可能に属性変更し、自動立ち上げリストで自動起動をONにします。
    $ sudo chmod +x /etc/init.d/dstarnode
    $ sudo apt-get install chkconfig         # すでにインストールされていれば不要
    $ sudo chkconfig dstarnode on

     これで、再起動すれば自動起動します。なお、ログインして手動で止めたり、起動したりは次の様にします。
    $ sudo /etc/init.d/dstarnode start
    $ sudo /etc/init.d/dstarnode stop
    $ sudo /etc/init.d/dstarnode restart

     グラフィックなアプリを[$ sudo ./sc]で立ち上げて調整し、終わったら上のコマンドでデーモンの様子を見ると言うような作業ができます。

    Back


    73
    J E 3 H C Z @REF047 C

8 件のコメント:

  1. 藤堂様
    いつも大変お世話になっております。HPを拝見して実験できそうな事から楽しませてもらっております。
    ircDDBGatewayとRepeaterをダウンロードしてインストール後にスタートさせてみたところ、構成が正しくないという警告が出て止まってしまいました。
    Jonathan Naylor, G4KLX OMの、Repeater Usage というPDFを見たところ、Software の項目に
    install a copy of the latest Visual C++ run-time libraries from Microsoft. とあり、リンク表示されていた
    http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-
    074b9f2bc1bf&displaylang=en. からダウンロードしてインストールしたところ、うまく動き出しました。 参考になればと思い投稿させて頂きました。

    返信削除
  2. 吉田様
    コメント有り難うございます。たまたま私のPCにはVisual Stadioが入っており気がつきませんでした。Windows版で試される方にはとても参考になると思います。今後ともよろしくお願い申し上げます。

    返信削除
    返信
    1. Visual C++ runtimeは、一般ソフトとしてウィルスバスターや弥生会計(?)などVisual C++で書かれたものをお使いの場合は入っている場合があります。
      その場合「プログラムの追加と削除」に[Microsoft Visual C++ 2008 Redistributable]という行が確認できると思います。

      削除
  3. 藤堂 OM

    本ページに記載の情報のお蔭でシステムが動き出しました(Windows)。
    デジモード用I/FのTI-5のD-SUB25PにP/S2ケーブルをパラ接続してI/Fを無理に供用。
    ① PTTがデジ端子とデータ端子間で干渉するので、どちらかを選択しなければならない。
    ② 両モードでIN/OUTレベルが大きく異なる
    以上2点の本質的でない問題があります。DCS021Zに接続してテスト中!

    73 dde JA1SCW 日下@オリーブの島、小豆島

    返信削除
    返信
    1. 日下様

      先ほどから DCS021 Z への接続確認いたしております。
      非常にうれしく思っております。各局のお陰です。

      削除
  4. 藤堂 OM

    その後、IC-706MKIIGM+自作USB I/F(Sound+PTT)でもDCS021Z接続で正常動作を確認できました。今後Matrix CircuitsのNode Adapterも試して見るつもりです。

    http://aarc.sns.fc2.com/archives/member/91746/origin/2013/08/8b3000.jpg

    73 de JA1SCW 日下@オリーブの島、小豆島

    返信削除
    返信
    1. 日下様

      おめでとうございます。またお声も聞かせてくださいね。
      Node AdapterをGMSKrepeaterでドライブするのが最も実用的にみて安定稼働するようです。
      写真は何でしょう・・?サウンドカードリピータの完成形のような?DVアダプタでしょうか。

      削除
  5. 藤堂 OM

    REFでコールさせていただきます。お相手の程よろしくお願いいたします。写真は元々はPSK31用に自作したI/Fで、それをDVに流用してみました。予想通り上手く動作しています。手前味噌になりますがUSB Hub以外は基板製作を含め全て手作りです。

    73 de JA1SCW 日下@オリーブの島、小豆島・・・滅茶苦茶、暑い!!

    返信削除