NoraVR
Nora Virtual Repeater(NoraVR)
【概要】
NoraGatewayの機能の一部として提供され、インターネット上に「仮想的」に設置されたDSTARレピータシステムを構築し、無線機やスマートフォン等から、DSTARリフレクタ並びにDSTARネットワーク(レピータ)に接続する機能を提供する
また、公開された仕様から、ユーザー側で自由にソフトウェアを構築可能
【仕様】
仕様書 Revision1(2020/02/02 発行) ※NoraGateway v0.1.5a~
【クライアント側実装例】
【既知の問題】
- 制御コマンド( U/ Iなど)のスペースは、アンダーバーに置き換えなければ使えません(_______U/_______I)
- Android端末により音声が乱れる場合がある、また送信できずに落ちる場合があるようです
- ショートメッセージにカタカナが入っていると文字化けを起こします
【動作環境について】
NoraVR(NoraGateway)サーバ側必要動作環境
- RaspberryPi 3B以上
- 10Mbps以上の安定したネットワーク
NoraVR(NoraGateway)サーバ側推奨動作環境
- TBD
illg.ddns.net(Port:52161)にてデバッグ用のNoraGateway(NoraVR)が動作しています
パスワードは何を入れても接続可能になっています。動作試験にどうぞ。
※NoraVRは、同じNoraVR(NoraGateway)に接続したユーザー同士で、NoraGatewayを共有しています。送信したデータ・音声は同じNoraVRサーバーに接続されたユーザーに全て送信され、リンクされたリフレクターやゲート超えからのデータ・音声は、同じく接続されたユーザー全てに送信されます。使用する場合には、数分間ワッチしてから使用していない事を確認してお使い下さい。
【公開サーバ一覧】
記事:NoraVR公開サーバ(旧公開サーバーリスト:NoraVR公開サーバ)
上記記事にて、有志により運用されたNoraVR(NoraGateway)一覧がありますので、自由にご利用下さい(NoraVR Client/NoraVR Remote Clientから接続可)
【動作確認AMBEサーバー&デバイス】
- ◯問題なし
AMBEServer(https://github.com/marrold/AMBEServer) + DVStick30 - ◯問題なし
AMBEServer(https://github.com/marrold/AMBEServer) + Star*DV - ◯問題なし
ポータブルAMBEサーバー2(https://ja1cou.wixsite.com/ja1cou/ambe) - △受信は問題ないが、送信が不安定(ただし、ポータブルAMBEサーバー2相当に改造を行えば問題なく動作します)
ポータブルAMBEサーバー(https://ja1cou.wixsite.com/ja1cou/ambe)
【ダウンロード】
NoraVR Client(Android単独音声端末アプリケーション)
【概要】
NoraGateway(NoraVR)に接続し、Android端末からDSTAR網/リフレクターへ接続するアプリケーション
【動作環境】
- AndroidOS 5.0以降
【使用に際しての注意事項】
※必ず、交信開始時に通信経路の確認を行って下さい
互いに交信が成立していても、設定を誤ると片通話などの事故が起きますのでご注意下さい
[Last Heard]には、[LOCAL]や[GW]などのルートが表示されますが、下記の意味合いとなっています
- [LOCAL ]
同じNoraVRサーバーに接続されたユーザーから発報されています
山かけCQで交信可能です - [ GW ]
リフレクター、もしくはゲート超え(コール指定・エリア指定)で発報されています
相手からの経路情報を聞き取り、リフレクターCQ・コール指定・エリア指定で交信可能です - [ CALL ]
あなたをコール指定で呼び出した場合に表示されます
コールサイン指定で呼び出して交信可能です
マイクレベルは下記くらいがピークになるように調整すると、無線機(純正マイク)から送信した時のレベルとおおよそ等しくなります
※MAXレベルに張り付くような過大入力をしますと、変調が歪みますのでご注意下さい
【ダウンロード】
2019/07/28 NoraVR Client Sample⑭
https://1drv.ms/u/s!Alt6WCVd8Pgfomlu4Mlvwj0l_htx
- タッチによるPTT操作に対応した(CONFIG→EnableTouchPTT)※誤操作に注意して下さい
- 低速データに埋めていたヘッダのCRCに誤りがあった問題を修正
- iTalkieに対応したかも(thanks Smart Reach LLC)※動作未検証
※CONFIG→Codec Typeにて音質と専有帯域を調整できますので、環境により設定してご使用下さい
特に200kb/s以下の低速回線の場合には、Opus64k以下を設定することをオススメします
- PCM
音質:高/帯域:高(概ね154kb/s) - Opus64k
音質:高/帯域:中(最大89.6kb/s) - Opus24k
音質:中/帯域:中(最大49.6kb/s) - Opus8k
音質:低/帯域:低(最大33.6kb/s)
2019/05/12 NoraVR Client Sample⑫
https://1drv.ms/u/s!Alt6WCVd8PgfoWe31VPuMS5gwfB6
- PTT登録の削除機能を追加
- 端末本体のスワイプボタンを操作して送信した際に、表示が乱れる問題を修正
2019/05/11 NoraVR Client Sample⑪
https://1drv.ms/u/s!Alt6WCVd8PgfoU-oYM5_HMyRCBWM
- 外部PTTに対応した
◯Bluetoothキーボード(リモートシャッターを含む)
→1回押すと送信、再度押すと停止します
◯Dellking系Bluetoothハンドマイク[H3-B/H2/U109など](※動作未検証)
→押している間だけ送信します
→動作検証していないので動作するかどうかは不明です
ダイソーのリモートシャッターを使用する場合、小さい方のボタンで登録することをオススメします
大きい方のボタンで登録しますと、リモートシャッターが接続されていない状態でも、端末本体のVOL-を押すと送信してしまいます
上記以外でお持ちのマイクが動作しない場合、Android端末をデバッグモードにして記録したlogcatを下記まで送りつけて下さい
→kenoh_doyu=アットマーク=txb.sakura.ne.jp
※Bluetoothのペアリングを済ませてからlogcatの記録を開始し、何回かPTTを押してlogcatを取得して下さい
※極普通のBluetoothハンズフリーマイクのボタンには対応出来ません(VOL+/VOL-/HOMEボタンのみのタイプ)
専用のPTTボタンがあるタイプのBluetoothマイクに対応します
2019/04/06 NoraVR Client Sample⑩
https://1drv.ms/u/s!Alt6WCVd8PgfoQPaBw__v4VbK_U4
- 受信したGPS位置情報の地図表示に対応した
- 受信したGPS位置情報の地図ポップアップ表示のON/OFFをConfig画面に追加
- Android7以前のバージョンでCONNECTを押した瞬間に落ちる問題を修正
2019/04/04 NoraVR Client Sample⑨
https://1drv.ms/u/s!Alt6WCVd8PgfoH7gg_cyEidWIs7s
https://1drv.ms/u/s!Alt6WCVd8PgfoH_V0E9i2TN3pUTv(上記で起動しないなど芳しくなかった場合)
- GPS(DV-G)位置情報送信機能を追加
- 定期的にリフレクターのリンク状態を問い合わせるように変更
- ショートメッセージの表示を追加
(NoraGateway v0.1.4a-dev5以上が必要です)
2019/04/03 NoraVR Client Sample⑧
https://1drv.ms/u/s!Alt6WCVd8PgfoHywQrhhIHX8eFjL
- ショートメッセージの送信に対応
- ビープ音のON/OFFを追加
- ビープ音のポップノイズを改修
- ヘッダ情報を埋め込むようにした
2019/03/26 NoraVR Client Sample⑦
https://1drv.ms/u/s!Alt6WCVd8PgfoHo1Ai4qwZ-qDAhW
- MIC GAINを追加
2019/03/25 NoraVR Client Sample⑥
https://1drv.ms/u/s!Alt6WCVd8PgfoHjR8cqoKWA0yic0
https://1drv.ms/u/s!Alt6WCVd8PgfoHkbkEepLMCFDdSQ(音割れする場合はコチラ)
- HISTORY画面のOK/CANCELボタンが画面外に消える問題を修正
- Bluetoothヘッドセットに対応
- ビープ音の音量を減音
- その他微修正
NoraVR RemoteClient(Windows/Linux無線ホットスポット構成アプリケーション)
【概要】
NoraVR(NoraGateway)に接続し、MMDVM/アクセスポイントモード・ターミナルモード/アナログ無線機を使用したホットスポットを形成するアプリケーション
【動作環境】
- Windows Vista/7/8/8.1/10(Oracle JRE8)(※AnalogModemPiGPIOは動作不可)
- RaspberryPi 3B/ZeroWH(Zeroでも問題なく動作します)
【ダウンロード】
2019/05/13 NoraVR Remote Client①
https://1drv.ms/u/s!Alt6WCVd8PgfoW3Bc9KyJ9RlEHTu
※MMDVM/TM/APを使用する場合には、NoraGatewayもv0.1.4a-dev6以上にバージョンアップして下さい
※このアプリケーションでは、ホットスポットのコールサインとして、ログインコールサイン(loginCallsign)を使用します。よって、ホットスポットに対するアクセスを行う無線機には、ログインコールサインをレピータコールサインとして設定し、アクセスする必要があります(DRモードの場合)。この時、接続先のNoraVR(NoraGateway)に設定されたレピータコールサインは関係ありません
【アナログ無線機を使用する場合の注意事項】
- ダッシュボードを動作させる為に、/opt/NoraVRRemoteClient/config/NoraVRRemoteClient.xml内のwebRemoteControlをtrueに変更して下さい
- ダッシュボードを動作させないと、宛先・自局コールサインを変更出来ません
(デフォルトではリフレクター宛になっており、自局コールサインはログインコールサインになっています) - RaspberryPi(BananaPi含む)専用
- サウンドカードが別途必要です(USBサウンドカード可)
- アナログ無線機とのインターフェース回路の自作が必要です
- ユーザーnoraなどの専用ユーザーを使用して動作させる場合には、dialoutの他、audio、gpioグループに属する必要があります
- 現状では、UR?/RPT?をアナログ無線機側で知る手段がありませんので、リフレクターやローカル(山かけ)で使用して下さい
(効果音を出力するなど検討中) - アナログノード用の無線機には、必ずトーンまたはデジタルコードなどのスケルチを必ず設定して下さい
【ダッシュボードのインストール方法(概要)】
- nginx(sudo apt install nginx)をインストールします(Apacheでも可)
- /etc/nginx/sites-available/defaultを編集し、下記にように変更します
# Default server configuration # upstream websocket { server localhost:3000; } map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80 default_server; listen [::]:80 default_server; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Note: You should disable gzip for SSL traffic. # See: https://bugs.debian.org/773332 # # Read up on ssl_ciphers to ensure a secure configuration. # See: https://bugs.debian.org/765782 # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; root /opt/NoraVRRemoteClient/dashboard/; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name _; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } location /socket.io/ { proxy_pass http://websocket; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } # pass PHP scripts to FastCGI server # #location ~ \.php$ { # include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): # fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
- /opt/NoraVRRemoteClient/dashboard/js/config.jsを編集し、serverAddressをダッシュボードを見る端末から見た時の、IPアドレスを入力します
- デバイスの外部からブラウザにてアクセスし、下記のようにGateway/Repeatersが正常に表示されれば動作しています
【設定パラメータ】
- AMBEサーバのIPアドレス
<DV3KServerAddress>XXX.XXX.XXX.XXX</DV3KServerAddress>
AMBEサーバが動作しているデバイスのIPアドレスを入力してください(localhost可) - AMBEサーバの待受ポート
<DV3KServerPort>2460</DV3KServerPort>
AMBEサーバのポート番号を入力してください(変更していなければ2460です) - ログインパスワード(クライアント側が接続する時に入力するパスワード)
<NoraVRLoginPassword></NoraVRLoginPassword>
このNoraVRに接続する際の認証に必要なパスワードを自由に決めて下さい(未入力可) - RFノードを許可するか
<NoraVRAllowRFNode>false</NoraVRAllowRFNode>
このNoraVRに実際にRFが出力されるクライアントの接続可否を設定して下さい - NoraVRに接続するユーザーの制限数
<NoraVRClientConnectionLimit>100</NoraVRClientConnectionLimit> -
AMBEパススルーを使用するか
<NoraVRUseCodecAMBE>true</NoraVRUseCodecAMBE> -
PCMコーデックを使用するか(音質:最良/通信帯域専有:高)
<NoraVRUseCodecPCM>true</NoraVRUseCodecPCM> -
Opus(64k VBR)コーデックを使用するか(音質:良/通信帯域専有:中)
<NoraVRUseCodecOpus64k>true</NoraVRUseCodecOpus64k> -
Opus(24k VBR)コーデックを使用するか(音質:中/通信帯域専有:小)
<NoraVRUseCodecOpus24k>true</NoraVRUseCodecOpus24k> -
Opus(8k VBR)コーデックを使用するか(音質:悪/通信帯域専有:最小)
<NoraVRUseCodecOpus8k>true</NoraVRUseCodecOpus8k>
【注意事項】
- 各コーデックを全てリアルタイムでエンコードする為、NoraGateway(NoraVR)を実行するデバイスは処理能力が必要です。
- 構成上、AMBEのエンコード・デコードを同時に行います。よって、AMBEサーバとNoraGateway(NoraVR)間のネットワークにおいては帯域に十分な余裕が必要です
- ユーザーアプリケーションによっては、法制上の問題で運用不可能な構成も構築可能ですので、運用する構成には十分な注意をお願い致します