2017年2月17日金曜日

DVAP、ノードアダプターV7をリピータ同様にするソフト(dv_ap)

Back


DVAPノードアダプターV7 をリフレクターなどに接続して利用されている方は多いと思います。 最近は、DVMEGA や、OpenSpot、DV4mini 等々新しいデバイスも増えてD-STAR以外にもその用途が拡がって来ています。 また日本のコールサインルーティング(ゲート越え)の世界にも「ターミナルモードやアクセスポイントモード(アイコム社)」が実装され、必ずしもリピータを通さずとも遠隔地と交信できるようになって来ました。

今回は、接続タイプのノードであるDVAP又はノードアダプターV7を、安田OM (7M3TJZ局)が作成された dv_ap というソフトを使って、アクセスポイントモードのようにコールサインルーティング用のアクセスポイント(ノード)に仕上げます。

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

説明文中ではDVAPを使用します。出力は10mWで最大でも100m位の範囲をカバーし、プライベートノードに適しています。またノードアダプターV7を使用した場合は、市販のデータ端子を持つFMアナログ無線機をD-STARの信号に変換する事によって、許可された出力の範囲で広域のノードとして利用できます。

ハードウェアの準備

  1. DVAPは、DVAP純正のソフトウェア DVAPTool で使用できていた物ならそのまま使用できます。 ケーブルは、タイプA<==>miniUSB の物が必要になります。

  2. ノードアダプターV7を使われる場合は、ノードアダプターV7(Satoshi Board)による自宅ノードを参照して、ハードウェアの調整を済ませて置いてください。
    また、ノードアダプターとFMアナログ無線機のデータポートを接続するDIN6ピンのケーブルも必要です。USBケーブルはプリンタ用のタイプA<==>タイプBの物となります。

  3. コントローラにはRaspberry Pi3 を使用しました。Wi-Fiモジュールもオンボードなので電源ケーブル以外は何も要りません。勿論、タイプA+やB+、Pi2等も問題なく使えます。 Raspbian Jessie は、Raspbian(Jessie)のインストール for HAM などを参照の上、接続したいルータにケーブル接続できる事を確認しておいてください。(最初はWi-Fi接続できません)

  4. もし、古いRaspberryPi A+,B+,2 等をお持ちの場合は、USBタイプのWi-Fi子機でも全く同じ設定内容で接続できます。私の場合、右写真の子機で、RaspberryPi3で完成したmicroSDカードをPiB+に差し替えるだけで問題なく稼働しました。

  5. WiFi接続したい場合は、Raspberry Pi で複数 Wi-Fi の切り替えをするを参照してください。

作業環境の構築

今までのように、いきなりリモート(SSH)でと言う訳に行かなくなりました。 セキュリティの為と思いますがデフォルトでは SSH が無効になっています。そこでディスプレイ・キーボードを接続して直接 Raspberry を操作しなければなりません。
  1. ログイン・ユーザ:pi    パスワード: raspberry でログインします。

  2. このまま直接 RaspberryPi 上で作業を進めても構いません。今回はWindowsマシンからリモートで操作したいので SSH を有効にします。

  3. $ systemctl list-unit-files
    

    sudo 無しで構いません, [space]でページ送りします。リモートで作業するのに必要なサービスは ssh.service ですが、disable になっているのが分かります。

    サービス名が分かっている時は次の方法でも判別できます。
    $ sudo systemctl is-enabled ssh.service
    disabled
    

    Windowsなど他のマシンからリモート出来るようにsshを有効にします。
    $ sudo systemctl enable ssh.service
    Synchronizing state for ssh.service with sysvinit using update-rc.d...
    Executing /usr/sbin/update-rc.d ssh defaults
    insserv: warning: current start runlevel(s) (empty) of script `ssh' overrides LSB defaults (2 3 4 5).
    insserv: warning: current stop runlevel(s) (2 3 4 5) of script `ssh' overrides LSB defaults (empty).
    Executing /usr/sbin/update-rc.d ssh enable
    Created symlink from /etc/systemd/system/sshd.service to /lib/systemd/system/ssh.service.
    

    再起動すると自動起動しますが、すぐに利用したい時は
    $ sudo systemctl start ssh.service
    

    とします。なお、ここでリモートする場合は、ifconfig でIPアドレスを確認しておいてください。

  4. ソフトウェアがインストール出来るように、また今後アップデートし易いように準備します。

  5. 特定のフォルダ内に、必要なソフトウェアの有り場所を記したリストファイルをダウンロードします。
    $ cd /etc/apt/sources.list.d
    $ sudo wget app.d-star.info/debian/jarl.list
    $ ls
    jarl.list  raspi.list
    $ cd
    

    上で設定した場所も含めて更新ファイルを検索、アップデートします。
    $ sudo apt-get update
    $ sudo apt-get upgrade -y
    

    ソフトウェアが一旦インストールされると、上記コマンドでソフトウェアの更新も認識されアップデートされます。

ソフトウェア(dv_ap)のインストールと環境設定

  1. dv_ap をインストールします。

  2. $ sudo apt-get install dv-ap
         :
    Install these packages without verification? [y/N] y
         :
    

  3. いくつかのファイルを、指定のフォルダにコピー又は移動します。

  4. 先ず、ファイルが格納されているフォルダへ入ります。
    $ cd /usr/share/doc/dv-ap
    

    フォルダが、初期には存在しない場合の、配布先フォルダを作成します。
    $ sudo mkdir /opt/dv_ap
    $ sudo mkdir /opt/dv_ap/etc
    $ sudo mkdir /opt/dv_ap/web
    

    次の各ファイルをそれぞれコピーします。
    $ sudo cp 99-dvap.rules /etc/udev/rules.d
    $ sudo cp dv_ap.css dv_ap.js logo.png /opt/dv_ap/web
    $ sudo cp dv_ap.conf.dvap /opt/dv_ap/etc/dv_ap.conf
    $ cd
    

    上の最終行は、DVAPの場合です。ノードアダプターV7の場合は次の様にコピーします。
    $ sudo cp /usr/share/doc/dv_ap.conf.node /opt/dv_ap/etc/dv_ap.conf
    

  5. dv_apの設定ファイル(dv_ap.conf)を編集します。

  6. $ sudo nano /opt/dv_ap/etc/dv_ap.conf
    
      GNU nano 2.2.6               File: /opt/dv_ap/etc/dv_ap.conf
    #########################################
    #                                       #
    #       /opt/dv_ap/etc/dv_ap.conf       #
    #                                       #
    #########################################
    #
    # Basic settings
    #
    TRUST_SERVER=trust.d-star.info
    
    #NODE_CALL=JL3ZBS B
    DVAP_CALL=JL3ZBS A
    GATEWAY_CALL=JL3ZBS A
    DEBUG=1
    DVAP_FREQUENCY=144550000
    
    ###### within -45 and -128
    DVAP_SQUELCH=-90
    
    ###### Calibration frequency within -2000 and 2000Hz
    DVAP_CALIBRATION=100
    
    ###### Auto Calibration 1:ON 0:OFF
    DVAP_AUTO_CALIBRATION=1
    
    # NIC=eth0
    NIC=wlan0
    
    ###### if port forwarding exists uncomment UPNP=0
    UPNP=0
    
    ###### sprit the TX/RX frequency
    #DVAP_TX_FREQUENCY=144550000
    #DVAP_RX_FREQUENCY=145550000
    
    #
    # DPRS settings
    #
    APRS_SERVER=d-prs.d-star.info:14580
    APRS_CALLSIGN=JL3ZBS
    RADIO_ID=P
    SEND_INTERVAL=60
    AUTO_RELINK=1
    BEACON_LAT=00.0000
    BEACON_LONG=000.0000
    BEACON_COMMENT=DV_AP D-PRS -> APRS
    BEACON_INTERVAL=1200
    
    #
    # Web Server setting
    #
    HTTP_PORT=8080
    
    
    [Ctrl]+[o],[Enter],[Ctrl]+[x]で保存・終了します。

  7. dv_apを自動起動するユニットファイルを作成する。

  8. $ sudo nano /etc/systemd/system/dv_ap.service
    
      GNU nano 2.2.6               File: /etc/systemd/system/dv_ap.service
    [Unit]
    Description=7M3TJZ DV Access Point (DVAP Tool for G1)
    After=network.target
    Wants=pforward.service
    
    [Service]
    Type=forking
    PIDFile=/var/run/dv_ap.pid
    ExecStart=/usr/bin/dv_ap
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    
    

  9. 要望サービス(必須ではないが起動可能なら欲しいサービス)としての pforward.service について次に説明します。

  10. 本来 dv_ap.conf 内で #UPNP=0 とコメントアウトして置くと、UPnP を dv_ap のプログラム内でコントロールする*1と言う意味になります。この場合既存のネットワーク設定としてルータのWANポートから dv_ap が稼働している Raspberry Pi のIPアドレスに対して、UDP 40000 ポートフォワードの手動設定は不要(UPnP機能を有効にして置く必要あり)となります。

    *1 従って、もし上記のコメントアウトした状態で自動応答が問題なく返ってきた場合は、
      この pforward UDP:40000 に関する記述は無視してください。
      ただし、同様にWEB用のポート TCP 8080 は開ける必要が有る為、ファイルは作成します。


    しかしこの機能はルータに依っては機能しない事があります。

    その場合の方法として、①Raspberry Pi のIPアドレスを固定参照)にし、手動でルータにポートフォワードを設定するか、②コマンド( upnpc -a PIのIPアドレス 40000 40000 udp )で UPnP の機能を使ってポートフォワードを設定するかになります。

    そこで、今回はWi-Fi接続する前提も踏まえて、接続と同時に、②の方法を使ってポートを自動で開けるようにします。ルータのUPnPを有効にして置く必要が有ります。

    先ず、次のようにソフトをインストールします。
    $ sudo apt-get install miniupnpc -y
    

    次に、自動でポート設定を行うスクリプトを作成します。
    $ sudo nano /usr/local/bin/pforward
    
      GNU nano 2.2.6               File: /usr/local/bin/pforward
    #!/bin/sh
    IPADDR=`ifconfig wlan0 | awk '/inet / {print $2}' | awk -F: '{print $2}'`
    echo $IPADDR
    upnpc -d 8080 tcp
    upnpc -d 40000 udp
    upnpc -a $IPADDR 8080 8080 tcp
    upnpc -a $IPADDR 40000 40000 udp
    
    
    [Ctrl]+[o],[Enter],[Ctrl]+[x]で保存・終了します。
    UDP 40000 のポートフォワードに関して、dv_apでコントロール出来ている場合は、2行分をコメントアウトするか、削除してください。

    作成したファイルを起動可能にします。
    $ sudo chmod 711 /usr/local/bin/pforward
    
  11. pforward を自動起動するユニットファイルを作成します。

  12. $ sudo nano /etc/systemd/system/pforward.service
    
      GNU nano 2.2.6               File: /etc/systemd/system/pforward.service
    [Unit]
    Description=uPnPc Port Forward Setting
    After=network.target
    
    [Service]
    Type=simple
    ExecStart=/usr/local/bin/pforward
    Restart=on-failure
    
    [Install]
    WantedBy=Multi-user.target
    
    
    [Ctrl]+[o],[Enter],[Ctrl]+[x]で保存・終了します。

  13. 自動起動を有効にし、確認します。

  14. $ sudo systemctl enable dv_ap.service
    $ sudo systemctl enable pforward.service
    $ sudo reboot
    

  15. 運用ログの表示

  16. $ sudo touch /var/log/dv_ap.log
    $ tail -f -n30 /var/log/dv_ap.log
    

    繰り返し現れるメッセージを省く場合
    (aprsに関するメッセージと自動でポートチェックするメッセージ)
    $ tail -f -n30 /var/log/dv_ap.log | egrep -v 'aprsc|M-SEARCH'
    

    WEBで管理する場合は、Raspberry Piが接続されているルータの外側のアドレス(同じLAN上で管理する場合は Raspberry Pi のIPアドレス)に ":8080" を付けて参照する。
Back


2 件のコメント:

  1. 自称職人さま

    さっそくFBな記事をありがとうございます。
    取り組んでみたいと思います。

    西宮の門前小僧

    返信削除
    返信
    1. 西宮の門前小僧さん、お久しぶりです。

      ターミナルモードと違って /JR3WZ A の様なエリアCQも出来ますので、FBですよ。
      では又、宜しくお願い致します。

      削除