ICOM IC-7300 と RS-BA1 Version 2 でリモート操作

ICOMのアマチュア無線機をリモートから操作するためのソフトウェアで RS-BA1 というものがある。2年ほど前に購入したが使っていなかったが、そろそろ稲取サイトに電源を引こうとしているので、リモートから操作できる無線局構築のために、真面目に使ってみることにした。 市販のソフトウェアだから簡単に動くだろうと思ったのだが、ちっともそんなに簡単につながらなかった。ということで、ハマリポイントを明示しながら、私なりの解説を書いてみる。


基本的な構成

RS-BA1を使う場合は、下記のこれらものが必要である

  • ICOMの無線機。 今回は私が持っているIC-7300を使う。
  • 無線機側(サーバ側) のWindows PC。 今回はちょっと古いIntel NUCにWindows 10 Proを入れて使っている。 TPMとか入っているのでBitLockerのDisk暗号化もでき、遠隔地で盗難にあってもデータ流出の危険性が少ないかなと思って。
  • 操作側 (クライアント側) の Windows PC。 今回は手元にあるマウスコンピュータのWindows 11が入ったPC
  • 操作側で音声を使った交信を行うならば、相応なマイクなど。
そして、リモート操作を行うソフトウェアであるRS-BA1。 RS-BA1はサーバ側・クライアント側の両方にインストールする。

私の理解した無線機からサーバPC、クライアントPCまでの流れはこの様になっている。


  • 無線機内では、USB Hubの先にUSB SerialとUSB Audio がつながっている。USB Serialは無線機のマイコンとつながり、CI-Vでのコマンドが交換できる。USB Audioは無線機の受信音や送信時の変調音を送受信できるようになっている。
  • 無線機とつながるサーバ側のPCのでは、Remote Utilityの制御用コマンドをUDP 50001で交換できるようになっており、USB SerialなどのSerial portで送受信するCI-Vの内容はUDP 50002で交換でき、USB Audioからの音声データはUDP 50003で送受信している。
  • 利用者側のクライアントPCでは、Remote UtilityとRS-BA1 Remote Controlの2つのアプリで仕事を分担するようになっている。
    • クライアントPCのRemote Utilityは、UDP 50001でサーバ側のRemote Utilityと制御用コマンドの送受信を行い、UDP 50002のCI-Vコマンドは仮想シリアルデバイスに送っている模様。UDP 50003の音声情報は手元PCのスピーカマイクに入出力する仕事をしているようだ。
    • RS-BA1 Remote Controlは無線機の操作パネルに相当するユーザインタフェースを持ち、仮想シリアルデバイスを介してCI-Vコマンドを送受信する。この仮想シリアルデバイスはRemote Utilityも送受信している。
    • 無線機の操作をするCI-Vコマンドは、RS-BA1 Remote Control - 仮想シリアルデバイス - Remote Utility と渡って、サーバ側のRemote Utilityと UDP 50002 で通信する。

無線機側(サーバ側) の構築


今回の構築の前提はこんな具合です。
  • 対象機種はIC-7300です。
  • IC-7300とPCはUSBで接続しています。無線機の制御と受信・送信の音を、IC-7300のUSBポートを介してやり取りします。
基本的に「ICOM Remote Utility」の設定だけを行います。設定後の各項目をつらつらと説明してみます。
  • 無線機との接続は、「ICOM Remote Utility」のメニュー「オプション」→「ローカル/サーバ設定(L)」を選んで、登録無線機一覧から該当の無線機を選択し、右下の「プロパティ」を押すと、設定項目が出てきます。
  • 接続機器タイプは「無線機」になります。
  • 機種名には、任意の機種名を入力します。
  • 「CI-V」のところのチェックは入っていても入っていなくても、どちらでも動きます。
    • IC-7300はCI-Vにチェックを入れた場合、IC-7300ではCI-Vアドレスに94を入力します。 IC-7300の Firmware version 1.40 以降の場合は、ボーレートには 115200bps に設定可能です。それより古いFirmwareの場合は19200bpsまでだったり、リニアをつないでいる場合は9600bpsに設定されている方も居るようです。
    •  詳細は未確認ですが、チェックが入っているとその内容が操作側・クライアント側に伝えられるような挙動をとるみたいです。
  • 「COMポート/オーディオ設定」はオートを選択します。
    • Remote Desktopを使っていてローカルのオーディオを使う設定をしていて、無線機に備わったUSB Audio deviceが使えない場合は、このAutoの設定が出てきません。後述します。

ハマリポイント: Remote Desktopでのリモートオーディオ

無線機側(サーバ側) を設定するときに、Remote Desktopを利用している場合は注意が必要です。Remote Desktopではログインした先で動かすWindowsアプリケーションの音の入出力を、Remote Desktop接続元のPCのスピーカマイクを使うような事ができます。この場合、Remote Desktopでログインして起動したアプリからは、サーバ機についているスピーカマイクなどのAudio Deviceへの入出力経路が切られるようです。
この状況を回避するために、Remote Desktopの接続先設定の「ローカルリソース」→「リモートオーディオ」設定で(アプリからの音を)「リモートコンピュータで再生する」といった設定が必要です。または TightVNCなどの別の実装を使っても良いかもしれません。



アプリからの音がログイン先のサーバから出ても困るでしょうし、通話アプリの音声も手元のPCのマイクのものを使いたくなるのは、本来のRemote Desktopの使い方としては合理的でしょうしね。
先述の「COMポート/オーディオ設定」など、無線機のUSBポートの先にあるはずのUSB Audio Codecデバイスが選択できなくなっており、何が起きているのか理解するのに時間がかかりました。

ハマリポイント: Remote Utiliyの無線機一覧について

Remote Utiliyの無線機一覧ですが、サーバ側でも無線機一覧にサーバに接続した無線機が登場します。この表示は、同一マシン内でクライアント・サーバ両方の処理を行う local loopback のものです。他のマシンから利用する場合には特に設定する必要はありません。


ここに受信音・変調音の入出力に利用するサウンドデバイス一覧がありますが、ここは無線機・PC間のサウンドデバイスを設定する場所ではなく、サーバ機内で操作するときの無線機の受信音・変調音の入出力を行うデバイスを指定します。 サーバに接続した無線機をRemote Utility経由でサーバ内で接続し、サーバ機内で Remote Control アプリを使って操作をするときに、このエントリを使うようです。通常はサーバ機につないだスピーカ・ヘッドホンやマイクとなるデバイスを指定することになりそうです。

操作側(クライアント側)の設定

操作側(クライアント側)もサーバ側と同じくRS-BA1をインストールします。
まずはRS-BA1の Icom Remote Utilityを起動して、クライアントからサーバへの接続設定を行います。
接続先にはIPアドレスを入れるなどします。

Icom Remote Utilityで「無線機一覧」にある無線機の接続ボタンを押すと、手元のPCのスピーカなどから無線機の受信音が出てきます。


(途中諸々省略:  あとで書きます)

ハマリポイント: 接続方法は「USB」で、REMOTEではありません。

理由はよくわかりませんが、RS-BA1 Remote Controllアプリでの接続設定で、IC-7300とサーバ機がUSBで接続されている場合は、接続方法のところを「USB」にする必要があります。 ここの選択肢には「REMOTE」と「USB」の2つが選べられ、クライアントPCからのリモート接続なので「REMOTE」を選んでいたのですが、どうやらサーバ機と無線機の接続方法を選ぶようです。そんなの気づくかよ!(笑)


ここに気づくのに2日ぐらいかかりました。

ハマリポイント: 無線機の受信音・変調音はRemote Utilityが取扱う

無線機からの受信音、無線機への変調音は、サーバとの接続を担うIcom Remote Utilityが手元PCのスピーカマイクへの入出力を行います。 操作するアプリのRS-BA1 Remote Controlが行うのかと思いきや、そんな事はありませんでした。
Icom Remote Utility の無線機一覧で該当無線機との「接続」ボタンを押すと、手元PCのスピーカーから受信音が聞こえて来ます。

ハマリポイント: 接続先ホストの設定で mDNS の .local を指定すると接続が遅い

Remote Utility の接続先サーバのホスト名に (Host名).local と mDNSでのホスト名を指定すると、接続するまでの時間が数秒かかって遅いです。 

LAN接続しているサーバを指定するために (Host名).local をホスト名部分に入力して使うことがあります。 これは multicast DNS によるLocalでのみ使えるホスト名かと思うのですが、Remote Utility の接続先に nuc1.local といったホスト名を指定すると接続までに時間がかかります。接続先サーバのところを .local でなく IPv4アドレス直指定したほうが接続が早いことに気づいた次第です。Windows か Remote Utility の都合なのか IPv6/v4 dual stack の都合で仕方ないのかもしれませんが。。 

なんとなく見えたRS-BA1の構成

っと、まぁなんともユーザからすると直感的でない設定が必要なのですが、何でこんなユーザに優しくない構成になったのかと考えたところ、それなりの理由がありそうです。

RS-BA1を構成するソフトウェアの役割をまとめてみます。
  • RS-BA1 Remote Controlのソフトウェア自体は、SerialPort (COM) を介してCI-Vコマンドを送受信し、無線機の操作や状態取得を行う機能を有しています。 受信音・変調音の取り扱いはしていません。
  • Icom Remote Utilityは、SerialPortの送受信する内容をUDPで送受信する、Audio Deviceの信号をUDPで送受信する、Icom Remote Utilityの間の制御や認証を行う、機種ごとのある程度の設定の手助けを行う、といった機能を持っているようです。 無線機の操作などは行わず、シリアルポートの内容の転送、音声情報の転送、認証と制御に特化しているようです。
  • RS-BA1 Remote ControlとIcom Remote Utilityの間でSerialPortが必要になり、これを仮想シリアルデバイスが取り持っている。
という具合で、一つの製品にまとまっているが、個々が特化された仕事をもっており、これらの立ち位置とか理解しながら設定するソフトウェアであることはわかりました。

RS-BA1の問題としては、これらの役割と仕組みが理解できないとトラブルシュートできないのにもかかわらず、役割や仕組みをきちんと説明することなく、ただ上から順に手順を踏めば構築できるはずだといった調子のマニュアルだけが提供されているところでしょう。そして、各機種ごとに各場面で設定すべき内容が異なるため、各機種ごとの手順書が必要なのだが、最新版のマニュアルだと最新機種の2つぐらいしか書かれておらず、リモート操作できなかった大量の人々を生んでしまったのではないかと思うところで。。

この、細かい仕組みの説明とかいいから、ただ上から順に手順を踏めば良い、みたいなやり方は、D-STARレピータのInternet Gateway構築の手順でも同じ経験があり、嫌な経験をしたことを思い出しました。ここまで製品を作り込んでくれたのはありがたいのですが、ユーザ側への原因や理由を話さず、ただ解決策や手法だけを話しする態度は好きになれません。

コメント

このブログの人気の投稿

車両系建設機械運転者(整地) の講習

パスワードを覚えるのも無理があるから、パスワードマネージャ使いましょう。

大型特殊自動車免許を取った時の話。