RTKbase on Futro S900 x86 thin client

Alas:
Here is the service file for the tcp client at the RTKBase box.
Does not use any of Stefal’s own code nor is it controlled or configured by it.
Just the rtklib str2str as installed by RTKBase.

:~/rtkbase$ cat  /etc/systemd/system/str2str_caster_upload.service
# templated from Stefal's str2str_local_ntrip_caster.service
[Unit]
Description=RTKBase upload to remote Ntrip Caster
#After=network-online.target
#Wants=network-online.target
Requires=str2str_tcp.service
After=str2str_tcp.service

[Service]
# Type=forking
Type=simple
User=wrosner
# ExecStart=/home/wrosner/rtkbase/run_cast.sh in_tcp out_local_caster
EnvironmentFile=/home/wrosner/rtkbase/caster_upload.conf
ExecStart=/usr/local/bin/str2str -in tcpcli://localhost:5015 -out tcpcli://${CASTER_ADDR}:${CASTER_PORT} -t ${LOGLEVEL} 
# Restart=on-failure
Restart=always
# TimeoutStartSec=infinity
# Restart=on-success
# Restart=no
RestartSec=10
#Limiting log to 1 msg per minute
LogRateLimitIntervalSec=10 minute
LogRateLimitBurst=1
ProtectHome=read-only
ProtectSystem=strict
ReadWritePaths=/home/wrosner/rtkbase

[Install]
WantedBy=multi-user.target

At the public server, I installed from Stefal’s RTKBase

  • rtklib executables (ntrip-caster capable)
  • a modified service file for the caster
  • a modified config
  • a modfied start wraper aka run_cast.sh

Before, I tried a direct call to str2str in the service file as well.
However, the parameters for a caster that go to the command line are quite clumsy, so I gave up reinventing the wheel.

The service file:

~$ cat /etc/systemd/system/str2str_ntrip_caster_realy.service 
[Unit]
# [wjr 2025-07-11]
Description=RTKBase hack to relay Ntrip Caster
#After=network-online.target
#Wants=network-online.target
# Requires=str2str_tcp.service
# After=str2str_tcp.service

[Service]
Type=forking
User=wrosner
ExecStart=/home/wrosner/test/RTKBase_part/run_cast.sh in_tcpsvr out_local_caster
Restart=on-failure
RestartSec=10
#Limiting log to 1 msg per minute
LogRateLimitIntervalSec=3 minute
LogRateLimitBurst=1
ProtectHome=read-only
ProtectSystem=strict
ReadWritePaths=/home/wrosner/test/RTKBase_part

[Install]
WantedBy=multi-user.target

In the config, I just changed the credentials and mountpoint.

In the wrapper, It boils down to one line for some in_tcpsvr-configuration, which is not part of Stefal’s code, and a debug to log the str2str command line.

...:~/test/RTKBase_part$ diff run_cast.sh.000 run_cast.sh
15a16,19
> # [2025-07-11 wjr] tcp server in for remote caster
> in_tcpsvr="tcpsvr://:${tcp_port}#${receiver_format}"
> 
> 
75c79,81
<     ${cast} -in ${!1} -out ${out_local_caster} -i "${receiver_info}" -a "${antenna_info}" -t ${level} -fl ${logdir}/str2str_ntrip.log &
---
>     cmd="${cast} -in ${!1} -out ${out_local_caster} -i ${receiver_info} -a ${antenna_info} -t ${level} -fl ${logdir}/str2str_ntrip.log" 
>     echo ${cmd}
>     ${cmd} &

I know that @Stefal is not in favour of private casters.
But may be that some users might be happy to find this in RTKBase, nevertheless.
Will drop him a note.