Multi-RTL: A GNU Radio Block for Combining and Time Synchronizing Multiple RTL-SDR Dongles

The RTL-SDR has a maximum available stable bandwidth of about 2.4 MHz. Many people have had the idea to combine multiple RTL-SDR dongles together to implement a wider band or multi channel RX device, but very few successful implementations have been seen. The biggest challenge is time synchronization between the multiple RTL-SDR units. Even if a common clock is used, there is no guarantee that the samples streams are synchronized, which can cause problems for the decoding of many signals. The most successful implementations so far have used a common clock, and an external synchronization signal from a generator in addition to other hardware like switches.

However, now Piotr Krysik has come up with a very good and simpler solution for the synchronization of RTL-SDR dongles. Piotr wanted to be able to capture both GSM uplink and downlink channels at the same time. As these channels are not close to each other in the frequency spectrum, he needed two synchronized RTL-SDR dongles to be able to monitor the two channels at once. In order to achieve synchronization he created a GNU Radio block called Multi-RTL, and connected two RTL-SDR dongles to a common clock source.

In his Multi-RTL block he implemented a method of a discovery he made that allows a way to time synchronize the dongles by using a signal that is already being broadcast over the air. He writes that his method is the following:

  • tuning the RTL-SDR dongles to the same frequency where some transmission is present,
  • recording a short signals with all of the dongles,
  • computing cross-correlation of the signals (i.e. with respect to a one selected channel),
  • finding position of maximums of cross-correlations in order to estimate relative delays of the channels,
  • correcting the delays so the channels are time-synchronized,
  • switching the dongles to their target frequencies,
  • changing other parameters of the channels (like gains) to target values.

With his Multi-RTL GNU Radio block Piotr was able to successfully monitor a GSM uplink and downlink channel pair that were spaced 45 MHz apart. Whilst monitoring the signals he sent an SMS to his phone, and then using his recovered encryption key was able to use gr-gsm to decode his message.

The successful implementation of this tool opens the door for many more RTL-SDR based projects, such as the reception of GSM uplink and downlink channels simultaneously, reception of frequency hopping signals, passive radar, and the receiving and decoding of signals with a bandwidth wider than 2.4 MHz.

Two dongles with a common clock.
Two dongles with a common clock.
Synchronizing two dongles by using an external signal.
Synchronizing two dongles by using an external signal.

7 comments

  1. Boomer

    I’m curious as to what would happen, or if it’s even possible, to:
    1. use one TCXO or maybe VCXO, powered on its own circuit using USB 5V with voltage converters of course.
    2. Adjust the output clock pulses individually using frequency multiplier/divider circuits per device until the outputs from the tuners synchronize on an oscilloscope.
    3. Replicate over and over

  2. John

    I don’t know a lot on how to work GNU Radio but how can I use this to combine the bandwidths of multiple rtl-sdrs?

  3. Piotr Krysik

    Hi thuan nguyen dinh,

    I’m aware that there is some linearly changing in time phase offset between the dongles. This is why I refrained from claiming that it is fully coherent receiver (yet) calling it “synchronous receiver”. This means that samples coming from different channels are aligned in time automatically – and this enables multiple applications that weren’t possible before.

    I would like to add full coherency to Multi-rtl. Do you have some link to the description of your method?

    • thuan nguyen dinh

      Dear Piotr Krysik,
      Thanks for clarifying your work.
      As mentioned, my solution is suitable only for GPS signal which use CDMA modulation. If you are interested, please let me know

      • Piotr Krysik

        I’m most interested in your observations regarding the nature of this frequency offset. Especially how often does it change? Method for accurately estimating it is important but maybe it can be implemented in a way that doesn’t rely too much on content of the transmitted signal.

  4. thuan nguyen dinh

    For synchronizing multiple RTL2832U, the main point is not only the samples difference between dongles but also the CLOCK DRIFT which is different from dongles.
    I did several experiments on the combination of 3 RTL2832Us to make it works as the antenna array frontend for GNSS signals. Therefore, I recognized that the clock drift of RTLs w.r.t the master clock at 1.5GHz is < 0.2 Hz. Due to that reason, the phase difference between dongles is totally wrong. I proposed a method to estimate such value, however I just tested only on GPS signal.

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.