The so-called "RTL-SDR" dongles are devices that have become quite popular owing to their low cost and their ability to cover a wide frequency range - typically from a few hundred kHz to nearly 1GHz, depending on the device.
At the upper end of this range (above approx. 60 MHz) they use a built-in frequency converter to produce quadrature signals to be digitized, allowing them to "see" a swath of frequencies about the center. For lower frequencies there are two options:
The "direct" method:
The "dynamic range" problem:
With 8 bits one can only attain an overall dynamic range of about 48dB (the actual amount is actually harder to calculate owing to oversampling, decimation, reduction in effective A/D resolution, thermal and circuit noise, etc.) The problem arises from the fact that a "weak" signal at, say, 160 meters may be on the order of 1 microvolt (-107dBm) but a nearby AM broadcast transmitter may be presenting a signal that could be 500 microvolts (-53dBm) or even much more! In our example, we can see that this could pose a signal difference of 54dB - above the range that can be represented using an 8 bit converter. In other words, assuming a 48dB dynamic range of our A/D converter, if we adjusted our levels so that a 1 microvolt signal (-107dBm) just barely registered on the A/D, any signal(s) that were 48dB above this (-59dBm) would "max out" our converter - again, ignoring oversampling, etc.
In other words, if we were to carefully adjust our signal level to our RTL-SDR (using an attenuator) such that we were just below the signal level that "maxed out" our A/D converter, our weak signal would be below the signal level represented by the lowest bit and it would (probably)be lost in the noise. Conversely, if we tried to bring the weak signal up to the point where it was out of the quantization noise of the A/D converter, we'd be overloading our A/D, causing distortion and making it work very badly.
Extreme case: Monitoring both the AM broadcast band and 160 meters
To illustrate this problem, let us look at the signals present on an HF antenna located in the Salt Lake City area, below:
The "top" end of this plot (far right) includes the entirety of the 160 meter band and at this (rather noisy) site location we can see that the background noise is presenting us with a signal level of about -80dBm (about 22 microvolts) of noise. In a truly "quiet" location, away from power lines and other urban QRN this noise floor would be 10-15dB lower during daylight hours, or in the area of -95dBm (about 4 microvolts.)
From this plot we can see several problems that arise if we want to use an RTL-SDR:
"Squashing" the signal levels
Clearly, if we want this system to work in both environments we need to reduce the levels of the strong broadcast band signals while boosting the weak signals on the 160 meter band and the way to do this is with some filtering. If we design a "band stop" filter that will attenuate only the broadcast band signals we can prevent the dongle from being overloaded as badly.
Let's design a hypothetical band-stop filter that will reduce signals in the broadcast band by 30dB (1000-fold) but leave those outside the band alone: Will this help?
Taking the strongest signal (1160 kHz) and reducing it by 30dB means that instead of +3dBm it will now be -27dBm - better, but this is still about 53dB above our 160 meter noise floor. What about the other signals on the band? That signal at marker #4 (1230 kHz) will be reduced from -36dBm to about -66dBm - quite weak, but still audible, albeit a bit noisy. What about those other stations that are weaker-still? Those will get submerged reduced as well, getting down near the -79dBm "minimum signal level" for the RTL dongle. Even by reducing this level, we still haven't done anything to bring up the 160 meter signals at all.
To make it work we will need to do more. One way to do this is to apply selective filters to the strongest signals to reduce just those signals. Looking at Figure 1, again, we can see that if we were to considerably reduce the strongest signals by 20-30dB, we'd "compress" the range between the strongest and weakest signals and allow us to be able to deal with them with our range-limited RTL dongle. Figure 2, below, shows what the AM broadcast band looks like once we have done this:
How this may be done:
At the upper end of this range (above approx. 60 MHz) they use a built-in frequency converter to produce quadrature signals to be digitized, allowing them to "see" a swath of frequencies about the center. For lower frequencies there are two options:
- Use a "direct" input (e.g. the "I" or "Q") and sample the HF frequencies directly. This allows the hardware to work directly at these low frequencies with only minor modifications.
- Use an "up-converter" to move the entire HF range to a higher frequency. As an example, devices are available that will convert signals up by 100 MHz, meaning that a 5.0 MHz signal will be tuned in at 105.0 MHz.
The "direct" method:
- It is very simple to implement in that it uses would would normally be an unused input. Many dongles already include this modification - but if not, it may be easily added (instructions may be found on the web.)
- The frequency stability can be better than the "upconversion" method since it is always lower - and there is only one oscillator that must be kept stable.
- This has the disadvantage that the sample rate is about 28.8 MHz meaning that signals above 14.4 MHz will be aliased. For example, a signal at 21.25 MHz will also appear at (28.8 - 14.4 = ) 7.55 MHz. This can usually be mitigated by the addition of band-pass filtering around the frequencies of interest if "fixed frequency" operation is expected.
- The "direct" input is typically quite "deaf", often requiring a bit of amplification if it is to be used for microvolt-level signals. In testing, it took about 7 microvolts (-90dBm) for a CW signal to become audible, about 15 microvolts (-84dBm) for an SSB signal to be readable and around 25 microvolts (-79 dBm) for an AM signal to become listenable. In other words, the sensitivity of this unit is 20-30dB worse than a modern receiver in "direct" input mode!
- The "image" problem associated with "direct" method is avoided.
- In this method there are two oscillators that can contribute to drift: The (typically) 100 MHz oscillator used for the up-conversion and the clock reference in the receiver itself. Because both of these are operating at a rather high frequency - and because there are twoof them - drift can be exacerbated.
- The mixers used for frequency conversion can, in some cases, be overloaded by strong signals meaning that signals may be degraded before they get to the receiver.
The "dynamic range" problem:
With 8 bits one can only attain an overall dynamic range of about 48dB (the actual amount is actually harder to calculate owing to oversampling, decimation, reduction in effective A/D resolution, thermal and circuit noise, etc.) The problem arises from the fact that a "weak" signal at, say, 160 meters may be on the order of 1 microvolt (-107dBm) but a nearby AM broadcast transmitter may be presenting a signal that could be 500 microvolts (-53dBm) or even much more! In our example, we can see that this could pose a signal difference of 54dB - above the range that can be represented using an 8 bit converter. In other words, assuming a 48dB dynamic range of our A/D converter, if we adjusted our levels so that a 1 microvolt signal (-107dBm) just barely registered on the A/D, any signal(s) that were 48dB above this (-59dBm) would "max out" our converter - again, ignoring oversampling, etc.
In other words, if we were to carefully adjust our signal level to our RTL-SDR (using an attenuator) such that we were just below the signal level that "maxed out" our A/D converter, our weak signal would be below the signal level represented by the lowest bit and it would (probably)be lost in the noise. Conversely, if we tried to bring the weak signal up to the point where it was out of the quantization noise of the A/D converter, we'd be overloading our A/D, causing distortion and making it work very badly.
Extreme case: Monitoring both the AM broadcast band and 160 meters
To illustrate this problem, let us look at the signals present on an HF antenna located in the Salt Lake City area, below:
The "top" end of this plot (far right) includes the entirety of the 160 meter band and at this (rather noisy) site location we can see that the background noise is presenting us with a signal level of about -80dBm (about 22 microvolts) of noise. In a truly "quiet" location, away from power lines and other urban QRN this noise floor would be 10-15dB lower during daylight hours, or in the area of -95dBm (about 4 microvolts.)
From this plot we can see several problems that arise if we want to use an RTL-SDR:
- The strongest signal (marker #1 at 1160 kHz) is about enough to case the front-end static-protection diodes built into good-quality dongles to conduct and cause intermodulation distortion on their own.
- The signal level differences between the strongest local signal (marker #1) and the weakest (marker #3) is nearly 40dB below that of the strongest signal - which is almost all of the range of our A/D converter. There are "nearby" stations located farther away that are even worse off - such as the station located at marker 4 that is about 60dB down (1-millionth) of the signal level of our strongest.
- If we wanted to listen to local AM broadcast signals and be able to receive signals on 160 meters we would need manage the fact that there is about 80 dB difference (a factor of 100 million) between the strongest signal and the noise floor! What's worse is that this -80dBm (ish) noise floor at 160 meters isn't all that much higher than the noise floor of the RTL dongle itself.
"Squashing" the signal levels
Clearly, if we want this system to work in both environments we need to reduce the levels of the strong broadcast band signals while boosting the weak signals on the 160 meter band and the way to do this is with some filtering. If we design a "band stop" filter that will attenuate only the broadcast band signals we can prevent the dongle from being overloaded as badly.
Let's design a hypothetical band-stop filter that will reduce signals in the broadcast band by 30dB (1000-fold) but leave those outside the band alone: Will this help?
Taking the strongest signal (1160 kHz) and reducing it by 30dB means that instead of +3dBm it will now be -27dBm - better, but this is still about 53dB above our 160 meter noise floor. What about the other signals on the band? That signal at marker #4 (1230 kHz) will be reduced from -36dBm to about -66dBm - quite weak, but still audible, albeit a bit noisy. What about those other stations that are weaker-still? Those will get submerged reduced as well, getting down near the -79dBm "minimum signal level" for the RTL dongle. Even by reducing this level, we still haven't done anything to bring up the 160 meter signals at all.
To make it work we will need to do more. One way to do this is to apply selective filters to the strongest signals to reduce just those signals. Looking at Figure 1, again, we can see that if we were to considerably reduce the strongest signals by 20-30dB, we'd "compress" the range between the strongest and weakest signals and allow us to be able to deal with them with our range-limited RTL dongle. Figure 2, below, shows what the AM broadcast band looks like once we have done this:
- The strongest signals are reduced by about 20dB
- The weaker signals are reduced a bit overall, but not as much as the strong ones owing to our attempts to selectively reduce only those that are strong.
- The noise floor at 160 meters has been increased by 20dB.
- The difference between the strongest broadcast band signals and the 160 meter noise floor is now 40dB - within the usable range of the 8 bit converter in our RTL dongle.
How this may be done: