5. rsudp as a systemctl daemon

If you need rsudp to restart every time your Debain/Ubuntu machine boots, this tutorial will work well for you. This includes both raspbian (Raspberry Pi) and Ubuntu-like systems. If you have an OS other than Linux, you will need to look elsewhere for documentation regarding the creation and activation of daemon programs.

5.1. Setup instructions

First of all, clone rsudp to ~/bin/rsudp:

mkdir -p ~/bin
cd ~/bin
git clone https://github.com/raspishake/rsudp

If you have not already done so, install rsudp using the provided installer script.

bash ~/bin/rsudp/unix-install-rsudp.sh

Next, enter the following commands in order to set up a user systemd directory structure.

mkdir -p ~/.config/systemd/user/default.target.wants

Now create a new service file

nano /home/pi/.config/systemd/user/rsudp.service

and paste the following code in it:

[Unit]
Description=rsudp daemon
Documentation=https://github.com/iannesbitt/rsudp
After=graphical.target

[Service]
ExecStartPre=/bin/sleep 10
ExecStart=/bin/bash /home/pi/bin/rsudp/unix-start-rsudp.sh
ExecStop=kill $MAINPID
ExecReload=kill $MAINPID; /bin/bash /home/pi/bin/rsudp/unix-start-rsudp.sh
Restart=always
RestartSec=10s

[Install]
WantedBy=default.target

Next, execute the following lines:

systemctl --user daemon-reload
sudo loginctl enable-linger "$USER"
systemctl --user start rsudp.service

rsudp should start within about 30 seconds. You can monitor the program’s output in real time by entering the following command (source function: rsudp.entry_points.ep_tailf_log()):

rs-tailf

Which is the equivalent of tail -f /tmp/rsudp/rsudp.log on Linux/MacOS and Get-Content -Path "C:/tmp/rsudp/rsudp.log" -Wait on Windows.

If it does start correctly, you can enable the daemon to run permanently with this command:

systemctl --user enable rsudp.service

You can test its enablement by restarting the entire system:

sudo reboot

5.2. Restarting the daemon

Finally, if you need to restart the rsudp daemon service (this may be necessary if your Shake changes IP or the network connection is interrupted, or if rsudp freezes for some reason):

systemctl --user restart rsudp.service

5.3. Troubleshooting the daemon

If rsudp fails to start, you can run tail -n 30 -f /tmp/rsudp/rsudp.log to see what the error might be, or systemctl --user status rsudp.service to check whether the service file is misconfigured somehow.

A running daemon will show its status with green text saying “active (running)”, whereas a failed start will show red or grey text that will say something like “inactive (failed)” or “inactive (dead)” and will have some diagnostic text with which you can troubleshoot.

Back to top ↑