[Hackrf-dev] Determining exact tuning frequency

Phil Karn karn at ka9q.net
Sat Jun 23 02:11:37 EDT 2018


On 6/22/18 22:28, Chuck McManis wrote:
> Hi Phil,
> 
> What I've done is that I center tune into the neighborhood of where I
> want to tune, and then use either a DDC or a soft mixer function (in GRC
> or another module) to tune exactly where I want. If you're trying to
> homodyne to the precise frequency then I agree you'll not always be
> successful.

Yup, that's exactly what I already do with the AMSAT UK Funcube Dongle
Pro+. If the RF channel I want is outside the front end's passband, I
calculate a front end tuner frequency to park it at a nominal baseband
frequency, typically +/- Fs/4 so I can avoid DC artifacts. The Funcube
has a fixed 192 kHz sample rate, so I typically choose +/- 48 kHz.

Then I ask the front end to go there. Although the API lets me specify a
tuner frequency in 1 Hz steps, the fractional-N synthesizer can't
actually give them to me; the actual tuning step for that hardware and
choice of TCXO frequency is (IIRC) 1000/2048 Hz or some small integer
multiple thereof depending on the synthesizer's frequency-dependent
output divisor.

The Funcube's API doesn't tell me its actual exact frequency, so I
extracted the synthesizer programming formulas from its firmware and
execute them myself. Then I take the difference between the actual and
requested tuner frequency and fold it into my software oscillator (the
one running near +/-48 kHz).

As a fallback, I found that if I always request multiples of 125 Hz,
I'll get them exactly. (I can use smaller steps in the lower frequency
ranges, but it was easier to just pick 125 Hz as a worst case.)

Once the front end is close to the desired frequency I can make minor
tuning changes entirely in software, leaving the front end tuning alone.

I'd like to do the same thing(s) with the HackRF. I.e., if I can't get
the exact frequency for any requested frequency, I'd like to find the
smallest tuning step that will always give me exactly the frequency I
request.

> The other advantage of doing the tuning after you've got your pass band
> is that you can run multiple receivers off the same pass band data if
> they are all within range. One of my examples I show people is an FM
> radio with 5 different tuners. The HackRF is tuned to the center of the
> FM band and then I can move the 5 tuners anywhere within that band,
> demodulate them, and mix and match the audio. Nothing like having a bit
> of Classic Rock 98.5 in the background when listening to KFRC (KCBS FM)
> 106.9. 

Yup, I do exactly the same thing. I use multicast RTP to convey my IQ
data from the SDR front end to my software receiver, so I can simply run
multiple copies of the latter as long as they're tuned closely enough to
each other. I used it recently to receive APRS position reports from a
balloon that transmitted on both 144.39 and 144.34 MHz. Worked great.

Phil



More information about the HackRF-dev mailing list