Category Archives: JS8

QDX Sensitivity Test

I still haven’t done a full evaluation of the QRP Labs QDX transceiver, but I did run a quick check of the receiver performance, comparing it to the Icom IC-7200 (which also has a native  USB interface for audio and CAT control):

ComparisonHere you see two instances of WSJTX, running FT8 on 20 meters.  My off-center-dipole was connected to a coax TEE, feeding both the QDX and the 7200.  No effort was made to match impedances, but since both radios are getting an identical signal that should be good enough for a comparison.  Obviously the transmitters were not activated during this test.

I let the programs run for fifteen minutes and then compared the logfiles.  The7200 logged 524 decodes, while the QDX logged  530.  The Signal/Noise ratio was generally the same, with the QDX showing one or two dB improvement on the stronger signals.  These small differences may be due to the AGC or the slightly narrower filters on the Icom rig.

This test was done if a fairly quiet location, with no nearby strong signals.

Conclusion:  So far, the QDX receiver is a good performer.


Fun With JS8

It’s been a while, but I am returning to the Drift Buoy, and using the JS8 APRS interface for the telemetry.

Things to work out:

  • Physical packaging
  • Solar / battery / power control
  • QRP transmitter power-stage design
  • ultra-short antenna matching
  • uController and transmitter synthesis/driver
  • GPS, environmental sensors
  • Program that builds JS8 frames

I’ve made progress here and there on this list, but found myself stumped by the JS8 messaging.  Fortunately the JS8Call program is open-source and the author (Jordan Scherer) is happy to discuss it.  I’ve been able to use the JS8Call program to send APRS EMAIL messages, and using the JS8Call API have captured the “symbol list” that shows what FSK tones are being generated for each frame (messages may take several frames).  I have written a simple “JS8 Explorer” program (borrowing and re-coding much from the JS8Call program) that converts this symbol list to bits.  The Explorer then:

  • Strips off the framing fields
  • Unscrambles the Forward Error Correction
  • Strips off the CRC bits

We now have a 75-bit frame that can be decoded into its various bits and pieces.  There are several types of frame.  I am still figuring out many of the details, but am continuing to hack away at it.

Here’s a screenshot of JS8 Explorer decoding a “Dense Code” frame: