Back
New style DVAP pi-zero W(2017.10.09) DVAP や ノードアダプターV7 をリフレクターなどに接続して利用されている方は多いと思います。 最近は、DVMEGA や、OpenSpot、DV4mini 等々新しいデバイスも増えてD-STAR以外にもその用途が拡がって来ています。 また日本のコールサインルーティング(ゲート越え)の世界にも「ターミナルモードやアクセスポイントモード(アイコム社)」が実装され、必ずしもリピータを通さずとも遠隔地と交信できるようになって来ました。
今回は、接続タイプのノードであるDVAP又はノードアダプターV7を、安田OM (7M3TJZ局)が作成された dv_ap(JARL D-STAR委員会版)というソフトを使って、アクセスポイントモードのようにコールサインルーティング用のアクセスポイント(ノード)に仕上げます。
ここでご紹介している D-STAR ネットワークへの接続ツール(各種ノード・DVAPなど)の運用においては
免許申請について(安田OMサイト)をご参照ください。
(2013年8月 ガイドラインが示されました。)
説明文中ではDVAPを使用します。出力は10mWで最大でも100m位の範囲をカバーし、プライベートノードに適しています。またノードアダプターV7を使用した場合は、市販のデータ端子を持つFMアナログ無線機の信号がD-STARの信号に変換され、許可された出力の範囲で広域のノードとして利用できます。
=MEMO= 2019年2月21日付けにて dv-ap V00.79 が発表されています。D-STAR仕様書#6に準拠した構成となったようです。OSは Stretch のみの対応(Buster未対応)となっています。
インストール方法については下記をご参照ください。新ゲートウェイ仕様に対応するためには早急にアップデートしてください。
ハードウェアの準備
- DVAPは、DVAP純正のソフトウェア DVAPTool で使用できていた物ならそのまま使用できます。 ケーブルは、タイプA<==>miniUSB の物が必要になります。
- ノードアダプターV7を使われる場合は、ノードアダプターV7(Satoshi Board)による自宅ノードを参照して、ハードウェアの調整を済ませて置いてください。
また、ノードアダプターとFMアナログ無線機のデータポートを接続するDIN6ピンのケーブルも必要です。USBケーブルはプリンタ用のタイプA<==>タイプBの物となります。 - コントローラにはRaspberry Pi3 を使用しました。Wi-Fiモジュールもオンボードなので電源ケーブル以外は何も要りません。勿論、タイプA+やB+、Pi2等も問題なく使えます。 Raspbian Jessie は、Raspbianのインストール for HAM などを参照の上、接続したいルータにケーブル接続できる事を確認しておいてください。(最初はWi-Fi接続できません)
- WiFi接続したい場合は、Raspberry Pi で複数 Wi-Fi の切り替えをするやテキストモードでWi-Fi接続を安定させる(Jessie)を参照してください。
もし、古いRaspberryPi A+,B+,2 等をお持ちの場合は、USBタイプのWi-Fi子機でも全く同じ設定内容で接続できます。
作業環境の構築
今までのように、いきなりリモート(SSH)でと言う訳に行かなくなりました。 セキュリティの為と思いますがデフォルトでは SSH が無効になっています。そこでディスプレイ・キーボードを接続して直接 Raspberry を操作しなければなりません。=MEMO= 現在、全くディスプレイ・キーボード無しで、SSHを有効に出来ることが分かっています。 OSのイメージを焼いた後、Windows上でmicroSDのドライブを開け、[新規作成]の「テキストファイル」で名前が「ssh(拡張子無し)」であるファイルを作っておくだけで、 立ち上げた時、即SSHで入れます。詳しくは⇨こちらをご覧ください。(2020.12.31更新)
- ログイン・ユーザ:pi パスワード: raspberry でログインします。
- このまま直接 RaspberryPi 上で作業を進めても構いません。今回はWindowsマシンからリモートで操作したいので SSH を有効にします。
- ソフトウェアがインストール出来るように、また今後アップデートし易いように準備します。
=MEMO= SSHを有効にした場合は、必ずパスワードを変更してください。 $ sudo raspi-config で変更するか、$ passwd と入力して変更します。
$ 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アドレスを確認しておいてください。
=MEMO= この項目は dv_ap が stretch のみの対応(2019/03)となってから、キーが変更されています。新規の方は勿論、Jessie からアップデートされる方も必ず実施してください。 その際旧 jarl.list は消してから行ってください。
特定のフォルダ内に、必要なソフトウェアの有り場所を記したリストファイルをダウンロードします。
$ cd /etc/apt/sources.list.d $ sudo wget –N http://app.d-star.info/debian/stretch/jarl.list $ ls jarl.list raspi.list $ cd
次にgpgキーをダウンロードし、追加します。
$ cd /var/tmp $ sudo wget -N http://app.d-star.info/debian/stretch/jarl-gpg.key $ sudo apt-key add jarl-gpg.key
アップデートの場合、上(jarl.list)で設定した場所も含めて更新ファイルが検索されます。
$ sudo apt update $ sudo apt upgrade -y
インストールの実行
$ sudo apt install dv-ap
ソフトウェアが一旦インストールされると、上記コマンドでソフトウェアの更新も認識されアップデートされます。
ソフトウェア(dv_ap)のインストールと環境設定
- dv_ap をインストールします。
- いくつかのファイルを、指定のフォルダにコピー又は移動します。
- dv_apの設定ファイル(dv_ap.conf)を編集します。
- dv_apを自動起動するユニットファイルを作成する。
- 自動起動を有効にし、確認します。
- 運用ログの表示
$ sudo apt install dv-ap : Install these packages without verification? [y/N] y :
先ず、ファイルが格納されているフォルダへ入ります。
$ 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/dv_ap.conf.node /opt/dv_ap/etc/dv_ap.conf
=MEMO=
Stretch(Raspbian 9)からLANインターフェースの記述が下記のように変わっています。
wlan0 ⇨ wlx0022cfea2fba
もし、互換性の為以前の記述にする必要が有る時は、次のようにしてください。
$ sudo nano /boot/cmdline.txt
GNU nano 2.2.6 File: /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait net.ifnames=0
末尾に net.ifnames=0 を追加する
下記に示す設定ファイルは、多くの機能を明示的に示しています。 必ずしも全部記述する必要は有りませんので通常はインストール時添付されている10行ほどのファイルで、コールサインを自分用に編集するだけで動きます。
$ 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 # Default NIC=wlan0 # Stretchの場合、LANインターフェース名が変わっています。 # NIC=wlx0022cfea2fba ###### 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 # # Echo Server setting (dv_ap 00.69 & later) # ECHO_SERVER=JL3ZBS A:JL3ZBS Z ECHO_POSITION_SEND_INTERVAL=3600 # # Access Status Server setting (dv_ap 00.69 & later) # STATUS=status.d-star.info:21050[Ctrl]+[o],[Enter],[Ctrl]+[x]で保存・終了します。
$ 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 [Service] Type=forking ExecStart=/usr/bin/dv_ap Restart=on-failure [Install] WantedBy=multi-user.target
$ sudo systemctl enable dv_ap.service $ sudo reboot
=MEMO= 表示の内容は DEBUG=0, 1, 2 のレベルで変更できます。冒頭のメモをご覧ください。
$ 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" を付けて参照する。
スマートフォンのテザリングWi-Fiによるモバイル運用
- dv_ap.config の変更
- スマートフォンに、外部グローバルアドレスから dv_ap が稼働しているローカルアドレスへポートフォワードするためのアプリをインストールする。
- Port Fowarder の設定
- スパナの形をした[ツールアイコン]をタップします。
- [IP Settings]をタップします。
- [Target IP]をタップして、dv_apが稼働している Raspberry Pi のIPアドレスを入力して[OK]します。
- [Public Intarface]を選択して rmnet_data0を選択したら、[戻る]をタップしてメイン画面にします。
- (+)ボタンの形をしたアイコンをタップして、次の2ポートを追加します。
- START をタップしてフォワーディングを開始します。
- テザリングWi-FiとホームルータによるWi-Fiを自動切り替えしたいような場合
- 先ず、UPnPの機能を使ってdv_apの機能(#UPNP=0の時動作)としてではなく、別途あたかも手動で既存設定が有ったかのように前もってポートフォワードを準備します。その為、次のプログラムを前もってインストールして置きます。(2017.07.11 追記)
- ユニットファイルを三つ作ります。まず一つ目はポートフォワードの設定を起動するファイルです。
- 次に、dv_apを立ち上げるユニットファイルを作成します。
- 三つ目に dv_ap の立ち上がるタイミングを採るファイルです。
#UPNP=0 と設定されている一行のコメントアウトマーク(#)を外し UPNP=0 とする。これはUPNPがゼロ(使用しない)という意味になります。
Fwd: port forwarder (2020.12.31現在使用中)
他にもいろいろ有ると思いますが、私はこれにしました。
incoming Port on this Device | 40000 | 8080 |
Port on Target Device | 40000 | 8080 |
Protocol | UDP | TCP |
これで、ホームルータに於いて、手動でポートフォワードしているのと同様の設定(スマホをアプリによってルータとして設定)をしている事になります。
通常、Raspbian Jessie を立ち上げると dhcpcd.serviceが自動的にIPアドレスを取りに行き、固定にする場合は /etc/dhcpcd.conf に固定アドレスを指定するなどします。ただ、今回のような場合固定アドレスは使用できません。その様な場合 dhcpcd では接続できない状況が発生したり、不安定になったりします。
そこで、dhcpcd.service は無効にして別の方法を使うと、家の近く50から100mくらいまではホームルータに接続していて、それ以上離れるとスマホテザリングに自動接続します。
詳しくは、テキストモードでWi-Fi接続を安定させる(Jessie)をご覧ください。
このケースでは、テザリングWi-Fi側でもホームルータ側でも、dv-ap.confの内容が同じで行けるように「既存のポートフォワード有り(UPNP=0)」で統一しています。
理由は、スマホ側では uPnP によるポート設定が出来ない為、必然的に UPNP=0 にならざるを得ないからです。
次に、このような UPNP=0 であっても、DHCPで取得したアドレスに対してポートフォワードを自動設定する方法(dv_apが行っているのと同じ方法)と、自動起動について説明します。
$ sudo apt-get install miniupnpc $ upnpc -l ポートフォワードの一覧 $ upnpc -a 192.168.10.100 40000 40000 udp 対象アドレス 対象ポート 外側ポート プロトコル $ upnpc -d 40000 udp ポートフォワードを削除
$ sudo nano /etc/systemd/system/pforward.service
GNU nano 2.2.6 File: /etc/systemd/system/pforward.service
[Unit] Description=uPnPc Port Forward Setting [Service] Type=simple ExecStart=/usr/local/bin/pforward Restart=on-failure [Install] WantedBy=Multi-user.target
更にサービスによって起動される設定用のスクリプトです。
$ sudo nano /usr/local/bin/pforward
GNU nano 2.2.6 File: /usr/local/bin/pforward
#!/bin/sh ### Stretch IPADDR=`ifconfig enxb827ebdabb1c | awk '/inet / {print $2}'` ### Jessie # 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]で保存し終了します。
$ sudo chmod +x /usr/local/bin/pforward $ sudo systemctl start pforward.service $ upnpc -l実行可能ファイルに設定して、start した後、リストアップコマンドで確認します。
$ 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=systemd-networkd.service Wants=pforward.service [Service] Type=forking ExecStart=/usr/bin/dv_ap Restart=on-failure
Wants= に示されるサービスは、このdv_ap立ち上げに欲しいサービスです。同様に必要なサービスの場合、Requires= という表現が有りますが、 この場合、pforward.service が失敗するとこのサービスも失敗します。つまり、テザリングの場合uPnPは失敗しますので dv_ap も立ち上がらなくなります。
$ sudo nano /etc/systemd/system/dv_ap.timer
GNU nano 2.2.6 File: /etc/systemd/system/dv_ap.timer
[Unit] Description=dv_ap Start delay timer [Timer] OnBootSec=60sec # or 1min #Unit=dv_ap.service [Install] WantedBy=timers.target
ブートアップしたタイミングから30秒後に、Unit= で締めしたサービスを実行します。但し、ファイル名が同じ場合(dv_ap.service と dv_ap.timer)記載する必要は有りません。
また、通常 .service ファイルには [Install] セクションが無いと起動しませんが、今回のようにタイマーを設定する場合、そちらのファイルに存在すれば不要です。
$ sudo systemctl enable dv_ap.timer
タイマー用のファイルのみ自動起動(enable)に設定します。これで dv_ap.timer が 30秒後に dv_ap.service を立ち上げ、その中で pforward.service が呼ばれます。
これで、リブートすればテザリングWi-FiでもホームルータのWi-fiでも自動に立ち上がります。また、モバイル運用から自宅に戻り、スマホのテザリングをOFFにするだけで自動的にホームWi-Fiへの切り替えもできます。
73 J E 3 H C Z
Back
自称職人さま
返信削除さっそくFBな記事をありがとうございます。
取り組んでみたいと思います。
西宮の門前小僧
西宮の門前小僧さん、お久しぶりです。
削除ターミナルモードと違って /JR3WZ A の様なエリアCQも出来ますので、FBですよ。
では又、宜しくお願い致します。