The Kiwi SDR:
The Kiwi SDR is a stand-alone network-connected multi-user "SDR in a box" device with its own web interface that allows one to tune from (nearly) DC to at least 30 MHz. Using a 14 bit A/D converter, it is more robust than the RTL-SDR mentioned below, but it can still be overloaded by strong AM broadcast stations - so what follows can be applied.
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. There are two separate signal paths on these devices:
- Via the Raphael R820 chip. This has an onboard synthesizer, mixer and band-pass filters and it converts signals in the (approximately) 24-1300 MHz range to a lower frequency. This is the "normal" signal path used in these RTL-SDR dongles when use as they were originally designed for reception in the VHF and UHF bands.
- Right into the RTL2832 chip. This (typically unused) input may be made available via another connector, or via a frequency-splitting filter network as is done on the "RTL-SDR Blog" dongles. This input can work from a few 100 kHz to 10s of MHz, more or less.
If we want to receive the HF spectrum - which we'll call 500kHz-30 MHz (we'll include MF here...) we have to work around some issues. The most obvious is that the R820 chip can typically tune down to something in the 20 MHz range (it can sometimes be coaxed to go even lower) but it certainly cannot be relied on to work well down in the 1-5 MHz range.
The "direct" input has the advantage that is uses an 8-bit A/D that is sampling at 28.8 MHz followed by some DSP logic that allows signals in that stream to be internally converted to "baseband" samples - but the nature this chip poses a few problems. To receive the entire HF spectrum, we have two methods that may be used, but each of these has their own sets of quirks, advantages and disadvantages:
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 in direct mode is 20-30dB worse than a modern receiver. The RTL-SDR dongles used happen to have a built-in amplifier so their sensitivity is "reasonable".
- In this method there are two oscillators that can contribute to drift: The (typically) 100 or 125 MHz oscillator used for the up-conversion and the clock reference in the receiver itself. Because both of these oscillators are operating at a rather high frequency - and because there are two of them - drift can be exacerbated.
- The "image" problem associated with "direct" method is largely avoided.
- 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, thermal and circuit noise, external 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.
The importance of band-pass filters:
Whether you are using the RTL-SDR dongle in the "direct" mode with with a converter it would be a very good idea to limit the signals arriving at its input to only those of interest as much as possible. This need contradicts the desire of many users of this device to cover from "DC to Daylight" - but if one attempts to put such a large frequency range into the antenna, performance will suffer: If the unit doesn't just overload, there will likely be issues with trying to receive weak signals in the presence of strong ones - and with just 8 bits of A/D conversion, if that difference is greater than 40dB, you may see significant degradation.
When used in the "normal" mode where the R820 chip is acting as frequency converter, the A/D converter in the RTL2832 chip sees a somewhat limited spectrum owing to filtering in the R820 chip - but despite this filtering there is still the problem of "weak versus strong" signals that are within this passband - not to mention the fact that it just doesn't take a lot of signal to overload the R820 outright.
If you are using "Direct sampling" mode on HF, the program is more severe: The entire HF spectrum being applied at the RF input is being digitized by a measly 8 bits which means that even if you are running the RTL2832 in the 2048ksps mode where you can "see" 2 MHz of spectrum, signals from the rest of the spectrum are still being digitized by that 8 bit converter. If you consider that the signal-handling capability of the 8 bit A/D to be a limit to the total RF power being applied, you may be "wasting" much of this A/D capability at frequencies that are of no interest to you at all!
Images in the "direct" mode:
A worst-case example: 20 meters
If you are running "direct" mode, the problem is worse, still: As noted above, the sampling rate of the A/D converter is 28.8 MHz, which means that signals above the Nyquist limit at half this frequency - 14.4 MHz - will "reappear" elsewhere. For example, if you were listening at 14.300 MHz on the 30 meter band - which is 100 kHz below the 14.4 Nyquist limit - you would also hear signals at 14.500, which is 100 kHz above the Nyquist limit. Similarly, if you were tuned to an AM broadcast station at 1.0 MHz - 13.4 MHz below the Nyquist limit - you would hear signals that were at 27.8 MHz - 13.4 MHz above the Nyquist limit.
In the second case, it's pretty easy to filter out the 27.8 MHz signals: A simple low-pass filter will do, but in the first case - using the RTL-SDR Dongle at 20 meters - things are quit different as it is difficult to build a filter that will pass signals at 14.35 MHz with little attenuation but block signals at 14.45 MHz - the "image" of 14.35 MHz - sufficiently. What this means is that are several MHz away from this 14.4 MHz limit, you can probably get away with filtering in the "direct" mode - but the closer you get (say, 13-16 MHz) the more difficult it will be to remove the image.
The typical work-around for this is to convert the HF range to a higher frequency - typically by mixing it with a local 125 MHz oscillator, so instead of 20 meters being tuned in at 14.0-14.35 MHz in direct mode, it would be at 139.0-139.35 MHz. This works pretty well, although oscillator stability - both in the RTL-SDR dongle's synthesizer and in that added 125 MHz oscillator - is much more of a concern as the frequency at this 139 MHz frequency could drift hundreds of Hz between the two oscillators whereas in direct mode - with only one oscillator - the absolute frequency is much lower (about 1/10th) along with the amount of drift.
Even with the "upconverting" technique, you are not excused from needing to have front-end filtering: The limits of the 8 bits of A/D conversion and those of the circuitry still apply!
Another approach for 20 meter coverage:
Taking our 20 meter example, while we could upconvert - which would be the easiest approach if you happened to by an RTL-SDR with an upconverter - another approach would be to convert the frequency band from 14.0-14.35 MHz down to, say, 4.0-4.35 MHz by using a mixer and a 10 MHz oscillator: This lower frequency would imply higher stability and the filtering requirements would be greatly relaxed as compared to up-converting by 100 or 125 MHz: An example of such a circuit may be seen below in Figure 1.
link) - so if you don't wish to build your own, you may order a kit of parts for the band of your choice from them.
This filter is not nearly "sharp" enough to pass the top end of the 20 meter band (14.35 MHz) and sufficiently block its nearest image frequency (14.45 MHz) if we were to use "direct" mode with the 14.4 MHz Nyquist limit so we down-convert the 20 meter band from 14.0-14.35 to 4.0-4.535 MHz, instead - well away from from the image response. The bandpass filter limits the number of signals that get converted and provide enough filtering to minimize an image response that could occur due to the converter itself - that of the sum frequency (e.g. 24.0-24.35 MHz). Transistor Q1 boosts the HF signal somewhat to overcome the loss of the filter and of the mixer and low-pass filter following it.
The local oscillator that I used was a 10 MHz OCXO (Oven-controlled Crystal Oscillator) that I had kicking around and its output was at TTL levels - a 5 volt square wave, so R5 was placed in series to knock this down to about 1 volt peak-peak at the "LO" input of U1, a diode-ring mixer. I had originally intended to use an inexpensive 10 MHz TCXO (Temperature-controlled crystal oscillator - Digi-Key PN: 1664-1262-1-ND) but this turned out to be unavailable at the time I constructed it: Had this part been on-hand I would have included a 3.3 volt regulator for the TCXO and would have omitted R5. In a pinch, a "crystal can" 10 MHz computer-grade oscillator could have been used, but these - unlike the TCXO that I would have used - are not particularly accurate in frequency or stable with temperature (e.g. they would be within "only" 100ppm or so - which could be about 1 kHz at 10 MHz.)
The output of the mixer is passed to a low-pass filter to remove the "other" image resulting from the mixing product (24.0-24.35 MHz) as well as "bleedthrough" of the 10 MHz local oscillator - the presence of which could degrade the performance of the RTL-SDR.
This entire device was constructed "Manhattan Style" on a piece of copper-clad circuit board using "Me Squares" (from QRP-ME - link) which was mounted in the lid of a die-cast aluminum enclosure.
Is "Direct mode" worth the trouble?
Why use the "direct" mode at all? When the frequency is converted, drift can be a concern, and this is significantly reduced in "direct" mode - and it is quite simple to implement in hardware: Many dongles - like the "RTL-SDR Blog" dongle have a diplexing filter (and amplification on the "direct" branch) that make it easy to use - provided that one be aware of the limitations!
In cases where the frequency is quite low - say, below 12 MHz - it is pretty easy to apply band-pass filters that will remove the image response above 14.4 MHz. Above the Nyquist frequency we can actually use this effect to our advantage and directly tune in the 17 and 15 meter bands, using band-pass filters to limit the input to only those frequency ranges. We again hit another Nyquist response at 28.8 MHz, but by then the low-pass filter built into the dongle is starting to take effect.
Whether or not you use direct mode, you will want to apply a bandpass filter to the input to limit the signals to those of interest - that is, if you really want to minimize the possibility of overload.
In short: Is the "direct" worth the trouble? In those instances specified above, it can be, owing to its relative simplicity and improved frequency stability as compared to the "upconverter" method.
Extreme case: Receiving 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 (notch) filters to the strongest signals to reduce just those signals. Looking at Figure 2, 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 3, 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 around 40dB - within the (theoretical) usable range of the 8 bit converter in our RTL dongle.
How this may was done:
After using the Elsie program (there's a "free", somewhat cripped student version that's adequate for this task) and perusing my "Filter Design Handbook" by A.B. Williams I designed a "band stop" filter that was designed to cover the AM broadcast band - that is, provide at least 30dB of attenuation from about 540 to 1725 kHz. Within this range, the attenuation can be much higher - greater than 60dB - but I was (theoretically) guaranteed that the minimum would be 30dB - and I ended up with the circuit, below:
Because one may want an "unadulterated" signal path for other purposes, a two-way signal splitter (L1/L2) is included: The added 3dB loss is irrelevant with a decent HF antenna and modern receivers in terms of ultimate system sensitivity. One branch of the filter is passed through a resistive attenuator that helps set the source impedance to the band-reject filter and again, this added loss isn't much of a concern on a decent HF antenna.
The AM BCB filter was designed for a nominal center frequency of 950 kHz and each series and parallel L/C circuit is tuned to that frequency. The capacitor and inductor values were juggled to attain the closest standard values (or permit parallel combinations of standard-value capacitors) - this variation from the "ideal" having negligible effect on performance. The capacitors used are all 5% NP0 (a.k.a. C0G) types for stability and the inductors are wound on T50-1 toroids using 30 AWG wire: The values of the inductors were checked and adjusted with a known-accurate L/C meter after winding and it was determined that the calculated number of turns typically yielded inductance that was 5-10% high - a direction preferable to the other as adjustment simply required the removal of a few turns. (Yes, I wound toroids: Lots and lots of toroids!)
Across the output of the band-stop filter is a set of simple series L/C notch filters. I happened to have on-hand some inductors that were adjustable from about 8uH to 15uH and number crunching indicated that with just three capacitor values, the entire AM broadcast band could (more or less) be covered with a bit of overlap. The first three notch elements (those at the right side of the string) used just a single capacitor as it was anticipated that there would be at least one station in the low, middle and upper portion of the AM broadcast band that would need to be reduced in strength. The remaining four notches use two capacitors with computer-type push-on jumpers that allow the smaller capacitor to be selected for the upper portion of the broadcast band, the larger for the middle and the two together for the lower portion - or complete removal of the jumpers would disable the notch altogether.
The specific value of the inductor used for the notch filters is not important - it could be anything from around 4uH to 33uH, values calculated using an equation like: L*C = 25330/((Freq in MHz)^2), where "L*C" is the product of the inductance times capacitance: One simply divides this number by the amount of capacitance in pF (or inductance in uH) to get the "other" value.
When choosing inductors it is very helpful if its tuning has a 2:1 adjustment range: If this is the case, three selectable capacitor values ("A", "B", "A+B") as described on the diagram will allow coverage of the entire AM broadcast band. Unfortunately, it is getting more difficult to find small, adjustable inductors, so one must keep an eye out for them at surplus outlets or be prepared to modify 455 kHz IF transformers/AM tuning inductors such as those available from Kits and Parts (link).
Ignored up to this point are R5 and R6 - the "bypass" adjustment that reinjects signals back into the filter's output. It may seem strange to build a filter that removes signals in the AM broadcast band - only to put them back again - but it does make sense if you do want to be able to receive such signals, but be able to strictly control their levels at the receiver input terminals - more on this later.
Following the filter is a broadband RF amplifier constructed using the venerable 2N5109 transistor - a rugged, low-distortion device that is readily available from many suppliers. This amplifier provides a reasonably low noise figure for HF (in the 5dB range) along with about 12-14dB of gain, overcoming the losses of the front-end splitter, attenuator and filter with a bit of room to spare. Theoretically, the system noise figure at this point will be on the order of 9 dB, but considering the nature of the HF spectrum and the fact that even at 28 MHz an "acceptable" system noise figure is around 15dB, we aren't really suffering due to the losses in this signal branch.
Following this amplifier is another 2-way splitter - and then another amplifier with splitter: This second amplifier with splitter - which is probably a bit of overkill - is useful for some types of wideband SDR devices, such as the RTL-SDR dongles: When these are coupled with filtering and an adjustable attenuator, a bit of "excess" gain is handy to be able to throw away when setting the RF levels into them.
A balancing act:
As mentioned above, there is a "bypass" adjust that is used to allow the reinjection of AM broadcast signals back into the signal path and with the components shown the usable adjustment range is from about -35 to -15 dB. As it turns out only a few of the signals that one is likely to intercept will be strong enough to cause problems while the rest are quite low. At night the cumulative signal power of the myriad stations arriving by "skip" can cause a receiver like an RTL-SDR to become overloaded, but by having 10-20dB of added attenuation we can keep this total signal power down to a more reasonable level.
As can be seen on the YELLOW trace of Figure 3, above, there are a few stations that stick way above the general level of the other stations and the trick is to knock these down so that they are still "strong enough", but not so strong that the receive system is overloaded. By using the notch filters, the strongest of the stations can be reduced by 20-30dB, putting their signal levels on par with the rest as is demonstrated by the CYAN trace if Figure 3.
There is a side-effect of such a simple notch circuit - that being that the signal a few 10s of kHz above the notch frequency can be boosted by 10dB or so. Unless that signal is quite strong, this is of little importance - but if is a problem one can carefully park the notch between the two signals, attenuating the strong, lower signal adequately while moving the "peak" above the upper signal.
At this point the real balancing act occurs. In the case of this filter assembly, the receiver itself was an RTL-SDR dongle that was intended to cover from about 460kHz to 2500 kHz which encompasses the entire AM broadcast band plus the 630 and 160 meter amateur bands. This proved to be a bit of a challenge as the signals in the two amateur bands could be as low as a few microvolts while those in the AM broadcast band were noted to be in the hundreds of millivolts - a span of around 90dB, which would be a challenge even for a 16 bit A/D converter, not to mention the measly 8 bits of an RTL-SDR.
By knocking the strongest AM broadcast band signals down by 25dB with a notch and another 20dB with the band-stop filter we can get reasonably close to our goal. Even with the overall AM broadcast band attenuated by 20dB, a reasonably sensitive and properly adjusted receive system can still receive some of the weaker stations during the daytime (which really aren't all that weak) and still yield a band full of signals at night!
The other part of the balancing act is to set the signal level at the input of our receiver - an RTL-SDR dongle: We have "excess" signal coming from our filter/amplifier network which means that we can knock it down again with an attenuator - which for an RTL-SDR could simply be a 100-200 ohm potentiometer paralleled with a fixed resistor (to achieve something in the 50-75 ohm area - the actual impedance isn't really important) with the "wiper" side feeding into the receiver. At this point one would increase the attenuation just to the point below where the RTL-SDR's A/D converter started to clip significantly - and this sort of adjustment would have to be done under various conditions. In my case, it was checked during the daylight hours when a number of the local stations were running their full 50kW and again at night when these stations were running lower power - but there were many other stations of low-moderate strength being propagated via skip.
Also included in this balancing act is the adjustment of the "bypass" control: Too little bypass, the weaker AM signals cannot be heard, but too much and the receiver will overload. It need not be said that this set of adjustments is trial-and-error, but it is quite possible.
Contained in Figure 6, below, is a trace captured from exactly the system described above as used on the Northern Utah WebSDR - link where you may see this filter in action, with the visible signals varying wildly depending on whether it is local day or night. This receive system is connected to a large antenna (which is designed to work only down to 3 MHz, but still intercepts signals below this range quite will) and it passes through the splitter/filter/amplifier system depicted in Figure 4.
To achieve this result the RTL-SDR dongle is being run in "direct" mode and there is a 2.5 MHz low-pass filter and adjustable attenuator placed between it and the output of the BCB filter unit - the low-pass filter being used to remove the energy from those signals above the frequency range of interest.
Testing with the KiWiSDR:
The described filter was tested with a KiwiSDR as well and owing to its superior dynamic range and usable sensitivity, it could actually "hear" the ionospheric background noise through the filter - with the possible exception being frequencies immediately adjacent to the notches.
Without the filter, the KiwiSDR was on the "hairy edge" of overload during the daytime when several local AM stations are running 50 kW - and even if the A/D converter isn't being driven into clipping/overload, it could be argued that performance across the board could be subtly impacted. The effects of the filter on the signal levels in the AM broadcast band and beyond can be seen in Figure 7, below:
As can be seen, it is possible to deal with wide signal ranges when using a receiving device that has intrinsically poor dynamic range - but it depends on several things:
- The signal levels need to be fairly predictable. In this case, the signal levels on the AM broadcast band are very consistent - at least during the the day when the majority of the local "powerhouse" daytime-only 50kW stations are on the air.
- Outside the filter's range the signals are typically much weaker owing to the fact that they are being propagated via shortwave from relatively low-power transmitters.
- The ability to manage the signal levels overall: The "compressing" of the range of the signal strength of the "local" AM stations with band-reject and notch filters helps out a lot!
This page stolen from ka7oei.blogspot.com