This paper explains the experiment done with multiple RTL2832u SDR receivers in order to create a multichannel receiver by using an unique HW clock source and signal correlations to obtain correction of the sampling deltas between the signals.
The need for a coherent multichannel receiver brought us to the idea of using multiple cheap RTL2832u SDR receivers in a system that will be phase coherent and will provide the user with access to multiple radio channels that can be used in subsequent signal processing algorithms requiring relatively high data rate per channel and in the same non continuous radio spectrum access.
Applications of this system could be in the areas of:
- Direction Of Arrival (DOA) estimators.
- Beamforming receivers.
- Multichannel receivers using frequency hopping like GSM.
- Multiple FM receivers for specific applications.
- Scientific applications requiring phase coherent receivers.
- Bandwidth aggregation (for continuous/non-continuous spectrum)
The experiment uses the CDCLVC1310-EVM board from TI that provides 10 output low jitter clock distribution system with selectable inputs from external clock sources or a local XTAL soldered on the board. The XTAL the board is equipped with, which is 25Mhz, has been replaced with one of 28.8Mhz XTALs that the RTL2832u usually has as default clock.
The RTL2832u eats up 185mA when equipped with R820T tuner so a USB 2.0 hub with 10 sockets will need to have its own power supply to supply 185x10mA needed current.
The USB controller of the PC to which the USB hub is connected will need to support the high transfer bandwidth on the USB port or the number of RTL2832u receivers can be split between several USB hubs. A simple calculus for the required transfer rate using 10 SDRs on the same USB port will give:
2 x 8bit/sample x 2Msample/second * 10 SDRs = 320Mbit/s which is less than the theoretical maximum speed of USB2.0 that is 480Mbit/s.
A picture with a 4 receiver system is presented below:
Achieving sample coherence between receivers:
When the USB transfer is started for each receiver, there is no way to control the moment of acquisition of the samples relatively to the other receivers. In order to still achieve the sample coherence between receivers a simple method of calculating the correlation between the channels signals is employed. The correlations will have a peak where the samples are correlated and therefore one could calculate the time deltas in number of samples between the channels. Those time deltas are used to correct the stream timing from each of the receiver so that a synchronization in time is obtained. This assumes that once the USB transfer is started from a receiver, no sample will be lost and in general according to my observation this holds true on the PC systems I tested the project.
A gnuradio GRC script has been used to acquire data from the SDRs then a Matlab script was used to do the math calculations. In a later step, a gnuradio block has been created to do all math calculations.
Short-circuit on the antenna inputs for three SDRs. In this case only the internal noise is available and one can see there is no or very small correlation between the signals:
Open input for three SDRs. In this case the environmental noise is available and so there is correlation between the signals but still the peak does not reach close to 1 as it should be in the case of a strong signal.
FFT for four SDRs fed with a strong NBFM signal on 430Mhz, sample rate is at 1Msps as in all cases during this experiment.
Correlation of signals between four SDR signals: ab, ac, ad given the signals a, b, c, d. The calculated time delta between the channels given in number of samples:
Correlations for the same signal as above but after correction of the signals with deltas samples. In this case if deltas is calculated again, it will be zero:
Angle error between corrected signals in case of the signal at 1Msps rate (above) and 1Ksps (below) after resampling with linear interpolation:
Using this system, several usecases will be presented in the next posts like:
- bandwidth aggregation
- receive and decode SFH (Slow Frequency Hopping) GSM signals
The use of RTL2832u SDR receiver in a multichannel coherent receiver proved to be successful and opens a new range of applications that are usually implemented with much more expensive HW.
The drawbacks and limitations of the RTL2832u type SDRs like small dynamic range (given by 8bit/sample), instability with temperature, gain differences between different boards are also the limitations of the multichannel system as a whole.
We tried to feed all the SDRs clocks from just one SDR an it worked fine for a system with 3 receivers maximum. Adding the fourth receiver destroyed the clock synchronization and that is the reason a clock distribution has been added.
[Ref 1] http://ltl.tkk.fi/~plahteen/else/works/rtl/sticks.pdf
[Ref 2] http://superkuh.com/rtlsdr.html
[Ref 3] https://groups.google.com/forum/#!topic/sara-list/qrtf_TzTyHo
3 thoughts on “RTL2832u based coherent multichannel receiver”
This is absolutely fantastic stuff.
I’m struggling too with the problems you mentioned (instability of RTL-SDR sticks), it is especially frustrating when I just ask one stick to receive one single GSM-cell’s beacon channel and still I have hiccups and errors in my gsm_receive log, it’s never a consistent flow of data (for some minutes it works actually, but then it dies on me again). Do you have any tips or tricks how to stabilize it?
Thanks a lot and keep up the great work!
Hi YO3IIU . Great work, really interesting results and approach! I’m currently modding a couple of dongles to try a TCXO instead of the standard 28.8 XTAL in order to get more stability. A second set of dongles was ready on my table to try the coherent approach you mention at end of post sharing the clock source, but at this point I’m now considering your more advanced approach with more dongles (for radio astronomy) and a clock distrib system. You mentioned being using the std 28.8 XTAL on the CDCLVC1310-EVM board: does the board behave well with that or would you consider/suggest trying a TCXO instead ? since I have one already, it could be a nice addition if it is possible to solder that 4 pins SMD to the TI board… I’m really interested in your feedback. Cheers, Mario
Hi Mario, the TI board works ok with the 28.8Mhz XTAL and probably will work ok also with a TCXO. The stability of the board’s out clocks still depends on the stability of the input clock. In my case it was the phase difference that I was interested in and not the overall stability of the clock so as long as the out clocks are synchronized it does not matter how the clock is drifting (for my specific application). Still it could be different for you.