WSJT-X Improved改造版にCQ DX・大陸指定CQ対応を実装しました
WSJT-X Improvedをベースに、自分のFT8/FT4運用に合うよう少しずつ改造を続けています。
今回、新たに実装したのは、CQ DXと大陸指定CQに対する自動取得制御です。
以前からJTDXには、CQ DXで運用している場合、同じ大陸の局を自動的には相手にしない仕組みがありました。
例えば日本からCQ DXを送信しているとき、中国や韓国など同じアジアの局から応答があっても自動的には応答せず、ヨーロッパや北米など別大陸の局からの応答を対象にします。
また、受信したCQ DXを自動的に呼びに行く場合も、そのCQ局と自局が別大陸であることを確認します。これはDX運用では非常に合理的な動作です。
そこで、JTDXの実際のソースを調べ、その考え方や判定方法を参考にしながら、WSJT-X Improved改造版にも同等の機能を取り入れました。
JTDXのソースをそのまま移植したわけではありません
今回、JTDXのソースは重要な参考資料になりました。ただし、JTDXのコードをそのままWSJT-X Improvedへ移植したわけではありません。
JTDXとWSJT-X Improvedでは、QSO候補の管理構造、CQメッセージの解析方法、自動取得へ進む経路などが異なります。
JTDX側では、候補局の情報を保持する構造体に大陸情報を持たせる設計があります。一方、WSJT-X Improved側の候補構造体には大陸情報がありません。
そのためJP1LRT版では、新たな大陸フィールドを追加せず、判定が必要になった時点で既存の国・エンティティデータベースを参照し、コールサインから大陸を都度算出する方式にしました。
また、CQ DXであるかどうかを単純な部分文字列検索で判断すると、誤判定の可能性があります。
CQ DXCQ 074CQ JACQ USACQ ASIACQ POTACQ TEST
これらは、それぞれ意味が異なります。
そこで、メッセージ中にCQやDXという文字が含まれているかを見るのではなく、WSJT-X Improvedに既に存在するDecodedTextの構造的なメッセージ解析を利用しました。
自局が送信しているCQについても、過去に設定されたCQ種別を保持する変数には頼らず、実際の現在のTx6メッセージをその都度解析します。
これにより、以前のCQ DX設定が内部に残っていた場合や、CQ 074 JP1LRT PM95のような数値を伴うCQを使用した場合でも、誤ってCQ DXとして扱うことを防いでいます。
CQ DXの判定
CQ DXでは、自局と相手局の大陸を比較します。
自局がCQ DXを送信している場合は、応答してきた局が自局とは別大陸であると確認できた場合だけ、自動的にQSO相手として取得します。
受信したCQ DXを自動的に呼びに行く場合も、自局とCQ局が別大陸であることを確認します。
- 自局と相手局の大陸が分かり、異なる大陸なら自動取得を許可
- 両方の大陸が分かり、同じ大陸なら自動取得をブロック
- 自局の大陸が不明なら、安全側にブロック
- 相手局の大陸が不明でも、安全側にブロック
JP1LRT版では、分からない場合は自動取得しない、という安全側の設計にしています。
CQ NA、CQ EUなどにも対応
CQ DXへの対応が完成したあと、次に取り組んだのが大陸指定CQです。
今回対応したのは、次の7種類です。
| CQ | 対象地域 |
|---|---|
CQ AF | Africa |
CQ AN | Antarctica |
CQ AS | Asia |
CQ EU | Europe |
CQ NA | North America |
CQ OC | Oceania |
CQ SA | South America |
例えば、自局がCQ EUを送信している場合、ヨーロッパの局からの応答だけを自動取得します。アジアや北米など、指定した大陸以外から応答があっても自動的には応答しません。
反対に、受信したCQ EUを自動的に呼びに行く場合は、自局がヨーロッパに存在すると判定できる場合だけ自動取得を許可します。
ここで重要なのは、CQ DXと大陸指定CQでは判定の意味が異なることです。
CQ DXは、自局と相手局が異なる大陸であることを求めます。一方、CQ EUなどの大陸指定CQは、応答する側が指定された地域に該当するかを判断します。
自局がCQ EUを出している場合に必要なのは、応答局がヨーロッパかどうかです。自局自身がどの大陸にいるかは、その判定には関係ありません。
逆に、受信したCQ EUを呼ぶ場合に必要なのは、自局がヨーロッパかどうかです。CQを出している局自身がどの大陸にいるかは、その判定には使用しません。
この違いも、単純な共通判定ではなく、CQの意味に合わせて別々に設計しています。
CQ JAなどは対象外
今回、大陸指定として認識するのは、先ほど挙げた7種類だけです。したがって、次のようなCQは今回の地域判定対象にはなりません。
- 通常の
CQ CQ 074などの数値を伴うCQCQ JACQ VKCQ USACQ ASIACQ POTACQ SOTACQ IOTACQ TEST
これらは従来どおりの動作を維持します。特にCQ ASとCQ ASIAは文字としては似ていますが、完全一致で判定しているため混同しません。
ブロックされるのは自動取得だけ
この機能で制限されるのは、自動的なQSO相手の取得だけです。
同じ大陸の局や、指定地域に該当しない局であっても、デコード画面から消えることはありません。ALL.TXTへの通常の記録や画面上の表示、色分けなども従来どおりです。
オペレーターが意図的にダブルクリックすれば、手動でその局とQSOできます。
実際、15mでCQ DXを出して試験運用していたところ、ヨーロッパ各局とは自動的にQSOが進みました。一方、カザフスタンはアジアと判定されるため、自動的には応答しませんでした。
しかし画面には普通に表示されているので、こちらの判断で手動選択し、UN7GBXと問題なくQSOしました。QSO完了後は再びCQ DXへ戻っています。
自動処理は運用目的に従って動き、それでも最後の判断はオペレーターができる。個人的には、このバランスが非常に気に入っています。
ローカルシミュレーションでも確認
今回も、JTDXを相手局として起動し、ステレオミキサー経由で実際のFT8信号を受信させるローカルシミュレーションを行いました。
通常版とAL版の両方で、代表的な動作を確認しています。
- 日本から受信した
CQ EUを自動的に呼ばない - 日本から受信した
CQ ASは自動的に呼ぶ - 自局が
CQ EUを送信中、アジア局からの応答を自動取得しない - ヨーロッパ局からの応答は自動取得する
CQ JAは大陸指定CQとして扱わないCQ DXの同一大陸ブロックが引き続き機能する- 手動ダブルクリックは制限しない
ブロックした理由は、ALL.TXTへDCQ1_BLOCKまたはRCQ1_BLOCKとして記録します。
単に「呼びに行かなかった」「応答しなかった」という結果だけでなく、どの自動取得経路で、どの大陸判定によってブロックしたかをあとから確認できます。
これまで取り組んできた改造
最初は、自分のFT8運用で感じた小さな不満を解消するところから始まりました。
しかし実際の運用で発生した問題を一つずつ調べ、修正と試験を繰り返しているうちに、かなり大規模な改造になってきました。
現在までに、主に次のような機能を追加・改良しています。
自動運用とQSO制御
- AutoSeq 2/AutoSeq 3
- 複数候補局の待機と引き継ぎ
- 応答がない場合の自動フォールバック
- RR73/73の再送と取りこぼし対策
- Terminal HoldによるQSO終端処理
- 手動操作と自動処理の競合防止
- 進行中QSOの相手を別局で上書きしない保護
CQ DXの異大陸判定CQ AF / AN / AS / EU / NA / OC / SAの地域判定
タイミングと周波数制御
- 受信したデコード局のDT分布の中心を示すAvg表示
- デコード完了までのタイミングを示すLag表示
- Avgを利用した内部タイミングのSync補正
- ターゲット選択時のRx DF追従
- CQ復帰時にRx DFをTx DFへ戻す同期処理
内部SyncはWindowsのシステム時計そのものを変更する機能ではありません。正しい外部時刻同期を基本としながら、受信局のDT傾向をWSJT-X Improved内部の論理タイミングへ反映します。
表示と局情報
国/DXCCエンティティ情報などを表示する機能自体は、元のWSJT-X Improvedにもあります。
一方、従来版では、その局がLoTWを利用しているかどうかをデコード画面上で確認することはできませんでした。
JP1LRT版では、JTDXと同様に、LoTW利用局を専用のマーカーで表示する機能を追加しました。デコードされたコールサインを一つずつ別の画面やWebサイトで調べなくても、LoTW利用局かどうかをデコード画面上でひと目で判別できます。
LoTWでのコンファームを重視する運用では、どの局を呼ぶか、あるいはどの局からの応答を優先するかを判断するうえで、非常に便利な表示です。
さらに、CQ行中心だった国/DXCC、LoTW利用者マーカー、B4、グリッド、Worked属性などの表示を、非CQのデコード行にも拡張しました。
これにより、CQを出している局だけでなく、通常のレポート交換やQSO進行中のデコード行でも、その局に関する情報を画面上で確認しやすくなっています。
このほか、
- Wanted/ハイライト表示の改善
- 現在のターゲットを分かりやすくする細い強調表示
- 括弧表示などデコード画面の細部修正
- Wide Graphの表示レイアウトや表現をJTDXに近づける改良
- Wide Graphで時刻表示の一部が欠ける問題の修正
- 大型ALLCALL7データへの対応
- 各自動処理を追跡するALL.TXT診断ログ
なども加えています。
こうして並べてみると、ずいぶん色々なところをいじりました。
かなりJTDXライクになってきた
私はJTDXのベータテスターでもあり、日常的にJTDXを使ってきました。JTDXには、DX運用や多数局を相手にする運用で便利な機能が数多くあります。
一方、WSJT-X Improvedにも独自の良さがあります。
そこで、JTDXを単純にコピーするのではなく、JTDXで便利だと感じた運用思想や動作を参考にしながら、WSJT-X Improvedの構造と、自分の実際の運用に合わせて作り直してきました。
現在の改造版は、見た目だけでなく、候補局の扱い、QSO終端、CQ復帰、タイミング表示、局情報表示など、使い勝手の面でもかなりJTDXライクになっています。
ただし、中身はJTDXのクローンではありません。
実際の運用で発生した問題を基に、手動操作を最優先しながら、自動処理が勝手なことをしないよう保護を重ねた、独自のWSJT-X Improved派生版になっています。
多くの方に使っていただく段階になれば、WSJT-X Improved JP1LRT Editionと名乗ってもよいところまで来たように思います(笑)。
v20260806A-RCQ1
今回のCQ DX・大陸指定CQ対応版は、限定テスター向けの検証版として用意しました。
通常GUI版とAL GUI版を別パッケージとして用意し、限定テスターとともに動作検証を続けています。現時点では一般公開していません。
現時点での対象モードはFT8とFT4です。MSK144は今回の対象には含めていません。
しばらく日常運用と限定テスターによる検証を続け、動作を見ていく予定です。
さて、次は何をしよう(笑)
ここまで来ると、次は何をしようか……(笑)。
一段落したら、より新しいWSJT-X 3.1 Improvedを土台にして、現在の機能を順番に移植する作業もやってみたいと思っています。
しかし、その前に、せっかく完成した現在の版を実際のバンドで使って楽しむことにします。
次に何を追加するかは、また実運用中に何か思いつくでしょう(笑)。












最近のコメント