Previously I successfully did some receiving and some transmitting over the amateur radio transponder on the satellite QO-100. That is to say, my FT8 was heard by others (but not me, due to my small dish), and I successfully decoded FT8 from some others.

There are three problems with my QO-100 ground station:

  1. It’s not permanent. It’d need some weather sealing, both for the dish and other active equipment near it.
  2. The dish is too small. It works well enough to prove that the satellite is there and everything else works, but a permanent install should have a bigger dish.
  3. The frequency stability was not good enough for decoding everything. In this screenshot we can see all signals skewing the same way, which means it’s my receiver that’s skewing.

I really appreciate the constant FT8 activity when tuning my station. Sure, I could look at the band edge beacons, but I like this too. And strangely, I can not actually find the edge beacons.

Today is about the third issue: Frequency stability. Because the B200 was GPS locked last time, the main suspect was the LNB. The Othernet Bullseye LNB TCXO from Passion-Radio.com is a fine LNB, but it’s not GPS locked.

After blaming weather (either too hot and sunny, or raining), I finally took the time to test the replacement LNB from DXPatrol. It requires an external LO at 25MHz, so for that I use the DXPatrol GPSDO V3. I’ve previously used it to frequency lock my ICOM IC-9700, though set to 10MHz as that’s what that radio wants.

The uplink signal was already generated by the GPS locked B200 at 2.4GHz, so though it went through amplification, I’m pretty sure its frequency is perfect, so today was a receive only test.

Today’s experiment

First I connected the known setup with the old LNB, to confirm that I’m pointing towards the satellite. LNB - Bias-Tee (from 13.6V battery) - B200. I started my old flowgraph and immediately heard FT8. Hooray!

FT8 is supposed to be at 40kHz into the NB (narrowband) section, which starts at 10.4895GHz. I heard FT8 at 58kHz, just like last time, meaning 18kHz “wrong”. That’s 1e6*18e3/10.4895e9=1.7 ppm, which is within the advertised 2 ppm.

I replaced the LNB with the DXPatrol one, having carefully marked which cable is signal and which is LO. I configured the GPSDO to output 25MHz and connected it to the LO port.

After tweaking my GNU Radio flowgraph, specifically enabling averaging on the waterfall, and sliding the min/max thresholds, I visually found what appeared to be the strongest signal, with pauses and a repeating pattern every 15 seconds. A dead giveaway for FT8 or possibly JS8.

I found it at offset 354kHz. That’s… odd. That’s 30 ppm off frequency. But my main goal here is not frequency accuracy, but frequency stability. I can compensate more easily for an offset.

So I take some recordings, both with the GPS-locked B200 and with a LimeSDR mini. They both have the signal at 354kHz. Not very surprising that LimeSDR mini is about as good as a B200. At least within a kHz. I would expect the LNB part to be the source of the inaccuracy, since a small percentage error will become a larger frequency offset before downconversion.

But after I was done outdoors for the day, and looked closer at the recordings, I noticed that there is clearly also a signal at the expected 40kHz. It’s weaker, but it’s there. So am I bang on frequency? What does that say about the stronger FT8 signal at 354kHz? It’s not a nice round number of any frequency I’m aware of. Is it introduced inside the LNB? Inside the SDR? Digitally from my GNU Radio flowgraph?

I have a recording saved to file after only doing frequency translated filter with a 2x decimation, and I can see the 354kHz FT8 on a waterfall directly from that. So unlikely to be anything in my demodulation.

354kHz is part of the “broadcast” section of the band plan. RSGB says they broadcast on Sundays, but not until 14:00, and this was before that.

Checking a websdr it does not seem like 354kHz has any FT8. At least now, an hour or so after my recording.

Possible sources of the FT8

  • Maybe there really was FT8 there at the time. Unlikely since it’s in the wrong part of the band. If they decode, I can see if 40kHz and 354kHz decode to the same thing, in which case it’s a ghost copy.
  • An artefact inside the LNB? Maybe.
  • The LNB not being happy with the cleanliness of the GPSDO signal? Maybe.
  • Unrelated ground based contacts? Very unlikely, as the dish is directional, and the signal goes away if I rotate the LNB to the wrong polarity.
  • Another satellite? No. It’d be on a different frequency, and there is no other geostationary amateur radio satellite.
  • Artefact inside the Bias-Tee? Seems unlikely, since it’s an RF passive component. But who knows what could happen at these frequencies.
  • Artefact inside the B200? Unlikely, as the LimeSDR recording shows the same exact thing.
  • Artefact from QO-100 itself? Unlikely. I don’t see it on the websdr.
  • Dopplered bounce on something? No, it wouldn’t stay there.

So do they decode?

I started a pipewire loopback, fed it from a GNU Radio flowgraph, and tried to decode.

pw-loopback -m '[ FL FR ]' --capture-props='media.class=Audio/Sink node.name=ft8_sink'

Yes, some decode on 354kHz. Germany, Tajikistan, Poland, etc. So definitely not local. I still see the slant on some signals, so something is short term clock drifting. They decode when demodulated as USB, as one would expect.

Some decode on 40kHz too, where we expect the signal to be. Fewer, and not a strict superset. But as it’s unlikely several operators would be on two frequencies, I think this proves that it’s the same signal.

But I expected more decodes, now that I’m fully GPS locked, and with FT8 at least showing up exactly on the expected frequency, it does seem in some sense “better” than my previous setup.

So this should leave me with these potential sources of the ghost:

  • LNB artefact due to LNB itself.
  • LNB artefact due to GPSDO ref signal.
  • Something funky with my very simple flowgraph of only an FFT filter.
- name: freq_xlating_fft_filter_ccc_0_1
  id: freq_xlating_fft_filter_ccc
  parameters:
    affinity: ''
    alias: ''
    center_freq: ofs       # <-- 100k
    comment: ''
    decim: '2'
    maxoutbuf: '0'
    minoutbuf: '0'
    nthreads: '4'
    samp_delay: '0'
    samp_rate: samp_rate    # <-- 4M
    taps: firdes.low_pass(1,samp_rate,450000,10000)

That’s the only thing between my UHD Source (or Soapy LimeSDR Source) and the File Sink.

I ain’t afraid of no ghosts

But the ghosts were not the problem I was trying to solve. I wanted un-slanted FT8. That’s what I think was missing for decodes to work.

But it still kinda looks slanted. Hard to tell in the weaker 40kHz signal, but what else could it be? The signals are clear to my ears and visibly on the spectrum they’re clearly there. My experience with FT8 is that if you can hear it, then it can definitely decode it (unless signals overlap). But I see very few decodes.

Skew at 40kHz

More visible with the ghost at 354kHz:

Skew at 354kHz

My theory is still that the skew is preventing the decodes. Which means that sadly, changing to a GPS locked LNB did not fix my main problem.

Future troubleshooting steps

  • Use various attenuators for the LNB LO signal.
  • Look closer at the recordings.
  • Loop the recordings into wsjtx for decode.
  • Inspect the cleanliness of the GPSDO 25MHz ref signal.
  • Use B200 LO offset instead of manual frequency translation.

A digital solution?

A better fix may be to use the satellite’s CW or PSK beacons to frequency lock in the digital domain. Then the analog frequency imperfection may not matter. Won’t help with the ghosting, of course.

Yes, that’d be great. But I don’t see or hear the beacons. The main reason for this is the size of the dish. I always knew that the dish size was a problem, but it was a proof of concept. And it was successful. So yeah, maybe it’s time to buy a larger dish, and figure out an acceptable mounting solution.

Random notes

  • Use wireless headphones. There will be enough cables and going back and forth that you do not want to stumble over another cable.
  • The GPS antenna for the B200 needs to be attached with its magnet to a metal ground plane, or it won’t get a lock. The DXPatrol GPSDO doesn’t need that.
  • The B200 manual says it needs external power, to use GPS reference. It’s demonstrably worked fine in the past, but could this be a factor?
  • Both LNBs create a 9.75GHz frequency downconversion, thus starting the NB downlink at 739.5MHz.
  • A calculator for the LNB angle says I should have about 19-20 degrees rotation, but 10-15 degrees gave a better signal.
  • The new LNB, while seemingly spot on on frequency, delivered a weaker signal. Perhaps it just needs a bit of jiggling to fit better in the dish?