Gqrxのリモート制御の設定

Gqrxは、TCP接続を用いて制御を行うことが可能です。

http://gqrx.dk/doc/remote-control

これは、ローカルホストからです。

そして、これはリモートホストからです。

どちらの場合でも、あなたは、リモート制御の設定として、IPv4-mapped IPv6アドレスを与える必要があります。

user1@Asrock ~/Downloads/gqrx-sdr-2.11.5
 % grep -r "ffff:127" .
./src/applications/gqrx/remote_control.cpp:#define DEFAULT_RC_ALLOWED_HOSTS   "::ffff:127.0.0.1"
user1@Asrock ~/Downloads/gqrx-sdr-2.11.5
 % grep -r "AF_INET" . 
user1@Asrock ~/Downloads/gqrx-sdr-2.11.5
 %

これは、Airspy HF+をGqrxを介して制御するPythonプログラムの例です。

import numpy as numpy
import matplotlib.pyplot as plt
import telnetlib
HOST = "192.168.0.90"
EXPECTED =b"dummy"
TOUT = 0.5

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

tn.read_until(EXPECTED, timeout=TOUT*5)

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

for freq_hz in range(500000, 1700000, 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()