A rust implementation of rtl-tcp with better buffering and support for systemd socket activation.
Download the latest release of rtltcp and place it in /usr/local/bin
:
# ARMv7 (e.g. Raspberry Pi)
wget https://github.com/niclashoyer/rtltcp/releases/download/0.1.0/rtltcp-raspbian-armv7 -O /usr/local/bin/rtltcp
chmod +x /usr/local/bin/rtltcp
If you want to build the code using your own rust toolchain, you can use cargo
to do this for you.
- Install the rust toolchain in order to have cargo installed by following this guide.
- run
cargo install rtltcp
By using systemd socket activation it is possible to start rtltcp just if there is a connection. This keeps the rtl-sdr stick cool while not in use without any effort on the server side.
To use socket activation, place a file rtltcp.service
and a file rtltcp.socket
in /etc/systemd/system/
.
rtltcp.service
:
[Unit]
Description=RTL TCP Service
After=network.target
Requires=rtltcp.socket
[Service]
Type=notify
User=pi
ExecStart=/usr/local/bin/rtltcp
TimeoutStopSec=5
rtltcp.socket
:
[Unit]
Description=RTL TCP Socket
PartOf=rtltcp.service
[Socket]
ListenStream=[::]:1234
[Install]
WantedBy=sockets.target
Install rtltcp either by using cargo install
or download the latest release (see above).
Now enable and start the socket:
systemctl enable rtltcp.socket
systemctl start rtltcp.socket
Systemd should now be listening on port 1234 and start/stop rtltcp automatically.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
See CONTRIBUTING.md.