Airspy HF+と ICOM IC-7410の両方を制御する

あなたがHF+とIC-7410の両方を使うときに、2つの装置で周波数が常に一致していると便利です。

これを実現するには種々の方法があると思いますが、これはその1つです。

# filename = airspy_ic7410_telnet.py
# % rigctld -m 367 -r /dev/ttyUSB0 &
# % python3 airspy_ic7410_telnet.py
#
import time
import telnetlib
HOST  = "127.0.0.1"
PORT1 = 7356 # GQRX    default port
PORT2 = 4532 # rigctld default port
EXPECTED =b"dummy"
TOUT = 0.5

f1b4 = 0
f2b4 = 0

tn1 = telnetlib.Telnet(HOST, PORT1)
tn2 = telnetlib.Telnet(HOST, PORT2)

tn1.read_until(EXPECTED, timeout=1); # to discard everythng
tn2.read_until(EXPECTED, timeout=1);

while (True):
    time.sleep(1.0)
    
    tn1.write(b"f\n")
    f1 = int(tn1.read_until(EXPECTED, timeout=TOUT).decode('ascii'))
    if (f1 != f1b4):
        f1b4 = f1
        new_f2=b"F "+str(f1).encode('ascii')+b"\n"
        tn2.write(new_f2)
        tn2.read_until(EXPECTED, timeout=TOUT)

    tn2.write(b"f\n")
    f2 = int(tn2.read_until(EXPECTED, timeout=TOUT).decode('ascii'))
    if (f2 != f2b4):
        f2b4 = f2
        new_f1=b"F "+str(f2).encode('ascii')+b"\n"
        tn1.write(new_f1)
        tn1.read_until(EXPECTED, timeout=TOUT)

この小さなプログラムはtelnetを用いて、Gqrx経由でHF+に話しかけ、rigctld経由でIC-7410に話しかけます。

Airspy HF+でFT8

私の新しいSDRで、FT8がどうなるか見てみましょう。

OSは、macOS High Sierra (10.13.4)です。

オーディオストリームをGqrxからWSJT-Xに渡すのに、Soundflowerを使います。


さて、Gqrxの設定です。モードは、USBでなければいけません。

オーディオ出力は、”Multi-Output Device”か、”Soundflower (2ch)”のどちらでも。

リモート・コントロールを有効にするのを忘れないで下さい(Tools -> Remote control)。


最後に、WSJT-Xの設定です。

リグ・コントロールは、”Hamlib NET rigctl”に設定します。

サウンドカード・インプットは、”Soundflower (2ch)”に設定します。

Airspy HF+とtelnet

あなたは、Gqrxをtelnetで制御することができます。

import numpy as numpy
import matplotlib.pyplot as plt
import telnetlib
HOST = "127.0.0.1"
EXPECTED =b"dummy"
TOUT = 0.1

tn = telnetlib.Telnet(HOST, 7356)
xvalue = []
yvalue = []

tn.write(b"M CW 1000\n")
print(tn.read_until(EXPECTED, timeout=TOUT).decode('ascii'), end="")

for freq_hz in range(79000000, 81000000, 1000):
	freq=b"F "+str(freq_hz).encode('ascii')+b"\n"
	tn.write(freq)
	tn.read_until(EXPECTED, timeout=TOUT)

	tn.write(b"f\n")
	f = int(tn.read_until(EXPECTED, timeout=TOUT).decode('ascii'))
	xvalue.append(f)
	print(f)

	tn.write(b"l\n")
	l = float(tn.read_until(EXPECTED, timeout=TOUT).decode('ascii'))
	yvalue.append(l)
	print(l)

plt.figure(1, figsize=(8,8))
plt.subplot(111)
plt.title('Airspy HF+')
plt.xlabel('Freq [Hz]')
plt.ylabel('Signal Strength [dBm]')
plt.grid(True)
plt.plot(xvalue, yvalue, color='blue', linewidth=1)
plt.show()

このプログラムは、FM帯をスキャンして信号強度をプロットします。

Airspy HF+ 到着(2)

明らかに、あなたはあなたのSDRをもっとまともなOSの上で使いたい訳です。

これは、Ubuntu 18.04上のGqrxです。

そして、GqrxはmacOS上でも走ります。

Airspy HF+ は、どちらのOS上でもGqrxで元々サポートされています。

Gqrxはtelnetを用いてリモート制御することができます。

% telnet localhost 7356
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
f
7027000
F 7031000
RPRT 0
f
7031000
M ?
OFF RAW AM FM WFM WFM_ST WFM_ST_OIRT LSB USB CW CWU CWR CWL
M CW
RPRT 0
m
CW
500
M CW 300
RPRT 0
m
CW
300
q
Connection closed by foreign host.

コマンドの一覧はここにあります; remote-control.txt