rtltcp icon indicating copy to clipboard operation
rtltcp copied to clipboard

A rust implementation of rtl-tcp with better buffering and support for systemd socket activation.

rtltcp

Rust GitHub Template Crates.io CI Coverage Status

A rust implementation of rtl-tcp with better buffering and support for systemd socket activation.

Installation

Download the latest binary release

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

Cargo

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

Using Systemd Socket Activation

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.

License

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.

Contribution

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.