Een Raspberry Pi Hamradio Server (3)

Flrig automatisch opstarten

Flrig installeren en opzetten is niet heel ingewikkeld. Na installeren moet je de communicatie parameters van de radio instellen. Dat is even zoeken naar de juiste instellingen, maar meestal is dat niet heel ingewikkeld. De server settings heb ik default gelaten, en dat werkt dan gewoon.

Wat me wel wat hoofdbrekens heeft gekost: het automatisch opstarten van de applicatie na een reboot van de Raspberry Pi. Deze draait n.l. normaal ‘headless’, oftewel zonder monitor. Je kunt via VNC wel inloggen, maar dat is niet iets wat ik normaal vaak doe, en zou normaal ook niet nodig hoeven zijn.

Je kunt applicaties op verschillende manieren automatisch laten starten, ik heb gekozen voor een systemd service. Dat is niet heel ingewikkeld, en heeft het voordeel dat ik ook een ander issue kon oplossen. Als de RPI een reboot krijgt zonder dat de transceiver aan staat (of als deze losgekoppeld is) zal er een foutmelding gegeven worden, en gaat hij niet uit zichzelf communiceren. Aangezien je dat niet ziet zonder display is dat natuurlijk onwenselijk.

De truc die ik heb toegepast is om eerst de transceiver te ‘pollen’ (herhaaldelijk bevragen). Pas als er een geldig antwoord terugkomt zal hij Flrig starten. Je hebt hier het commando rigctl nodig dat in de library libhamlib zit. In mijn geval vraag ik de rig welk VFO er actief is, maar wat je vraagt is eigenlijk niet zo van belang. Dit alles kun je in dezelfde systemd service instellen.

Installeren rigctl

Zoals gezegd, heb je voor dit commando de libhamlib-utils library nodig.

sudo apt install libhamlib-utils

Probeer het daarna eerst via de CLI of je kunt communiceren:

rigctl -m 1042 -r /dev/ttyUSB0 v

1042 is het id van mijn set (FTDX10), maar is voor elk type trx anders. Ook het seriële interface kan variëren. Je kunt het juiste nummer vinden door een lijst met de beschikbare sets op te vragen:

rigctl -l

Maken van het configuratie bestand

Maak een config bestand voor de systemd service:

nano ~/.config/systemd/user/flrig.service

Zet daar de volgende tekst in:

[Unit]
Description=FLRig headless (FTDX10) with rigctl precheck
After=graphical.target


[Service]
Type=simple
# wacht op radio
ExecStartPre=/bin/sh -c 'until rigctl -m 1042 -r /dev/ttyUSB0 v >/dev/null 2>&1; do sleep 2; done'
ExecStart=/usr/bin/flrig
Restart=always
RestartSec=5

[Install]
WantedBy=default.target

Hij vraagt dus aan de transceiver ‘welk VFO is geselecteerd’. Als er geen antwoord komt, wacht hij 2 seconden en probeert het nog eens. Als er op een bepaald moment een antwoord komt, dan zal hij flrig starten.

Als flrig crasht, of afgesloten wordt, zal hij deze automatisch weer starten, of wachten totdat de transceiver weer bijkomt.

Nadat het bestand is aangemaakt, moet je het nog installeren en starten:

systemctl --user daemon-reload
systemctl --user enable flrig
systemctl --user start flrig

Overigens: als je de transceiver uitzet blijft flrig gewoon draaien. Hij update dan zijn gegevens niet, maar laat de laatste stand zien. Zet je de transceiver weer aan, dan komt de communicatie vanzelf weer tot stand.