QMX: a feature-packed, high performance, 5-BAND 5W, CW and Digi-modes transceiver kit, including embedded SDR, 24-bit 48 ksps USB sound card, CAT control, synthesized VFO with TCXO reference. 

Click!
Shop order
$102.47

The "QMX" (QRP Labs Multimode Xcvr): a feature-packed, high performance, five-band (80, 60, 40, 30 and 20m) 5W CW and Digi-modes transceiver kit, including embedded SDR receiver, 24-bit 48 ksps USB sound card, CAT control, synthesized VFO with TCXO reference. QMX may be used in CW modes standalone, or with a single USB cable to a PC for digi mode operation. QMX also incorporates standalone CW, FSKCW and WSPR beacon functionality (no PC connection required). 

QMX transmits a SINGLE SIGNAL on FSK signal modes, it is not an SSB modulator with associated unwanted sideband and residual carrier, or intermodulation due to amplifier non-linearity. QMX outputs a pure single signal. QMX is, in the first firmware releases, suitable only for CW and single tone FSK modes, which covers the majority of digital modes in use today. This includes everything in WSJT-X, JS8Call, some fldigi modes e.g. RTTY, Olivia and more. QMX is not suitable for phase shift keyed modes such as PSK31 or modes involving multiple concurrent tones such as WinLink,

The Optional enclosure is black anodized extruded aluminium, very sturdy and elegant. The enclosure size is 95 x 63 x 25mm without protrusions. The front and rear panels are drilled and cut to match the QMX PCB with laser-etched lettering. The enclosure includes four self-adhesive feet and end panel securing screws.

Note that the SMPS boards are also available separately in the spare parts section of the QRP Labs shop

QMX is available in kit or assembled versions. 

List of features:

  • Versions: 80, 60, 40, 30 and 20m --- or --- 20, 17, 15, 12, 11 and 10m -- or -- 60, 40, 30, 20, 17 and 15m.
  • CW and FSK Digi modes
  • All features of QCX-mini (VFO A/B/Split, RIT, Message and frequency memories, beacon, keyer, etc)
  • 4-5W output at 12V supply (can be built for 4-5W at 9V supply)
  • SWR bridge built in
  • Single signal digi mode transmission (zero unwanted sideband, zero residual carrier, zero intermodulation distortion)
  • Solid-state band switching and transmit/receive switching under CAT control
  • High performance embedded SDR SSB receiver with 60-70dB of unwanted sideband cancellation
  • Built-in 24-bit 48ksps USB sound card
  • Built-in USB Virtual COM Serial port for CAT control
  • Si5351A Synthesized VFO with 25MHz TCXO as standard
  • Easy to build single-board design, Professional quality 6-layer, through-hole plated, silk-screen printed PCBs
  • All SMD components factory assembled
  • Connectors: 2.1mm power barrel connector, USB-C (for audio and CAT control), BNC RF input/output, 3.5mm jacks for audio out, paddle/GPS/mic/PTT in, and PTT out
  • Built-in test signal generator and testing tools
  • GPS interface for frequency calibration, real time clock and location (internal WSPR beacon)
  • IQ output mode for use with SDR software
  • Switched mode regulators Receive current 80mA, Transmit current 1.0-1.1A for 5W output with 9V supply (around 0.7A for 5W with 12V supply).
  • Optional aluminium extruded cut/drilled/laser-etched black anodized enclosure

Documentation

Make sure you have the correct assembly manual for your PCB revision, and the correct operating manual for your firmware version (see further down this page). Note:

  • PCB QMX Rev 1 PCBs can use any firmware version.
  • PCB QMX Rev 2 and 3 PCBs should only use recommended to use firmware 1_00_011 and up.
  • QMX Rev 2 PCBs shipped during 2023 - please CLICK HERE for details of this strongly recommended modification. 
  • QMX Rev 1, 2 and 3 PCB's - please CLICK HERE for details of necessary modification for grounded PTT output to work
  • QMX Rev 4 PCBs don't need the PTT mod; note that there is a silkscreen error, there's a "Rev 3" printed under the 2.1mm power jack so please look at the area near the BNC connector, which has the correct "Rev 4" printed. 

Assembly manual for PCB Rev 4 (document revision 1.04e published 02-Dec-2024)
Assembly manual for PCB Rev 2 and 3 (document revision 1.02a published 10-Feb-2024)
Assembly manual for PCB Rev 1 (document revision 1.00j published 24-Sep-2023)
PA transformer manual - you need this with the assembly manual (rev 1.00c published 19-Dec-2024)
http://ja1xrq.g.dgdg.jp/QMX/qmx.html JA1XRQ Shig has a Japanese translation of the manual on his website. 
Operating manual for firmware 1_00_026/1_00_027 (document revision 1_00_026 published 10-Aug-2024)
Schematics for PCB Rev 3 (published 06-Mar-2024)
Schematics for PCB Rev 2 (published 29-Nov-2023)
Schematics for PCB Rev 1 (published 08-Jul-2023)

(Note, schematics and the English version of the assembly manual were updated to reflect recommended modification solution #2 to the low 20m sensitivity problem as documented here). The schematics do NOT include the grounded PTT modification described here, so bear this in mind when looking at X201 on page 2 of the schematics; the PTT output signal should correctly be routed to pin 4 not pin 2 of X201.

Other documentation:

FDIM May 2023 conference proceedings article - please note that this was written in February 2023 and several changes took place between the early prototype builds and the final production model. Bear this in mind when reading the description of the QMX circuits in the article. 
FDIM May 2023 seminar slides - the slides I presented at FDIM on 18-May-2023; with all due apologies for the bad jokes in the first few pages...
PCB Rev 1 -> Rev 2 changes briefly described


Photographs & Videos

QRP Labs videos about QMX are on YouTube at this PlayList


Firmware

Please refer to the manual for the firmware update procedure, which is very easy and does not require any special hardware, software, drivers etc. It requires only a PC and an appropriate USB cable. Click the file in the first column of the table below, to download the firmware file of interest. Note that firmware files are encrypted and can only be used on the QRP Labs QMX. 

The downloads are a zip file; please unzip the file before copying the .QMX firmware file into the QMX. 

Note that a new QMX must have firmware installed on it before you can use it; you must press the left encoder shaft button to switch on QMX for this to happen; during firmware update mode the LCD is blank and the backlight is off. Please refer to the assembly manual carefully for instructions and checks before applying power. 

Firmware version history:

Version Date Contents
1_00_027 22-Aug-2024 Operating manual (same as 1_00_026)
1. 20m Factory Reset Band Cfg sweep start freq changed to 6,500,000; 17m now 13,000,000
2. Slower shut-down and start-up procedure for 5V supply
3. Support for additional factory test procedures
1_00_026 10-Aug-2024 Operating manual
1. Bug fix: VFO tune rate defaulted to 10M/1M/10k/10k digits; should default to 1k/500Hz/100Hz/10Hz
2. Bug fix: Change default VFO mask to all three (A/B/Split) to match previous behavior
3. Bug fix: Functionality 'N' to copy A->B and 'D' to copy 'B->A' didn't work (op man page 14)
4. "Tune SWR" moved to top of Hardware tests menu instead of GPS Viewer
5. Improvements to "Tune SWR" tool (start in current band; allow freq tuning)
6. Bug fix: LCD message editing was broken in 024/025
7. When beacon mode is enabled, return to usual VFO frequency when not TXing on beacon freq
8. Reduce clicks on power up, power down, band change
1_00_025 06-Aug-2024 Operating manual (same as 1_00_024)
1. Bug fix: Hang with msg "Initializing audio system" in some cases on firmware upgrade to 024
2. Bug fix: Prevent initial CW decoder buffer being filled with S-meter characters!
3. Bug fix: CW-R now works properly (when enabled, is in LSB mode, automatically)
4. Bug fix: During RIT mode, left rot enc button functions not working (power down, band & mode change)
5. Bug fix: Diagnostics screen 160m TX doesn't work until you change bands and come back to 160m
6. Bug fix: Audio in diagnostics sounded awful if you were in Digi mode when you opened it
1_00_024 06-Aug-2024 Operating manual
1. Added many more CW filters and CW filter options in the filter menu
2. Bug fix: Display corruption on exiting system config menu on the LCD
3. Add BK, AS, KA as prosigns, and other punctuation
4. Change "IQ Mode": now radio functions normally, but raw I & Q are streamed out not demod audio
5. Add VFO menu with UI masks for VFO Mode, VFO tune rate and RIT tune rate
6. Bug fixes and improvements in display and behavior of RIT and decoded CW
7. Bug fix: fix incorrectly swapped tip/ring meaning in Straight key mode
8. Switch off CLK2 carrier during key-up between Semi-QSK
1_00_023 31-Jul-2024 Operating manual (same as 1_00_022)
1. Bug fix: SWR and GPS tools were not accessible on the LCD/Knobs of the radio itself (erroneous message "Locked by terminal app"). 
1_00_022 31-Jul-2024 Operating manual
1. Bug fix: CAT KY when keyer speed is zero sends very fast; now just returns ? and does nothing
2. Bug fix: CAT KY when transmit disabled for any reason incl practice mode, got stuck
3. Bug fix: Playing a message memory when speed is zero sent very fast, now ignores
4. Semi QSK settings: OFF, Auto, Contest, Custom dits, Custom decidits, Custom ms, new Custom val param
5. Bug fix: LPF and SWR sweep didn't work for QMX+ 160m and 11m when band limits are enabled
6. New sys config setting "RX outside band" (default OFF); when off, restricts rx to in-band
7. CW Offset range now 400-999
8. Added new filter sub-menu, with CW filter selection and "Auto-offset/tone"; 300/500 Hz filters at various centers
9. Bug fix: now lock buttons/knobs to prevent corruption while running terminal apps RF Sweep etc
10. Bug fix: Prevent LCD frequency changes while terminal apps like RF Sweep are active
1_00_021 25-Jul-2024 Operating manual
1. Japan limits setting renamed "Band Limits": "ITU Region 2" (default), Japan, or None
2. CAT: Implement KS command to Get/Set CW keyer speed
3. CAT: Implement KY command to send text via CW transmission
4. CAT: Implemented Set command for RT: RT1; to enable RIT mode, RT0; to disable it
5. CAT: Implemented RC (RIT Clear) command RT; to disable RIT mode
6. Click "Tune" rotary encoder knob in RIT mode to move RIT cursor one character right
7. Test ADC I/Q screen now has band +/- so can run for all bands
8. Force display of battery icon, if TX is disabled due to supply voltage being out of range
9. Diagnostics screen now shows the REASON for not transmitting, if it produces no RF
10. I2C bus speed increased from 400kHz to 1MHz
11. Bug fix: Implemented semi-QSK properly (8 dit lengths delay like in QCX)
12. Bug fix: CAT: RD0; and RDU; Set commands made RIT zero but this wasn't displayed
13. Bug fix: CAT: Now calling RD or RU CAT Set commands causes the UI to enter RIT mode
14. Bug fix: CAT: Proper behaviour when CAT RIT commands are called and LCD is in menu mode
15. Bug fix: If RIT is non zero when leaving menu, RIT mode wasn't re-entered
16. Bug fix: Incorrect characters on LCD in SWR tool, when changing band 160 -> 80m etc
17. Bug fix: Preset number was missing on the display, when selecting a preset frequency
18. Bug fix: Settings reload only done on exiting Configuration menu (some menus accessed elsewhere)
19. Bug fix: Power supply range TX disabling didn't work properly
20. Bug fix: Battery icon froze when CW decoder enabled
21. Bug fix: RX PTT was not activated after Band Config edit until keyed
22. Bug fix: Test ADC I/Q screen was corrupt on first opening, needed R to refresh
1_00_020 11-Jul-2024 Operating manual
1. New Test ADC I/Q tool shows baseband I/Q samples, aiding diagnostics
2. Add 20dB of attenuation in earphones when in Digi mode (equalize volume to CW)
3. Remove the experimental "SuppressThump" setting which is now always on
4. Configure AGC defaults on factory reset (or new installation)
5. Bug fix: Display leftovers on GPS display on LCD
6. Bug fix: RF, AF and Image Sweep tools didn't work unless in VFO Mode A already
7. Bug fix: Selecting a preset did not change the LPF selection, only the VFO
8. Bug fix: LPF and SWR sweep screens broke if not all bands were enabled
9. Bug fix: CAT bug, remove \0 character in AG; command response
10. Bug fix: CAT bug, in IF command (1 character too long)
11. Bug fix: CAT bug, remove \0 character in TM; command response
12. Bug fix: Change minimum frequency from 3.2 MHz to 1.5 MHz
1_00_019 20-May-2024 1. Added QMX+ 160-6m to list of options at first power-up or after factory reset
2. New CPU Monitor utility in the System menu in the terminal
3. System configuration "GPS Source" selects paddle port or QLG3 as GPS source in QMX+
4. System configuration "Real Time Clock" selects hardware CR2032 RTC in QMX+ or the QMX software clock
5. Bug fix: occasionally hanging LCD updates during rapid frequency changes
1_00_018 01-May-2024 Operating manual
1. Bug fix: date for December in GPS was called "DEV", should be "DEC"
2. Bug fix: GPS date display in terminal was one month out
3. Bug fix: On selecting factory reset, the LCD did not update to show the "Reset..." message
4. Expanded Band Config screen to 16 columns
5. New version available at power up which populates Band Configuration for the 60-15m version
6. New menu item in Audio "Suppress thump" to enable click suppression logic
1_00_017 16-Feb-2024 Operating manual
1. Bug fix: '5351 synth code for setting TX params could lock up in some circumstances
2. New LPF Sweep application in the terminal
3. Added S-meter
4. Added AGC implementation and supporting configuration menu parameters
5. Bug fix: Parameter corruption (incl IQ Mode setting lost) in Digi config menu
1_00_016 10-Feb-2024 Operating manual (same as 1_00_015)
1. Bug fix: Was returning to the last saved band frequency after a sent message
2. Bug fix: Power/SWR meter not shown in message memory transmissions
3. Bug fix: Sideband selection and CW-R selection not properly cached, leading to wrong sideband reception
4. Bug fix: dot, double-dot and underline of top left (VFO A/B) character not shown when WSJT-X transmits
5. Bug fix: Power/SWR meter menu update interval parameter editing not working properly
6. Bug fix: Attempted fix for what seems to be a new extra dits affecting Iambic B
7. Bug fix: Battery icon showed incorrectly, during standalone beacon mode (should not be shown)
8. Bug fix: WSPR beacon display not cleared properly between waiting stage and running stage
1_00_015 09-Feb-2024 Operating manual
1. Bug fix: CW timing glitches resolved.
2. Removed unused S-meter step parameter.
3. Remembers frequency by band.
4. Re-arrangement of EEPROM config - automatically performs factory reset on upgrade to 1_00_015.
5. Bug fix: if you tuned below 3.2MHz it locked up; now added minimum 3.2MHz frequency to avoid this
6. Bug fix: PTT output port wasn't enabled; now PTT output is enabled.
7. Bug fix: When in Japanese band limits mode, message sending did not work.
8. Bug fix: It allowed you to send message when you're in Digi mode!
9. Bug fix: Some of the Message presets got truncated, due to EEPROM page boundary issue.
10. Bug fix: when message editing, left button on a space didn't move right (if the space was really a null).
11. Bug fix: substantial reduction in keying to sidetone latency, and sped up sidetone amplitude shaping 10x.
12. Bug fix: when message editing, on exit of a long message it didn't scroll back to the beginning by itself.
13. Moved CW-R parameter to the System config menu, alongside Sideband selection.
14. Increased gain control range to 200dB.
15. Added setting "Audio attenuation" 0, 20, 40, 60, 80 or 100dB to move the audio gain window down.
16. Added setting "Mute at min. vol.", if YES means you get total silence when at minimum volume.
17. When SWR protection triggered, sidetone is silenced as well as power output, so you know it happened.
18. During WSPR beacon mode, if SWR protection is triggered it shows an S in the bottom right hand corner.
19. Bug fix: WSPR beacon now works correctly from start-up and from menu-enabling and everywhere else.
20. Added real time clock Time setting menu in Beacon and System menus.
21. Added CAT command TM for get/set of real time clock.
22. Bug fix: TX shift threshold in Digi menu was only two digits but needs to contain number 500 (by default).
23. Bug fix: SWR protection kicked in sometimes at very low powers at the end of transmissions etc.
24. Bug fix: Incorrect cursor position on LCD when editing byte values such as Sidetone volume.
25. Bug fix: After being in SWR test mode, no keying was possible until you re-entered and exited menu.
26. Bug fix: a new LCD driver from scratch, prevents screen corruption when decode, battery, clock etc all on.
27. Bug fix: If you plugged in GPS while in the menu, GPS auto-protection wasn't triggered.
28. Bug fix: Opening terminal apps (Band Config, hardware diagnostics etc) blocked TX until enter/exit menu.
29. Moved Battery and Power/SWR meter configurations to their own sub-menu.
30. Added Power meter interval and TX->RX hang time configurations.
31. Recall last used top level menu item; next time you enter the menu system it goes back to same place.
32. Bug fix: First clockwise click of encoders got ignored.
1_00_014 13-Dec-2023 Operating manual
1. Bug fix: Simple bug fix to 1_00_013 which needed factory reset every power cycle!
1_00_013 12-Dec-2023 1. Bug fix: CW-R didn't work.
2. Bug fix: CAT MD command set didn't work (change mode command).
3. CW-R and Sideband selection are now part of the saved radio state (not just menu parameters).
4. SWR protection and SWR on transmit display are disabled if power is below 0.5W.
5. Bug fix: Make sure SWR protection is disabled when in Practice mode.
6. Bug fix: Diagnostics screen shouldn't display SWR when in Practice mode.
7. Add "CW Offset" parameter to the Keyer menu; works between 600-800 Hz only.
8. Bug fix: Sidetone frequency is now implemented (100-999Hz).
9. "ENABLE"/"DISABLE" changed to "ENABLED"/"DISABLED" which is less confusing.
10. Bug fix: CAT command MD7 didn't properly set the mode to CW-R (reported mode 6).
11. Bug fix: Solve keyer glitches.
12. Bug fix: Hyperactive SWR protection: now only allow if not already in some kind of practice mode.
13. Bug fix: SWR protection mistakenly set on exiting message sending if in key-down.
1_00_012 05-Dec-2023 Operating manual
1. Fix to volume control erratic behavior.
2. Prevent audio over-drive causing sudden distortion.
3. Add "Audio" menu.
4. Adjustable audio gain in steps of 0.25, 0.5, 1, 2 or 4 dB.
5. Sidetone volume can be applied absolutely or relative to audio volume.
6. Adjustable sidetone volume works properly.
7. Bug fix: There was silence if you started up on 80m band.
8. Bug fix: Custom splash screen is now working.
9. CAT command MD now sets/returns 9 for FSR (FSK Reverse) in LSB & Digi mode
10. CAT command FW now returns 3200 when in Digi mode (FSK)
11. CAT command AG now operates consistent with TS-480 documentation (AG; still works too)
1_00_011 29-Nov-2023 Operating manual
1. Add band version selection in system menu and on first power-up
2. The CAT MD command now supports 3 (CW), 6 (FSK) and 7 (CWR)
3. Added advanced settings menu - use with caution - normally leave all enabled!
3a. "Mod. high in RX" - sets PA modulator high in RX mode which should improve RX performance
3b. "Normal 5ms shape" - when disabled, shape is done 33x faster (0.15ms rise/fall)
3c. "20/80m BPF TXswap" -  swaps 20m BPF and 80m BPF on transmit (see Rev 2 PCB issue)
4. CAT FW command now returns 0000 for SSB and 0300 for CW (was 3200 always)
NOTE: After upgrade from an earlier version, please check the new settings items and make sure they are all  set to ENABLE and that the band version is set correctly to match your hardware. 
1_00_010 30-Sep-2023 Operating manual
1. Single character battery voltage option instead of battery image
2. Initialization sequence on display so if stuck anywhere we'll know where
3. PA voltage is always on in diag screen and green/red to indicate correct range
4. Power and SWR added to diag screen
5. Pwr and SWR meter on display; controlled by menu entry in Display/controls menu
6. Bug fix: Battery now shown correctly at power-up, and when CW decoding disabled
7. New protection menu, with SWR protection enable and threshold
8. Supply voltage min/max protection including warn or optional TX inhibit
9. SWR sweep added to terminal applications
10. SWR Tuneup screen on QMX LCD
1_00_009 05-Aug-2023 Operating manual
1. Just a recompile of 1_00_008 because it seems some items didn't get compiled in
1_00_008 05-Aug-2023 1. Improved PWM control loop for the buck converter power supplies
2. Bug fix: When decoding transmitted CW it was written to wrong parts of the LCD
3. Bug fix: CW Beacon was at the VFO frequency, not the beacon frequency
4. Bug fix: Stored message sending didn't work
5. Only run the CW decoder in CW mode
6. Swap the dit and dah naming in the diagnostics screen for consistency
7. Do not allow mode change during transmit
1_00_007 01-Aug-2023 1. Add Keyer menu configuration "GPS protection" to enable auto protection
2. Make GPS protection auto-practice a bit less paranoid
3. Bug fix: Fix the WSPR/CW/FSKCW beacon functionality
4. Bug fix: Fix the applicable CAT Q1, Q2 etc commands
5. Add mode indicator character, row 1, column 12
6. Digimode transmit status indicator, underlines VFO A symbol
7. Fix string editing (messages editing) in the LCD/buttons
8. When editing messages, horizontal scroll when message longer than a screen width
9. Bug fix: Practice mode indicator not shown if it is set at power-up
10. Bug fix: Keyer Swap reversed compared to QCX
11. Bug fix: Practice mode indicator not shown in Digi mode
12. Bug fix: On digi, carrier transmission started on PTT not on incoming audio
13. Improve LCD write speed by a factor of approx 50
14. Bug fix: When battery indicator enabled, CW decode could corrupt top row
1_00_006 27-Jul-2023 1. New GPS viewer screen in terminal, some data also available on the LCD 
2. New hardware diagnostics screen in terminal, replaces TX Test screen 
3. Bug fix: CW message memories now work
4. Bug fix: Some settings such as USB/LSB did not work until power cycled
1_00_005 20-Jul-2023 1. Big Bug fix to 1_00_004: WSJT-X stopped transmitting after a second or so
2. Bug fix: RX frequency offset not set/reset after CW/Digi mode change
1_00_004 19-Jul-2023 1. Menu system rewrite, consistent between terminal and UI
2. Removed Tx/Rx Param 1/2 from Band Config screen and hard code to 0 and 1 resp.
3. Fix CW decoder
1_00_003 09-Jul-2023 1. Amended defaults of Band Configuration screen to suit revised assembly manual including #2 mod
2. Increased version string size from 7 to 8 to properly display firmware version on terminal screen
1_00_002 14-Jun-2023 1. RF Envelope shaping and sidetone shaping, key-click removal
2. Larger USB buffer avoids terminal overflow with this fast CPU
3. Fix RIT and VFO A/B/Split operation
4. Fix backlight toggle on left button triple click
5. Fix tune rate cursor (erased by battery icon update)
6. Add Other menu option for firmware update
1_00_001 31-May-2023 Initial alpha firmware release for QMX.

CPU

QDX is an embedded SDR. To provide the highest possible performance and scope for future features, a powerful STM32 microcontroller was chosen, the STM32F446. This is a 32-bit ARM Cortex M4 with floating point unit, DSP instructions, 512K Flash and 128K RAM, plenty of I/O and running at 168 MHz. It is by far the most poweful processor used on any QRP Labs product to date. At the QMX launch, well under 25% of the system resources are used. 


First QSOs

The first QSOs were made on the 20m band on 04-Apr-2023 with a QMX prototype built for 12V, but run at 7V supply voltage with approx 1W output to my off-center-fed-dipole antenna; the first QSO was with LZ2MP. 


CW features

Excellent CW performance is and always will be a very high priority on all QRP Labs transceivers that include CW mode operation. QMX is of course no exception (there are no exceptions!).

In the graph below left you can see the measured CW filter performance of QMX (red line) vs the QCX-mini (blue line). The QMX filter is 300Hz wide (compared to the QCX-mini filter which is approximately 200Hz) but the QMX filter has much sharper edges. Both are centered on 700Hz. Note that in future QMX firmware releases, both the center frequency and the filter width will be configurable and adjustable. 

Another very important feature is clean break-in operation (QSK) without audible clicks. I did a lot of work in this area to ensure that QMX has NO audible clicks at all on the transmit/receive changeover. The 700Hz sidetone frequency is a clean sinewave produced by a software emulated DDS (Direct Digital Synthesizer) running at 48ksps (kilo samples per second). The amplitude envelope of the sidetone has leading and trailing edges shaped as a raised cosine with 5ms rise/fall time. Sidetone therefore sounds extremely clean. 

All transmit/receive switching in QMX is solid state (no relays) so is fast and clean. A common problem with SDR receivers is that the audio processing can have considerable latency; this is a killer for good break-in operation (QSK) because if the latency is slower than the CW dit (symbol length) then there is no time for the receiver to recover and produce any audio in the gaps between symbols and QSK is therefore impossible. SDR software running on a PC can be particularly problematic due to all the additional layers of latency involved in the operating system, as well as the DSP (digital signal processing) in the SDR itself. In QMX the SDR is implemented in the on-board powerful 168MHz 32-bit ARM Cortex M4 processor with Floating point and DSP instructions. It is therefore possible to closely control the latency performance. 

In the audacity audio recordings below, the small amplitude trace is the sidetone during some CW keying. The huge amplitude tone is the reception of a massive S9++ signal injected into the QMX BNC port. It is possible to zoom in and measure the duration of the gap between key-up and the receive audio. The latency is approximately 15ms. This compares rather favourably with other well-respected transceivers:

  • Elecraft KX2: 40ms (source: ARRL QST review, May 2017)
  • Elecraft K3S: 14ms (source: ARRL QST review, November 2016)
  • QRP Labs QCX: 22ms (source: ARRL QST review, August 2019)
  • QRP Labs QMX: 15ms (my measurement)

Another method to measure the latency also yielded an almost identical result (15ms): using a dual channel digital 'scope with one channel connected to the RF input of the QMX and the other, the audio output, then enabling a gigantic RF signal. The digital 'scope allows accurate cursor measurements on a screen capture, the delay from RF in to AF out measured 15ms. The audio in ADC and audio out DAC both operate on 32-sample blocks every 667 microseconds. Most of the 15ms delay is inherent in the Digital Signal Processing. 


Buck converters

This is one of the most interesting and unique aspects of the QMX design.

An SDR requires a quite powerful CPU for good performance. A powerful CPU goes hand in hand with relatively high current consumption compared to an analog radio. Therefore switching (buck) converters are ideal for providing a high efficiency DC-DC conversion of the 9 or 12V supply to the required internal 3.3V and 5.0V supply rails. Unfortunately switching supplies can create high amounts of RF interference at the harmonics of the switching frequency, and these interference bands can destroy reception over several kHz as the oscillation is drifty and has high phase noise.

QMX contains three buck converters, for the 3.3V, 5.0V supplies (always), and the PIN diode forward bias current (transmit-only). These are implemented with a small number of discrete components (each having resistors, capacitors, diodes, transistors and an inductor). The PWM (pulse width modulation) for the P-channel MOSFET switch is generated by the QMX CPU. The CPU also senses the output voltage via an ADC input. Accordingly the control loop for the buck converter is implemented in the CPU firmware. The PWM frequency is nominally around 116kHz. 

The rather unique aspect is that the microcontroller knows the radio's operating frequency; it also knows the switching frequency. Both are known relative to the high precision 25MHz TCXO reference which is the master clock for the entire design. The CPU can calculate where the harmonics of the switching frequency occur and slightly alter the buck converter PWM frequency to move the interference far away from the operating frequency. 

In practice this works very well. In the leftmost of the images below, the bottom half of the display shows the 20m FT8 waterfall at 14074 kHz. The 361st harmonic of the PWM frequency occurs at 14072.44 kHz. Even though it is only 2 or 3kHz below the operating frequency, it is still not troubling the receiver. However the upper half of the display shows the spectrum when the radio is tuned to 14071 kHz, with the harmonic very clearly visible (and high amplitude noise) at 1439 Hz audio offset and at least 500Hz either side. Now in the next right image, the PWM switching frequency was moved several 10's of kHz away and you can see the reception is perfectly clear. 

Let's call it Dynamic Noise Relocation, or DNR for short. Which for the medically tended among you might remind you of another DNR (Do Not Resuscitate), which is also what will happen to your STM32F446 CPU if things go too badly wrong. Fortunately it is possible to code in numerous safety features, for example such as a simulated performance envelope, and shut down the switching regulator if the PWM duty cycle is out of the expected range for a given input supply voltage. 

Another detail is necessary to resolve the chicken-and-egg problem inherent in a CPU which is the control loop of its own voltage regulator! The circuit contains a 78M33 linear voltage regulator and switches which allow the CPU to choose between the 78M33 linear regulator, and the buck converter. There's also a 47-ohm load resistor switched across the buck converter output to provide a load to operate into while spinning up the buck converter. The oscilloscope trace (third from left) shows the 3.3V and 5V rails; the 78M33 linear voltage regulator is used for the first 0.25 seconds, then the system switches across to the buck converter output. Another 25ms later the 5V regulator is ready and the audio, SDR and LCD subsystems are initialized.

The circuit also provides a soft on/off power switch, and the CPU saves QMX's current state (operating frequency, mode, band, volume etc) to EEPROM so that it can set the radio up in the same way at next power up. There's also a reverse polarity protection circuit. 

With linear regulators the current consumption of QMX is a little over 220mA. With the buck converters in circuit, the current consumption drops to around 80mA (at 12V supply). An excellent result!


Cover and protective rails for QMX by Tomasz Pabich

https://www.thingiverse.com/thing:6585607