A SMOS. That’s what we hardware engineers (and management, too) call it when something needs to be fixed and the hardware is already out the door. Fortunately, in this case it was indeed a software fix.
I’m talking about the QDX and the difficulty it had generating very small frequency shifts, as first noted by my friend Glenn (N6GN). I described the problem and my measurement techniques in these posts: http://wb6cxc.com/?p=244, and http://wb6cxc.com/?p=275
I became fascinated by this issue, and while adding some pretty useful features to my Time Interval Counter, the QDX gave me a great way to improve my measurement technique. In the process I re-connected with an old ham friend, and met some new ones who I really respect.
I also got to know the WSJTX mode FST4W, which uses much smaller/slower FSK than FT8 or WSPR. For example, a single transmission of FST4W-1800 takes a half-hour with a symbol period (Baud) of 11.2 seconds, using a 0.089 Hz tone spacing. This requires extreme accuracy and stability on the part of the transmitter and receiver. The FST4W (and WSPR) modes are being used to measure atmospheric Doppler shifts, among other things. Here’s a description: https://physics.princeton.edu/pulsar/k1jt/FST4_Quick_Start.pdf
Measuring FSK patterns is one thing, but analyzing the actual audio-to-RF frequency generation behavior called for a more deliberate approach. So, I set up my PC to generate a slow audio-frequency sweep (using the NCH Tone Generator program), and sent that into the QDX USB port. Actually, first I sent it to my Icom IC-7200 USB port and measured that output to make sure that my audio sweep (and measurement technique) were suitable. Here’s a 1000 to 1010 Hz sweep, transmitted on 20 meters:
I then tried the same sweep input with the QDX:
Here you can see the uneven and quite large steps, roughly 1.25 Hz each. This would work (barely) with the 1.465 WSPR tone spacing, but was completely unusable with the smaller tone-spacing modes. Here’s what FST4W-300 looked like (0.56 Hz tone spacing):
As you can see, one tone is being entirely skipped over, and the spacing on the others is incorrect. Not surprising given the sweep results.
I posted my measurements to the QRP Labs groups.io discussion (https://groups.io/g/QRPLabs/topic/qdx_fst4w_300_transmits_only/95257422 and elsewhere), as did Glenn and others, and Hans (QRP Labs owner and designer) dug right in to solving the problem. He quickly homed in on the algorithm that calculated the fractional divider values for the Si5351 clock generator chip used in the QDX, and he generously traded email with me, describing his progress and solution. It turns out it was a combination of limited floating point resolution and integer size. Hans also figured out a way to improve the algorithm by separating the carrier frequency calculations from the audio-offset calculations. The result was spectacular! Here’s the 10 Hz sweep using the new Beta 1_06_005 firmware:
And here is the QDX transmitting FST4W-1800 (0.089 Hz tone spacing):
This is perfect. The frequency-setting is now amazingly good.
And it was all just a Simple Matter Of Software!
But, there is still work to do if we want to use the QDX on the slower FST4W modes. The QDX transmit frequency drifts as the radio heats up during a long transmit cycle. This doesn’t really affect modes like FT8 or WSPR, but the small drift (about 1 Hz in fifteen minutes on 20 meters) will cause FST4W-300 and higher modes to fail. Here is the thirty-minute long FST4W-1800 transmit sequence (remember this is a tone-spacing of 0.089 Hz):
Probably the only reasonable way to get the needed stability is by using an external 25 MHz reference, probably a GPSDO (GPS Disciplined Oscillator). The QDX can be easily modified to accept an external reference, and I will be trying this fairly soon.
But all in all, this was a gratifying experience, and I salute Hans and QRP Labs for the speedy and spectacular work in solving a problem that most of the QDX users would never have even noticed. I now have two more QDX’s on order: https://www.qrp-labs.com/qdx.html