I don’t run the QtSoundModem on the same machine as the node so I use a systemd service script to automatically start up QtSoundModem and put it on a virtual-VNC session that is independent from the physical desktop.
The following systemd scripts call a pair of bash scripts located within the home directory, so that modifications can be done to them without having to reinitialize the systemd service.
sudo apt install realvnc-vnc-server
sudo apt install screen
Note: realvnc is free on the Raspberry Pi, alternatives that may work for other platforms: tightvnc or tigervnc
Description=QtSoundModem Start Script
ExecStart=/usr/bin/screen -S QTSM-Console -d -m /home/pi/bin/startqtsm
Description=Shack Desktop Start Script by PE1RRR
Virtual Virtual VNC?
vvnc for virtual-VNC, yep its a virtual virtual desktop, one that runs independently from the default usually found running as a clone of the desktop monitor display.
This script starts a virtual VNC screen that can be attached from any device such as a smart phone, iPad or other desktop Pi.
vncserver -kill :1
vncserver :1 -geometry 2732x2048
Set permissions to execute:
chmod 755 /home/pi/bin/vvnc
QtSoundModem Start Script
# Launch invisibly
# /home/pi/bin/SM nogui
# Launch with GUI
# Set the display number here. If HDMI connected monitor, this is usually :0
# For VNC sessions, this is determined in the desktop- check it with “echo $DISPLAY” in a shell within the VNC.
/home/pi/bin/QtSoundModem # path to your QtSoundModem binary
Set permissions to execute:
chmod 755 /home/pi/bin/startqtsm
There are a couple of ways of launching QtSoundModem, I prefer to have the GUI to keep and eye on the waterfall and monitor packets etc.. there is an option to start it invisibly in which case- you can opt to use the nogui mode, and remove all references to vvnc.service in the previous scripts as they won’t be needed.
Need only doing once:
sudo systemctl enable qtsm.service
sudo systemctl enable vvnc.service
To Stop/Start manually:
sudo service qtsm start
If the vvnc service is not yet running qtsm’’s service will auto-start it for you. This is due to the “Wants=“ directive in qtsm.service.
Restarting the vvnc service will kill any vnc server running on the display defined in the /home/pi/bin/vvnc file before starting up again.
Displaying the VNC Session
If all has gone well, then QtSoundModem should be displayed on your Virtual VNC screen. That is, assuming you’ve connected a VNC client to it to display it!
The common way to connect to the VNC server is using the address and the display number. 0 (zero) nearly always refers to the hardware-wired display, and the first virtual server after that is :1
Monitoring the Consoles
As these systemd scripts launch with the screen command, this provides a way to keep an eye on the console output without it thrashing the SD Card with continuous writes. To attach to the running screen console, try the following:
If you only have one screen session running then it will re-attach automatically, if not then it will show you a list from which you must provide a string after the -r that can be wildcard-matched either with the process number or the console’s name.