RTL-SDR as RTTY transceiver
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


rtl-trx: Transmit and receive RTTY using an RTL-SDR dongle

Local oscillator leakage from an RTL-SDR dongle can be used as a very low power
FSK transmitter. This program transmits RTTY and also makes it easy to use the
same dongle to receive RTTY in between transmissions.
The goal is to make it possible to have a two-way QSO between two dongles.

For more information, see this post on our preliminary experiments:
A possible hardware modification to increase transmit power:


Install fldigi, pavucontrol, liquiddsp and librtlsdr
( https://github.com/jgaeddert/liquid-dsp https://github.com/keenerd/rtl-sdr )

Run make to compile the program.

Run ./pulseaudio_pipe.sh (only once after starting your computer).

Start fldigi and pavucontrol.

Go to Recording tab in pavucontrol and set fldigi to
capture from "Unix FIFO source /tmp/audiopipe".

In fldigi menu: Op Mode -> RTTY -> custom, go to Tx tab. Choose these settings:
425 Carrier shift, 45.45 Baud rate, 5 Bits per character,
none Parity, 2 Stop bits.

Start rtl-trx:
./rtl-trx 3>/tmp/audiopipe

You should now see noise scrolling in the waterfall of fldigi.
rtl-trx is working as an upper sideband demodulator which sends the demodulated
audio to fldigi. You can change your center frequency by typing letter F and a
number into rtl-trx. For example, F 435e6 lets you receive 435 MHz USB.

Now you can also type a line of text into rtl-trx and it should be transmitted
as RTTY with a shift of 439.45 Hz.

To get a successful contact between two RTL-SDR dongles, you will probably need
to adjust your center frequency a bit based on frequency error your dongle.
A wideband waterfall view might be added in rtl-trx to make this easier.
Before it's implemented, the easiest way is to close rtl-trx for a moment and use
your favourite SDR software to find apparent TX frequency of the other station.


Don't want to install fldigi, pulseaudio and liquiddsp? There's also a simple
transmit-only beacon program which only needs librtlsdr to work.
To use:
make beacon
./beacon transmit_frequency_in_Hz "text to transmit"

For example, ./beacon 435e6 "rtl-sdr rtty beacon "