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.