[Hackrf-dev] images, high-side injection, and spectrum inversion

Michael Ossmann mike at ossmann.com
Fri Aug 15 10:43:03 EDT 2014


I've finally re-enabled high-side injection for spur avoidance when
tuning to frequencies below 2150 MHz in the HackRF firmware.  If you
want to try it, you'll have to compile the firmware from git source.  If
it works well, I'll try to get a release out soon.

The primary benefit of high-side injection is reduction of images caused
by harmonics of the local oscillator (LO).  Here's an example:

Receiving at 1740 MHz with 2014.04.1 firmware:

The IF is set to 2560 MHz.
The front-end LO is set to 820 MHz.
2560 MHz - 820 MHz = 1740 MHz
Harmonics of 820 MHz are 1640 MHz, 2460 MHz, 3280 MHz, etc.
FM broadcast signals from around 100 MHz appear as images in the
received signal because 2560 MHz - 2460 MHz = 100 MHz.

Receiving at 1740 MHz with git firmware:

The IF is set to 2401 MHz.
The front-end LO is set to 4141 MHz.
4141 MHz - 2401 MHz = 1740 MHz
Harmonics of 4141 MHz are 8282 MHz, 12423 MHz, etc.
The lowest harmonic that could cause a problem is 8282 MHz, but 8282 MHz
- 2401 MHz = 5881 MHz, way over the cutoff frequency of the image reject
filter.

Images caused by LO harmonics can be worked around by using explicit
tuning, but they are annoying, cause unfortunate spurs on TX, and create
a great deal of confusion, especially among new users.  I think it will
be much better to enable high-side injection by default.

Another way to think of high-side injection is that we tune to -1740 MHz
instead of 1740 MHz.  This explains why the baseband spectrum is
inverted when using high-side injection.  To correct this inversion,
Jared has updated the CPLD so that it can flip the sign of the Q
channel.  We enable Q inversion when using high-side injection.

The CPLD change has only been implemented for RX, however, so a known
bug with current git firmware is that the baseband spectrum is inverted
on TX for frequencies below 2150 MHz.  We'll try to get that fixed soon.
I will not cut a release with this bug.

If you want to try this stuff out, compile the firmware from source and
also update the CPLD.


More information about the HackRF-dev mailing list