FT8

Table of Contents

Code Blue

所要で病院へ行った時、館内放送で、内科処置室にて、コード・ブルーっての が流れていた。暗号だな。どんな意味?

コードブルー(医師・岩井淳一)

ふーん、そんな緊急な事が発生してたのね。おや? ゴールドなんてのも有る。 不謹慎かも知れないけど、部品取りできて、そのおかげで色々な修理ができる。 お金になりそうな事案だから、思わずゴールドなの か、納得です。

大体コードって暗号の意味。こういうの病院の専売特許じゃないだろう。 デパートやスーパーはどうよ?

スーパーや百貨店で使われる隠語まとめ!店内放送の疑問を解決

もちろん、暗号なので、その店独自のコードになってるはず。

警察関係は隠語の山だぞ。 事件がわかる・警察用語集

FT8

FT8が流行してるってんで、軽く検索してみたら、 FT8はHAM RADIOを葬ったのか こんなのが出てきた。今の無線界を如実に表わ しているなあ。広告の勝利であります。

無線機とパソコンを接続して運用する方式の紹介

WSJTホームページ

FT8の特徴

FT8とはどんなモード ?

リナに収録されてるか、確認。

[sakae@deb ~]$ apt-cache search ft8
js8call - Amateur Radio Digital Mode providing weak signal messaging
libxaw3dxft8 - Extended version of Xaw3d with support for UTF8
libxaw3dxft8-dev - Extended version of Xaw3d with support for UTF8 (Development files)
wsjtx - Weak-signal amateur radio communications
wsjtx-data - Weak-signal amateur radio communications (data files)
wsjtx-doc - Documentation and examples for the WSJT-X package
xdemorse - GUI to decode Morse signals to text

wsjtx

でも、こういうのを調べるならFreeBSDに限る。

WSJT ("Weak Signal Communication, by K1JT") offers specific digital protocols
optimized for meteor scatter, ionospheric scatter, and EME (moonbounce)
at VHF/UHF, as well as HF skywave propagation.  The program can decode
fraction-of-a-second signals reflected from ionized meteor trails and
steady signals 10 dB below the audible threshold.

K1JTさんが作成した、微弱な信号のための通信とな。流星散乱、電離層散乱、EME (月反射) 向けに最適化 VHF/UHF、およびHFスカイウェーブ伝播で。プログラムはデコードできる イオン化した流星の痕跡から反射されたほんの一瞬の信号と、 可聴閾値より 10 dB 低い安定した信号。

make

お次は、作成手順書のMakefileを点検。

BUILD_DEPENDS=  asciidoctor:textproc/rubygem-asciidoctor \
                a2x:textproc/asciidoc \
                git:devel/git \
                ${LOCALBASE}/share/xsl/docbook:textproc/docbook-xsl
LIB_DEPENDS=    libfftw3.so:math/fftw3 \
                libfftw3f.so:math/fftw3-float \
                libboost_log_setup.so:devel/boost-libs \
                libxslt.so:textproc/libxslt

USES=   cmake:noninja compiler:c++11-lang fortran gl libedit \
                makeinfo pkgconfig qt:5 readline tar:tgz
USE_GL=         glu
USE_QT=         core gui network widgets \
                multimedia concurrent printsupport serialport sql sql-sqlite3 \
                buildtools:build linguisttools:build qmake:build testlib

CONFLICTS_INSTALL=      wsjtz

ふーん、大規模な仕掛けが必要。QtがGUIを担当してるな。Fortranって、天体 物理学者の武器? Pythonよりrubyが好みの先生なんだな。で、rubygemで入れ てる、asciidoctorって、どんな機能を提供してるの? libfftはフーリエ変換のモジュール。ウォーターフォールにでも利用してる? それとも、FSK信号の復調にでも使う?

すべての疑問を解消しようと思ったら、ソース嫁。

from source

make fetch したら、wsjtx-2.5.4 が落ちてきた。まずは、そのINSTALL文書か ら。

 __       __   ______      _____  ________      __    __
|  \  _  |  \ /      \    |     \|        \    |  \  |  \
| $$ / \ | $$|  $$$$$$\    \$$$$$ \$$$$$$$$    | $$  | $$
| $$/  $\| $$| $$___\$$      | $$   | $$ ______ \$$\/  $$
| $$  $$$\ $$ \$$    \  __   | $$   | $$|      \ >$$  $$
| $$ $$\$$\$$ _\$$$$$$\|  \  | $$   | $$ \$$$$$$/  $$$$\
| $$$$  \$$$$|  \__| $$| $$__| $$   | $$       |  $$ \$$\
| $$$    \$$$ \$$    $$ \$$    $$   | $$       | $$  | $$
 \$$      \$$  \$$$$$$   \$$$$$$     \$$        \$$   \$$


Copyright 2001 - 2021 by Joe Taylor, K1JT.
To  build WSJT-X  from sources  you need  some prerequisite  tools and
libraries.

On Linux:

   build-essential
   gcc-4.8.2 or clang-3.4 or newer
   g++-4.8.2 or clang-3.4 or newer
   gfortran-4.8.2 or newer
   CMake-2.8.9 or newer
   git
   asciidoc
   texinfo

   and others-dev

特徴的なのは、世にも珍しいfortranでしょうか? 今時、そんな古代言語が必 要なの。きっと、天文物理学では、当たり前に使われているんで、ついつい慣 れた言語を使いましたとな。そして、g++なんかは、院生にまかせたQtの操作 で利用されてるのでしょう。このアプリの代表は、K1JTさんだけど、そのチー ムの合同成果物かな。

それはいいけど、ソースに対面。tar玉になってた。

fftw3.h

注目のfftが、どんな風に利用されてるか? ヘッダーの宣言を確認。

[sakae@fb /tmp/wsjtx-2.5.4/src/wsjtx]$ grep fftw3.h -r .
./main.cpp:#include <fftw3.h>
./widgets/mainwindow.cpp:#include <fftw3.h>
./lib/wsprd/wsprd.c:#include <fftw3.h>
./CMake/Modules/FindFFTW3.cmake:find_path (FFTW3_INCLUDE_DIR fftw3.h
./map65/main.cpp:#include <fftw3.h>
./map65/mainwindow.cpp:#include <fftw3.h>

メインにあるって事は、ウォーターフォールとかかな。じゃ、実体の利用状況っ て事で、主要な関数を探り出す。

[sakae@fb /tmp/wsjtx-2.5.4/src/wsjtx]$ grep fftw_plan_dft_1d -r .
Binary file ./lib/ft2/libwsjt_fort.a matches
./lib/four2a.f90:        call sfftw_plan_dft_1d(plan(i),nfft,a,a,FFTW_FORWARD,nflags)
./lib/four2a.f90:        call sfftw_plan_dft_1d(plan(i),nfft,a,a,FFTW_BACKWARD,nflags)
./lib/chkfft2.f90:           call sfftw_plan_dft_1d(plan1,nfft,a,a,FFTW_FORWARD,nflags)
./lib/chkfft2.f90:           call sfftw_plan_dft_1d(plan2,nfft,a,a,FFTW_BACKWARD,nflags)
./lib/chkfft2.f90:           call sfftw_plan_dft_1d(plan1,nfft,a,c,FFTW_FORWARD,nflags)
./lib/chkfft2.f90:           call sfftw_plan_dft_1d(plan2,nfft,c,a,FFTW_BACKWARD,nflags)
./lib/fftw3.f03:    type(C_PTR) function fftw_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftw_plan_dft_1d')
./lib/fftw3.f03:    end function fftw_plan_dft_1d
  :

fortran

libの下に色々有るんで、どれでもいいけど一つピックアップしてみた。 gen_ft8wave.f90

subroutine gen_ft8wave(itone,nsym,nsps,bt,fsample,f0,cwave,wave,icmplx,nwave)
!
! generate ft8 waveform using Gaussian-filtered frequency pulses.
!
  use timer_module, only: timer
  parameter(MAX_SECONDS=20,NTAB=65536)
  real wave(nwave)
  complex cwave(nwave),ctab(0:NTAB-1)
  real pulse(23040)
  real dphi(0:(nsym+2)*nsps-1)
  integer itone(nsym)
  data ibt0/0/
  save pulse,twopi,dt,hmod,ibt0,ctab
   :
! Calculate and insert the audio waveform
  phi=0.0
  dphi = dphi + twopi*f0*dt                      !Shift frequency up by f0
  if(icmplx .eq. 0) wave=0.
  if(icmplx .ne. 0) cwave=0. !Avoid writing to memory we may not have access to

  call timer('gen_loop',0)
  k=0
  do j=nsps,nsps+nwave-1                         !Don't include dummy symbols
     k=k+1
     if(icmplx.eq.0) then
        wave(k)=sin(phi)
     else
        i=phi*float(NTAB)/twopi
        cwave(k)=ctab(i)
     endif
     phi=mod(phi+dphi(j),twopi)
  enddo
  call timer('gen_loop',1)

これが現代風なFORTLANとな。まあ、読めるな。昔のfortranは、コメントが冒 頭Cでって約束だったよな。それが現代では ! マークか。 .eq. は、何か shell語にも有ったような。そこはかとなく似ている。

manual?

各国語にマニュアルと言うか説明文が用意されてた。

./translations/wsjtx_zh_TW.ts
./translations/wsjtx_zh.ts
./translations/wsjtx_ja.ts
./translations/wsjtx_da.ts
./translations/wsjtx_ca.ts
./translations/wsjtx_es.ts
./translations/wsjtx_en_GB.ts
./translations/wsjtx_zh_HK.ts
./translations/wsjtx_en.ts
./translations/wsjtx_it.ts

各国の無線家が協力した、賜物だな。世界と繋がる無線家なら、お手のものだ ろう。FT8にシフトしてラバースタンプQSOじゃ、それも望めないか。いや、そ んなのOpenAIにお任せさ。

マニュアルが出てきたので、https://www.hdlc.org/wsjt/help/ 正式なやつを 探してみた。

いまさら聞けない、FT8 運用の始め方と応用 JARLも説明書を出しているな。 QSLカードも電子式に移行する中、JARLのカード転送サービスの威力が低下し てる。会員の増加に、やっ気になってる構図だな。

what ?

利用するパソコンは正確な時刻になっていなければいけない。時刻に基いて送 受信の自動切り替えをするんだな。これって、スマホ等で採用されてる、タイ ムスロットによる回線交換の技術じゃん。

FSK

周波数偏移変調 なんだな。復調にGoertzelアルゴリズムが利用される。調べ たら https://hamesspam.sakura.ne.jp/hes2019/190518.html 自分のページが 出てきた。Goertzel algorithm 日本のWikiには無いけど、英語版にはあった。

wsjtz

同じ作者さんが、下記の拡張を施して、別の名前でリリースしてる。

WSJT-Z is a clone of WSJT-X software by Joe Taylor K1JT

Features

- Modified user interface, including a larger Band Activity window
- Extended filtering features
- Auto CQ and auto responding
- QRZ.COM integration
- Audio alerts
- DXCC / Continent Filtering

ある種の無線家には、嬉しい拡張だな。でも、自動化してまで、無線ってやる ものかねぇ。ひたすらワッチ、ワッチ、耳を澄ませて聞けってのが正統派だと 思うんだけど。

hamlib

Hamlib rigとアプリケーションを結びつけるやつだな。

The Ham Radio Control Libraries, Hamlib for short, is a development effort
to provide a consistent interface for programmers wanting to incorporate
radio control in their programs.
Hamlib will allow authors of software logging programs, digital communications
programs, or those wanting to develop the ultimate radio control software to
concentrate on the user interface and the basic function of the program rather
than radio control.

アマチュア無線 おっ久し振りに、ArchLinuxの説明書に遭遇。

Asciidoctor by ruby

A fast text processor & publishing toolchain for converting AsciiDoc to HTML5, DocBook & more.

これで意味が通じる人は、リンクを踏む必要は有りません。って、随分と存在 な扱かいだな。


This year's Index

Home