QDX upconversion accuracy is not adequate for HF FST4W operation


Glenn Elmore
 

In examining the QDX spectrum while transmitting FST4W on HF  the RF tones produced are found to be in error to such a degree that excess spectral spreading iis produced which severely compromises or prevents FST4W decodes. Essentially the up-conversion algorithm is not properly setting RF tones. This error can easily dominate ionospheric spreading over one and two hop paths, eliminate FST4W decodes and can even reduce chance of decode on WSPR. This problem has been identified with both v1.04 and v1.05 FW.  A different transmitter also using the Si5351 synthesizer doesn't exhibit this problem.

Details and support for this is provided in the attached pdf.

Glenn n6gn
Fort Collins, CO


ajparent1/kb1gmx
 

That's not odd as I remember reading that QDX is FSK or OOK  and
not able to reproduce any amplitude components because of
class D amp (with fixed amplitude drive).  

So any of the modes where amplitude variation is part of the signaling will not
be 100% reproduced.  

It doesn't take much to get from simple to full out SSB radio when you start
adding things.  Then you need a whole lot of other electronics to do what
amounts to phasing or filter SSB or SDR.    The problem with that is to
preserve amplitude information linear power chains must be used.
The cost for that is power, heat, and complexity.

Allison
------------------
Post online only, please no email.


Glenn Elmore
 

FST4W, like WSPR, is constant amplitude. Other constant amplitude implementations with the Si5351 do not show this problem as the QDX does.  
The error measured is a frequency error. The QDX upconversion implementation is not faithfully following the incoming audio and that is causing spectral spreading of energy from one symbol into other symbol's postion. This effectively reduces SNR and eventually makes the spot impossible.


KEN G4APB
 

Just as a test, I ran FST4W on my all mods done QDX v3a, FW 1_05,on 20m. Receiving locally using WSJT-x I could only decode my QDX transmission in the shortest mode (T/R 120S).
The 300Sec and 900Sec modes did not decode.

I was going to try this on the LF bands but for some reason my QDX will not transmit lower than 3.0MHz. 
FW v1_05 is reported to cover 0.3-60MHz now, and I set my configuration on my lowest band for 300,000khz but it did not help.

BTW, running 'normal' WSPR on 20m, same QDX, gave me spots world wide.
73 Ken G4APB


Afghan Kabulldust
 

Ken,

QDX will not work below 630m



6

On 19 Oct 2022, at 09:27, KEN G4APB <lfoofui.nbz42@...> wrote:

Just as a test, I ran FST4W on my all mods done QDX v3a, FW 1_05,on 20m. Receiving locally using WSJT-x I could only decode my QDX transmission in the shortest mode (T/R 120S).
The 300Sec and 900Sec modes did not decode.

I was going to try this on the LF bands but for some reason my QDX will not transmit lower than 3.0MHz. 
FW v1_05 is reported to cover 0.3-60MHz now, and I set my configuration on my lowest band for 300,000khz but it did not help.

BTW, running 'normal' WSPR on 20m, same QDX, gave me spots world wide.
73 Ken G4APB


Hans Summers
 

Hello Glenn

Please could you try 1_03 and let me know the results? Also please could you confirm which PCB revision you are using?


On Tue, Oct 18, 2022 at 11:04 PM Glenn Elmore <n6gn@...> wrote:
In examining the QDX spectrum while transmitting FST4W on HF  the RF tones produced are found to be in error to such a degree that excess spectral spreading iis produced which severely compromises or prevents FST4W decodes. Essentially the up-conversion algorithm is not properly setting RF tones. This error can easily dominate ionospheric spreading over one and two hop paths, eliminate FST4W decodes and can even reduce chance of decode on WSPR. This problem has been identified with both v1.04 and v1.05 FW.  A different transmitter also using the Si5351 synthesizer doesn't exhibit this problem.

Details and support for this is provided in the attached pdf.

Glenn n6gn
Fort Collins, CO


Glenn Elmore
 

Hans
Certainly! I'd be very happy to try v1.03 though it will take me just a bit to set up the measurement environment again.  My QDX has PCB version 3A.  

FWIW,  on a sample of two differnt QDX's there also seems to be about a 1.47 Hz receive frequency setting error at 20m.  This may or may not be related
to the evident transmit setting accuracy mentioned.  It wouldn't me if were because almost every narrow band HF, WSPR-on-VHF/UHF or
similar precision radio I've seen, including the KiwiSDR, RTL-dongle, U3S-on 144 MHz .. has  initially had math library precision issues
when these kinds of very high accuracy modes and measurements are needed.  I rather hope that something easily fixed  ( I hope !)  like that is happening 
here. 

Having the QDX operate well on HF FST4W would be an extremely good value and contribution.  I think there might also be a large number of new owners/users if and once
the extra many-dB potential of FST4 and FST4W, above even WSPR, became evident in such an excellent and economical manner, e.g.  I'm pretty certain that the ionspheric study
promoted by HamSCI could benefit greatly. Already we are seeing extremely interesting "shaking" of the  ionosphere as a result of coronal mass ejection material
impinging on the the earth's magnetosphere, where the QDX works very well in receive-only mode. I really appreciate it and your work to make it available.

I'll try to return with some more data shortly.

Glenn n6gn


Glenn Elmore
 

It took a while to get things back together so these measurements were made with somewhat different equipment but I think the following results are valid. Here are three spectral measurements of the signals transmitted:



The leftmost graph is that of a GPSDO phaselocked Icom IC7300, middle is the phaselocked QDX v1.03 and left is the phaselocked QDX v1.05.  Again in all cases this is the 33rd harmonic of a 14.097020 MHz signal, 14.0956 dial + 1420 Hz transmit
audio measured at ~465.201660 MHx with a GPSDO phaselocked 445 MHz LO downconverter so producing an IF at ~20.201660 MHz as indicated by the green Kiwi passband markers. The transmitted FST4W -300.audio/baseband is from different instances of WSJT-X running on the same host PC. The horizontal axis again should be very close to 3 Hz/division (100 Hz ticks/33rd harmonic). 

While the 'normal USB up-converted' IC7300 signal looks like proper GMSK-4, the QDX versions seem to have merged two of the four symbols.  Amazingly the IC7300 system still decoded all of the QDX transmissions with either versions of FW but with ~570 mHz (milli-Hz) of spectral spreading reported by the IC7300. The lowest symbol from the QDX seems to be at about the same frequency for each version and the IC730 reported the frequency to 1 Hz resollution, correctly. This degree of spreading compares to
on the order of 50 mHz for a one-hop 20m path during quiet ionospheric conditions and reduces the probability of decode to roughly one half. This is from measurements a few of us have made on HF FST4W signals. 

On receive the QDX works extremely well.  It reported the IC7300 as 1 Hz low in frequency, again with 1 Hz resolution, but having only 2 mHz, spectral spreading.  This is very similar to what a remote GPSDO Kiwi at 20 km distance but truly line-of-sight (if it's a clear day and your binoculars are good) path between them measures.  Other than the possible question of frequency reporting, and I don't even know the definition of a WSPR or FST4W signal, whether 'frequency' is the middle of
the occupied bandwidth or one of the symbols or something else,  the QDX receive frequency setting and performance seem good.  Even without external GPSDO clocking, if  operated in receive-only mode without thermal cycling from transmitter heating, my version of the QDX PCB shows very low spectral spread, even on 20m. 

If the transmitted signal can be made to follow the incoming audio well, even with sharp intersymbol transitions present,  I'm very hopeful that the QDX can provide FST4W operation all the way to 20m and thereby introduce a lot of amateurs to the extra QSO and spotting sensitivity that the mode offers, even up on the HF bands.

Let me know if I can help by examining anything else.

Best,
Glenn n6gn 
Fort Collins, CO, USA


Paul WB6CXC (tech-blog: wb6cxc.com)
 

(Hi Glenn!)

Han's, I haven't looked at your code, but can you tell me what divisors you are using in this mode?  I just ran the numbers on the Si5351 dividers and it looks like (with a 25 MHz reference and an output divider of 62) you can get exactly 0.56Hz steps with a PLL denominator of 720046.

Glenn, are the FST4W steps exactly 0.56Hz?  Looking at the "FST4_Quick_Start.pdf" document it appears that that value is rounded up from the inverse of the symbol rate (1/1792 = 0.558xxx Hz).  I suppose this is close enough.

The denominator I show above does not give you the ability to do GSFK (as Glenn mentions in his document), just whole shift steps, but the symbol rate is slow enough that you could change both numerator and denominator quickly enough to allow for pretty good Gaussian frequency transition shaping.  In my wb6cxc.com blog I discuss how I generate GFSK with the Si5351 for a project I am playing with.  See http://wb6cxc.com/?page_id=65  (PRESENTATIONS AND DESIGN NOTES).
 
--
Paul Elliott - WB6CXC


Glenn Elmore
 

Hi Paul,
Long time since we've crossed paths, nice to see you again.  I haven't measured the steps exactly. But cearly v1.05 is not producing the correct step size, the width between outer symbols is roughly 2.5 Hz rather than 1.68 Hz.  v103 width of the (only) two symbols is approximately correct but whether it is exact, I don't know.  Measuring with, say, .01 Hz resolution at 465 MHz in real time, is 2 parts in 10^-11 and no small feat, though perhaps I could accomplish it with some extra effort.  Hans says that he uses a continuous fractions algorithm in order to generate precise tones. Perhaps both audio mesurment is working well and the algorithm implementation for RF setting is fine but the math library is insufficiently precise. Another Si5351 FST4W implementation I have measured and for which the code is Open Source, the RFZero , has no smooth intersymbol  transitions but accurate tones and measures quite low spectral spreading. It uses 64 bit integers for the math.

I didn't remeasure it this time, but the longest FST4W mode, the -1800 (30 minute) one using v105 produces very wide tone spacing compared to the .089 Hz steps defined. This might also be a clue that math precision is insufficient with the extra resolution truncated. 


Rob Robinett
 

Hi Paul,

The table at the start of Joe Taylor's "Quick-Start Guide to FST4 and FST4W"  (https://physics.princeton.edu/pulsar/k1jt/FST4_Quick_Start.pdf) shows FST4W-120 tone spacing of 1.46 Hz. 

A recent SW upgrade to the KiwiSDR used at many of the top WSPR receive sites running wsprdaemon (http://wsprdaemon.org) mean that there are now 60+ sites worldwides which are listening for FST4W-xxx transmissions.  Glenn and Gwynn G3ZIL's work has shown that even FST4W-300 signals can be decoded over long distances.  So getting the QDX accurately transmitting FST4W will enable some pioneering radio science studies by groups like HamSCI are planning for the solar eclipses of 2023 and 2024.

Rob

On Wed, Oct 19, 2022 at 10:37 PM Paul WB6CXC <paul@...> wrote:
(Hi Glenn!)

Han's, I haven't looked at your code, but can you tell me what divisors you are using in this mode?  I just ran the numbers on the Si5351 dividers and it looks like (with a 25 MHz reference and an output divider of 62) you can get exactly 0.56Hz steps with a PLL denominator of 720046.

Glenn, are the FST4W steps exactly 0.56Hz?  Looking at the "FST4_Quick_Start.pdf" document it appears that that value is rounded up from the inverse of the symbol rate (1/1792 = 0.558xxx Hz).  I suppose this is close enough.

The denominator I show above does not give you the ability to do GSFK (as Glenn mentions in his document), just whole shift steps, but the symbol rate is slow enough that you could change both numerator and denominator quickly enough to allow for pretty good Gaussian frequency transition shaping.  In my wb6cxc.com blog I discuss how I generate GFSK with the Si5351 for a project I am playing with.  See http://wb6cxc.com/?page_id=65  (PRESENTATIONS AND DESIGN NOTES).
 
--
Paul Elliott - WB6CXC



--
Rob Robinett
AI6VN
mobile: +1 650 218 8896


Paul WB6CXC (tech-blog: wb6cxc.com)
 

On Thu, Oct 20, 2022 at 06:11 AM, Glenn Elmore wrote:
Hans says that he uses a continuous fractions algorithm in order to generate precise tones. Perhaps both audio mesurment is working well and the algorithm implementation for RF setting is fine but the math library is insufficiently precise. Another Si5351 FST4W implementation I have measured and for which the code is Open Source, the RFZero , has no smooth intersymbol  transitions but accurate tones and measures quite low spectral spreading. It uses 64 bit integers for the math.
Interesting!  I have an RFZero and have borrowed some of the code bits for my own project, so I will look into the FST4W implementation.  Glenn, I read (skimmed) your 2022 TAPR paper, and was wondering if the spread you are seeing on the QDX was due to static frequency error, or due to (thermal?) frequency drift.  It sounds like it's static error.

(Hans), Is the continuous fractions a "simple" type where the fractional numerator is "1", or can that numerator be any integer?  When I want to change both numerator and denominator for finer frequency steps I use the Farey sequence to find the numbers.  But I do it on my PC, and hard-code the resulting values into my arduino-style program.  I can run the Farey calculations on the Arduino, but it takes a very long time, and I get better floating-point precision on the PC.

(Rob), I hadn't studied the KiwiSDR, but it looks really nice and I want one.  But it appears to be not currently available...  I'm still wondering about the FST4 freq steps not being an exact reciprocal of the symbol rate (which would give the best ISI performance).  I could guess that the numbers are rounded for more convenient implementation, and the slight "error" is so small as to be inconsequential.  But that's just a guess.

If I get around to it I will try to implement FST4W on my "Drift Buoy" beacon project, using GFSK rather than bang-bang FSK.  It's going to have (at best) a -20dBm transmit signal, so SNR is a big deal.
 
--
Paul Elliott - WB6CXC


Glenn Elmore
 

[ At the risk of getting more detailed than the forum will appreciate ]

Paul,
Hans describes his usage in the QDX docs and definitely uses integers in both the numerator and denominator over the entire 20 bit range.  In case anyone is interested in pursuing this in code, there is a github project that provides it in C. 

I only dug a little into the RFZero code but far enough that it appeared to have steps between symbols with nothing intervening. While this is bad spectrally, as you show in your blog, the overall detriment to other symbol's bins and the SNR seems  unmeasurable in the the FST4W context.  I don't have across-the-bench measurments of an RFZero using this simple approach but  when I measured one on 20m over a one-hop path, I found a value approximately the same as that expected for modulation by the ionosphere alone and when I used a remote Kiwi, local to the transmitter, to source audio and then converted it locally back to 20m again, I also got a very low spreading value.   At this point, I don't think there is enough extra energy to significantly hurt the SNR, though like key clicks, may be enough to QRM a neighbor slightly.  I don't think that a little setting error will show up in WSJT-Xs spreading report so accuracy is probably not super critical.

Farey seems quite related to continuous fractions and an interesting topic. It's new to me. It seems that calculations can pretty easily be done on-the-fly, as Hans does, without over-taxing the CPU.  A neat approach and I hope the implementation is easy to fix in the QDX.

It's too bad about the Kiwi's  effective end-of-life. They make a great tool for measurement of all kinds of things.  Along with the wsprdaemon code,  a single KiwiSDR (with BBAI OBC) can simultaneously spot all LF-HF bands on all modes of WSPR & FST4W.  Again, if anyone is interested in doing this, see the Wsprdaemon Group.  There are numerous stations spotting with KiwiSDRs there also with QDX's , just waiting for a fix, so they can transmit too.

WRT DX, with it's several-dB deeper SNR potential, compared to WSPR, sub-microwatt 20m one-hop FST4W spots and QSO's appear possible. Spots supporting this have already occurred using 1 mW tx ERP at N6GN in Colorado.

Again, my apologies to the forum is this is too off-topic.


Glenn n6gn
Fort Collins, CO


Dave VE3GSO
 

Too Far Off Topic?!!!  Facinating!

Dave

On Oct 20, 2022, at 13:54, Glenn Elmore <n6gn@...> wrote:

[ At the risk of getting more detailed than the forum will appreciate ]

Paul,
Hans describes his usage in the QDX docs and definitely uses integers in both the numerator and denominator over the entire 20 bit range.  In case anyone is interested in pursuing this in code, there is a github project that provides it in C. 

I only dug a little into the RFZero code but far enough that it appeared to have steps between symbols with nothing intervening. While this is bad spectrally, as you show in your blog, the overall detriment to other symbol's bins and the SNR seems  unmeasurable in the the FST4W context.  I don't have across-the-bench measurments of an RFZero using this simple approach but  when I measured one on 20m over a one-hop path, I found a value approximately the same as that expected for modulation by the ionosphere alone and when I used a remote Kiwi, local to the transmitter, to source audio and then converted it locally back to 20m again, I also got a very low spreading value.   At this point, I don't think there is enough extra energy to significantly hurt the SNR, though like key clicks, may be enough to QRM a neighbor slightly.  I don't think that a little setting error will show up in WSJT-Xs spreading report so accuracy is probably not super critical.

Farey seems quite related to continuous fractions and an interesting topic. It's new to me. It seems that calculations can pretty easily be done on-the-fly, as Hans does, without over-taxing the CPU.  A neat approach and I hope the implementation is easy to fix in the QDX.

It's too bad about the Kiwi's  effective end-of-life. They make a great tool for measurement of all kinds of things.  Along with the wsprdaemon code,  a single KiwiSDR (with BBAI OBC) can simultaneously spot all LF-HF bands on all modes of WSPR & FST4W.  Again, if anyone is interested in doing this, see the Wsprdaemon Group.  There are numerous stations spotting with KiwiSDRs there also with QDX's , just waiting for a fix, so they can transmit too.

WRT DX, with it's several-dB deeper SNR potential, compared to WSPR, sub-microwatt 20m one-hop FST4W spots and QSO's appear possible. Spots supporting this have already occurred using 1 mW tx ERP at N6GN in Colorado.

Again, my apologies to the forum is this is too off-topic.


Glenn n6gn
Fort Collins, CO


Paul WB6CXC (tech-blog: wb6cxc.com)
 

On Thu, Oct 20, 2022 at 10:54 AM, Glenn Elmore wrote:
Spots supporting this have already occurred using 1 mW tx ERP at N6GN in Colorado.

 I remember when you received my 100uW 20m WSPR transmission at a range of 1121 km.  That's over 11 million km/W!   My transmitter was a RPi putting out +10dBm, then through an attenuator to a crappy dipole pointing the wrong way
--
Paul Elliott - WB6CXC


Glenn Elmore
 

And that was with a far too high rx noise floor on my end.  Spots of 1 mW transmitters across a single hop with reported SNRs a bove -6 are common place, I see one in the last hour.  FST4W-300 can spot 30 dB weaker than this. 1 uW would have  worked if the stations had been so equipped.
When conditions are exceptional things could be even better. This is part of my interest in FST4W at HF.


Paul WB6CXC (tech-blog: wb6cxc.com)
 

After all this I just had to buy the QDX.  Can't wait to put it together and try it out!
--
Paul Elliott - WB6CXC


Neil Cherry
 

On 10/20/22 14:02, Dave VE3GSO wrote:
Too Far Off Topic?!!!  Facinating!
I agree, and I only understood about half of it. ;-)

I have a lot to learn and I'm learning as I go. Totally enjoy the complexity of this
list!

--
Linux Home Automation Neil Cherry kd2zrq@...
http://www.linuxha.com/ Main site
http://linuxha.blogspot.com/ My HA Blog
Author of: Linux Smart Homes For Dummies KD2ZRQ


Paul WB6CXC (tech-blog: wb6cxc.com)
 

Regarding Glenn's original post, I think I've been distracted by the Si5351 fractional divider (as used in my own projects, and as used by the RF-Zero), and skipped right over the probable source of the frequency error.  After reading a bit more about the QDX (https://www.qrp-labs.com/images/qdx/fdim2022.pdf), I realize that the transmit frequency offset isn't hard-coded, but is set by analyzing the zero-crossings of the USB/audio input.  Hans samples the audio signal at a 48KHz rate and interpolates to locate the zero-crossings in time.  This measurement is used to set the transmit frequency (nominal carrier F + audio F).  The frequency of a single sampled audio-cycle sample can apparently be resolved to better than +/- 0.05Hz.  I haven't done the math but I don't doubt it.  I think the QDX firmware samples ten audio cycles, so the resolution might be 0.005Hz.  This should be much better than required to generate the FST4W 0.56 Hz steps.

But there's many a slip 'twixt the cup and the lips, and I wonder if there is a small error in the frequency-measurement process that only shows up with these extremely small frequency steps.  The issue probably isn't the actual fractional divisor values, but how the frequency to be tracked is measured.

Just a guess...
--
Paul Elliott - WB6CXC


Rob Robinett
 

For WSPR transmissions I see the dependency of the QDX upon WSJT-x is a serious limitation of the current QDX SW even if/when the tones are accurately generated.  
Functionally, WSJT-x doesn't support FST4W on the HF bands "out of the box", and even when so configured you can't define a transmit schedule which mixes WSPR-2 and FST4W-xxx modes
Also, I have reports that when transmitting WSJT-x crashes reliably after 300-400 transmit cycles, so the system may requires regular user interaction to keep it running.
Furthermore, using WSJT-x requires there be a PC or Raspberry Pi attached to the QDX and that adds significantly to the cost, power consumption, fragility and ease of deployment of the system.

So it is my hope that there would be a WSPR/FST4W transmit mode which simplifies the configuration and deployment of a beacon by running all the transmit SW inside the QDX.  Implementing such a mode would not seem impossible even with little or no manufacturer support since there is open source Si5351 WSPR and FST4W which might be very useful in such a QDX project.

Developing such SW might be easy enough that I'll try it once I finish my never-ending wsprdaemon development work ;=) 

My comments are in no way a criticism of the design and implementation.  It is a superb concept and implementation for most digital mode communications,  But for the small group of WSPR and FST4W beacon enthusiasts another architecture would work far better.