Skip to content

Version History

All releases are available on GitHub Releases.

Latest Release

v1.9.5 — 2026-08-25

A fast-follow patch: two ADIF logging bugs, no new features.

  • A duplicate contact could falsely claim your park was activated (Eric, GitHub issue). Working the same station twice made the device say "10 contacts, park activated" while POTA.app credited only 9 unique stations and rejected the upload - cost three activations in one outing before it was noticed. A station now counts once toward the 10-QSO (SOTA 4-QSO) minimum no matter how many times you work them.
  • Deleting a single QSO record could silently do nothing. The delete never checked whether its rewrite actually succeeded before committing it, so a storage write failure looked like the delete "worked" while the record stayed put. It now verifies the rewrite, refuses to touch the log if it can't, and automatically repairs/reclaims space from storage that's become fragmented over a long uptime - so a delete that would previously have failed now just works.

Previous Releases

v1.9.4 — 2026-08-25

The FT8-specific settings get their own home, and the web page finally works on a phone held upright.

  • FT8 Options. The Tab5's Filter button is renamed Options (Roy KI0ER) - it already held real behaviour toggles, not just filters, so the old name undersold it. The web UI gets the equivalent for the first time: CQ message presets and the FT8 filters, previously buried in one long general Settings list, now live behind their own Options button next to TX tone, shown only in FT8 mode. The button carries a count of currently-active settings instead of a plain colour (Dirk DK7CVD, Roy KI0ER - a colour would always read "active" for anyone who runs filters permanently and tell them nothing new), and hovering it lists which ones. Inside the panel, an active checkbox gets a coloured border in addition to its own tick mark, so nothing depends on colour alone (Don N2VGU).
  • The TX tone picker stops going stale. It used to read the band's occupancy once, on open - a slow decision could cross a 15-second slot boundary and land you on a slot that filled in while you were choosing. It now re-checks every 3 seconds while the picker is open, without disturbing your own in-progress pick.
  • The web page works on a phone held upright. In portrait, the top and bottom bars could lose controls off the edge of the screen with no way to reach them - landscape was always fine (Randy N4OPI, iPhone Safari). Both bars now scroll sideways, the same swipe as the decode list.
  • Battery reading simplified. The raw cell voltage is gone from both screens - the percentage already carries the level. In its place: once your charge limit trips, the reading says (limit), on the Tab5 and the web page (Don N2VGU).
  • The snap-on keyboard can be attached - or reattached - any time, not just at boot. It's found within a couple of seconds whenever it's plugged in, and a detach-then-reattach mid-session works the same way. Its two LEDs stay dark once it's found.
  • The macOS/Linux flasher script is guaranteed clean line endings regardless of what machine builds the release (Michael K Johnson KZ4LY, Fedora).

v1.9.3 — 2026-08-23

Updating is now one decision instead of a procedure.

  • The update downloads quietly in the background and only asks you once, at the end. On by default; switch it off under Settings → Network → Download updates automatically if you are on a metered connection, since each update is about 3.3 MB. Downloading never installs anything - only a restart does, and only you can ask for that.
  • A proper window in the middle of the screen, with the version, what will happen, and two buttons: Restart now or Later. The bottom bar breathes gently while an update waits for you and goes quiet once you have said "later" - a signal that never stops being a signal.
  • The long-press is gone. A plain tap opens the window. The hold only ever existed so a stray brush could not start a download; now that a press just opens something you can dismiss, it does not need to be defended against. (Don N2VGU spotted that the old wording described the wrong action at the wrong moment - he was right about the cause, not just the words.)
  • The band-plan strip is far easier to hit. It is only 22 px tall with the bottom bar hard against it below and the waterfall above; its touch area now reaches 50 px up into the waterfall while it still draws the same size.
  • The spectrum, waterfall and FT8 decoding keep running while an update downloads. Previously everything stopped for the whole download. Expect a slight stutter and one brief pause right at the end.
  • Audio is no longer dropped while a log upload is running. Uploading to QRZ, eQSL or LoTW quietly interrupted the audio feed, which could cost you FT8 decodes at the time.
  • TXCQ ANY / EVEN / ODD on the web FT8 page (Randy N4OPI) - choose which 15-second slot your CQ goes out in, from the browser. Same setting as the Tab5's own button, so the two always agree.
  • SSB tune snap is now 500 Hz (Dave KX3DX) - stations that stray off an integer kHz sit at 0.5, and a 1 kHz grid cannot reach them. Also half as many stops across a drag.

v1.9.2 — 2026-08-22

A field-report release: five things fixed or added, three of them from Randy N4OPI.

  • A stuck exchange that never logged is fixed (Roy KI0ER, working K7FD). When a caller's own first message back to us was already a signal report (not a fresh CQ), the QSO machine correctly built the reply but started itself in the wrong state - "waiting for their first report" instead of "waiting for RR73" - so it had no idea what to do with a bare RRR and kept re-sending the same reply for over ten minutes. Fixed at the single choke point all three ways of starting this kind of exchange share.
  • The SWR-protection fault is visible from the web page now (Randy N4OPI). Before this, tripping SWR protection stopped transmission with no explanation anywhere but the Tab5's own prompt, and no way to clear it remotely - the web page showed only a bare "QSO Cancelled". It now shows the same fault message and clears the same way a tap on the Tab5 does.
  • "Who is hearing me" gets time windows and sortable columns. 15 min / 30 min / 6 h / 24 h chips, and every column header sorts by clicking it - both pure re-slices of the one fetch the device already makes. The FT8/FT4 decode list in the browser gets the same sortable columns, with a "CQ callers on top" link back to the device's own priority ordering.
  • Working an older pileup caller from the web page now actually works (Randy N4OPI). Clicking a "Calling you:" entry used to refuse outright the moment the caller's row aged out of the live decode table, even though the Tab5's own pileup screen could work the identical caller fine. It now falls back to the same report-first reply the Tab5 has always used. Pileup entries show their age on both screens now, and the Tab5's decode-list HRD column is now AGE in seconds - a more useful number for judging how much to trust a row. How long a row survives before it drops off the list is now operator-tunable too: a "Max age:" dropdown in the Options modal, 30 to 90 seconds.
  • Simulation mode no longer leaves real stations flickering on screen. Turning it on now clears the decode list and pileup immediately, same as turning it off already did, and real decodes are suppressed from the shared list for as long as sim mode is on - a QMX still attached and receiving can no longer keep re-populating a practice session with genuine stations.

v1.9.1 — 2026-08-21

A hotfix: updating from the device did not work over a real download, on any version, ever, until this fix.

  • v1.9.0 was meant to be the first release where the OTA offer could actually be used; testing it for real for the first time turned up two bugs.
  • The device could not even open the connection. GitHub's own redirect response carries more header data than the firmware's HTTP client was sized to receive - every download failed instantly. This is why v1.9.0's offer downloaded nothing for anyone who tried it.
  • Once that was fixed, a second bug appeared: the device could crash and reboot right at the end of a successful download. The same fix made each downloaded chunk larger, and the download loop never yielded control back to the rest of the firmware while processing it - audio and FFT were starved badly enough, for long enough, to eventually trip a hardware reset.
  • Both fixed and verified on hardware: a real download against the live release completed twice, with a full serial capture proving zero crashes and zero audio interruption throughout.
  • If you are on v1.8.9 or v1.9.0, this needs one cable flash. Your device's own broken download code cannot fetch any release, including this one - it fails the same way regardless of what is on the other end. After that one flash, OTA works normally from then on.
  • Everything else is unchanged from v1.9.0 - the faster web page, WiFi power saving, the WebSocket eviction fix, and the snap-on keyboard shortcuts. This release exists solely to fix the OTA download path.

v1.9.0 — 2026-08-21

The web page is fast again, the snap-on keyboard drives the whole app, and updating from the device can finally be seen working.

  • Try the update. v1.8.9 added updating from the device, but the offer only appears when a newer release exists — and at the time there was none. Now there is. Hold the version at the bottom of the Tab5, or tap it in the web page. Do not want to wait for the 30-minute check? Hold the version even while it says you are up to date and it checks there and then, showing checking... while it does.
  • The web page loads in under two seconds instead of about ninety. It was being sent uncompressed — 263 KB, on a link shared with the live spectrum stream — and is now 83 KB with a tag so a reload costs almost nothing.
  • WiFi power saving is off. It is right for a battery sensor and wrong for something serving web pages: the radio slept between beacons and relied on the access point to hold anything arriving. Outbound traffic was never affected, which is why the spot feeds always worked while the web page did not. Measured over 500 samples, requests that failed outright went from 14.4% to 0.4%.
  • The web page was killing the very stream it displayed. The web server evicts its least-recently-used connection when it runs short of slots, and a connection's place in that queue is only refreshed when it receives something — the spectrum stream only ever sends. The browser's own polling was enough to get it thrown out every few seconds. That is the "reconnecting" some of you have seen for a long time.
  • The snap-on keyboard drives the app. It works in the radio's own menus (arrows, Enter, digits, backspace, Esc to leave), Enter and Escape work in every window with buttons, arrows and Page Up/Down scroll the drawer and the manual, and Ctrl+R / M / L / K / P / F / S / H / D open the common screens. You can reassign all of it from the web page — 25 actions, with Alt left free for your own. (Don N2VGU)
  • Five fixes from Randy N4OPI. The TX power and SWR readout was hidden behind the exchange status, and that whole strip is rebuilt to sit across the panel instead of stacked down it. The TX tone picker picked a slot one or two to the left of the click. "Busy: working …" and "QSO cancelled" never cleared. A worked station stayed green in the decode list. And "Who is hearing me" was quietly discarding reports — it stopped after 64 and said nothing; it now handles 128 and says when there were more.
  • The decode list shows the country, spelled out, where it used to repeat the grid square already in the message. (Randy N4OPI)
  • The web page no longer asks you to confirm ordinary operating actions — calling CQ, cancelling mid-QSO, working a station, starting Antenna Tune. Deleting things and installing firmware still ask.

v1.8.9 — 2026-08-20

The Tab5 updates itself now, and a transmitter that could be left keyed no longer can.

  • The radio can no longer be left transmitting. (Roy KI0ER) His QMX transmitted continuously until he power-cycled it, with the Tab5 running normally throughout. A USB timeout mid-burst made every command fail — including the two that stop transmission — the burst finished, and although the link recovered two seconds later nothing ever re-sent them. The stop command is now retried immediately, and if it still cannot get through it is handed to the radio-control task, which keeps re-sending it on every cycle that works until the radio is demonstrably back in receive.
  • Updating from the device. The version at the bottom of the screen tells you when a newer release exists and installs it if you ask: touch it, hold for a second, let go. It downloads in the background and never restarts on its own — you choose when. The web page says the same in the same words. Nothing is downloaded unless you ask, your settings and logs are untouched, and the previous firmware is kept as a fallback. Install this release with the flasher as usual; after that the cable is only for emergencies.
  • A crash now survives the reboot. An unexpected restart can finally be diagnosed from a diagnostic download — the next boot records what happened, which part of the firmware, and how far into the session.
  • The microSD card keeps the diagnostic log again while WiFi is on. Previously it only received a backup at start-up, so the log was not there when it was needed.
  • The flasher download is 2.9 MB instead of 44 MB. (Gyula HA3HZ) It had been quietly carrying every previous version inside it.
  • FT8 can move off an occupied frequency mid-QSO — to the nearest clear slot only. (Roy KI0ER, Gyula HA3HZ) Far enough to escape whoever is on top of you, near enough that a station using a narrow receive filter still hears you.
  • Bandwidth stayed on a CW filter after switching to LSB. (Samuel W7STF)
  • The out-of-band tuner now works in the browser too. (Samuel W7STF)
  • Browser display stalls. (Samuel W7STF) The message telling a second browser it had lost the live view was malformed, so browsers hung up and grabbed it straight back.
  • The frequency readout could stick on an old value while the spectrum and the radio were both correct.
  • Spur suppression has been withdrawn from the settings drawer. It only ever worked at ×1 zoom, which is not where anyone looks at spurs, and with a real antenna the problem is far smaller than bench measurements suggested. The work is kept for a future release.
  • Every web API command is documented, and the error behaviour is now described correctly.

v1.8.8 — 2026-08-20

If the Tab5 ever restarts on you, the diagnostic download now says why.

  • A crash now survives the reboot. Until now a crash left nothing on the device — the details went straight out of the serial port and were gone, so if you sent a diagnostic download it contained everything except the one thing needed. The next boot now reports the previous crash: what happened, which part of the firmware, how far into the session, and where. If your Tab5 restarts unexpectedly, just send the diagnostic download. A restart with no crash record is also positive evidence it was not a crash — a power cut looks identical otherwise.
  • An FT8 reboot open since v1.3.0, root-caused. Entering FT8 could start the decoder twice, and the second copy freed memory the first was still using. The cause was an internal "is it running yet" flag that answered a moment too late.
  • FT8 was quietly discarding decodes — 99 out of 54,142 in a measured run. A dropped decode never reaches the list, the busy-frequency map, or the check for a reply addressed to you, and a lost reply looks exactly like the other station going quiet.
  • Bandwidth stayed on a CW filter after switching CW → LSB. (Samuel W7STF)
  • The out-of-band tuner now exists in the browser too. (Samuel W7STF) Out of band the Tab5 turns the band strip into a centre-detented coarse tuner; the browser simply hid it, so the one place you most want a way back to a band had no control at all.
  • Browser stalls — a real cause, and it was not your PC. (Samuel W7STF) The message that tells a displaced browser "another browser took the live view" was a malformed frame, so browsers hung up instead of reading it and took the view straight back. Measured: 16 tug-of-war takeovers in ten seconds, down to 2 in twenty-five.
  • The frequency readout could stick on an old value while the spectrum, waterfall and radio were all correct.
  • Radio Menus / Diagnostics colour is not fixed yet, deliberately. The colours the menus use are all handled; the Diagnostics screen sends something else. Rather than guess, the firmware now reports exactly which codes it did not understand — if you can open Diagnostics and send that reading, it is the fix.

v1.8.7 — 2026-08-19

The browser panadapter stops freezing, and your logs can go to your own Cloudlog.

  • The web panadapter no longer hangs for seconds at a time. Reported as getting worse with every release, and it was. Measured over 9.6 hours, the browser session was being torn down 545 times — roughly every 14 seconds in bursts — each costing about 2.2 seconds of frozen display while the browser reconnected. Between the drops the stream ran at full speed, which is why it looked like stalling rather than slowness. The cause is a partial WebSocket write being reported as a complete one: a half-sent frame corrupted the stream, and the browser hung up. The background feeds only made it more likely, which is exactly why it worsened as more feeds were added. (Samuel W7STF)
  • Upload to your own Cloudlog or Wavelog. The fourth logbook, and the only one you host yourself. Plain http:// is allowed when the server is on the same network as the Tab5, so a home server needs no certificate — checked at every upload rather than once at setup, so it refuses from a field site instead of sending your API key across a network you do not control. Use https:// for anything remote or for a hostname. Records go in batches and Cloudlog does its own duplicate checking. If your server is on your own network this is the only upload that needs no internet at all. (Mark G4MEM)
  • Radio menus show the radio's colours. Everything rendered white while PuTTY showed the same screens in red and green. The colour was being read from the radio all along and simply thrown away by both the Tab5 and the browser. (Samuel W7STF)
  • The battery no longer reads 100% then 0% with no pack fitted. Running from USB-C with no NP-F550, the display alternated between the two extremes. The detector for a missing battery was flapping in time with the supply rather than latching. (Randy N4OPI)
  • Waking from the screensaver no longer acts on the tap that woke it. Sleep switched off the mouse pointer and left the touchscreen live. (Randy N4OPI)
  • A radio left receiving on VFO B is put back on A, and tells you. Frequency changes only ever go to VFO A, so with the radio on B nothing you tuned had any effect — while band select still worked, which is what makes it look like your own mistake. (Markus DL8MBY)
  • The browser's spot and frequency labels are readable again on a high-resolution display, where they were being drawn at about half size. (Randy N4OPI)
  • A warning that blamed the wrong thing. After a cable swap you could be told to set the radio to two USB serial ports when it already was. The port is now retried, and the setting is only mentioned when the radio is definitely connected. (Samuel W7STF)
  • Pick callers myself. New option in the FT8 Options modal. While you are calling CQ, a station answering does not start the exchange - they wait in the pile-up until you tap them, and the exchange then runs itself as usual. Only the choice becomes manual. It keeps calling CQ while you pick, and it overrides Auto-work pileup. Off unless you turn it on. (Eric K3FNB)
  • A Bluetooth mouse whose pointer moved erratically. Connected and scrolled perfectly, but the pointer jumped about. The mouse fix in v1.8.4 went into the USB path and this mouse is Bluetooth, so it never applied; and the movement itself was being read with the wrong layout, turning a small movement into a large jump the wrong way. Diagnosed entirely from the diagnostic log that was sent in. (Kevin KW6E)
  • Entering FT8 could reboot the device. A shared decoder buffer could be released twice if the decoder was set up twice without being torn down in between. Caught on the bench while testing this release, and almost certainly the unexplained heap crash that had been on the list since v1.3.0.
  • Under the surface: a crash after about seven hours of healthy operation is fixed, the flash-persisted diagnostic log no longer stops writing with space still free, and two silent USB workarounds now count what they catch so it is possible to tell "never happened" from "happened and was handled".

Investigated, no change: the first entry into Radio menus after a flash drawing blank could not be reproduced — the first open after flashing plus six more were all clean, and the same thing is seen in PuTTY, which points at the radio's own redraw. (Samuel W7STF, Randy N4OPI)

v1.8.6 — 2026-08-18

A same-day fix release. v1.8.5 shipped with the browser interface completely dead.

  • The web UI works again. One broken text string stopped the entire page script running, so the browser drew its controls and then did nothing at all — no spectrum, no waterfall, no working buttons, "disconnected" in the corner, in both Chrome and Firefox. If you use the browser at all, v1.8.5 gave you nothing. The build now refuses to compile a page whose script does not parse, so this particular mistake cannot ship again. (Randy N4OPI, Michael KZ4LY)
  • A crash that looked like a radio fault. An overnight test of v1.8.5 aborted inside the USB driver after about two hours of healthy operation. The reboot is not the expensive part: it happens with the radio still plugged in, which is the one situation that leaves the QMX unable to reconnect — so the radio then stayed dead until morning. The report was "the QMX wedged during the night"; the QMX was fine. Now the driver reports the error instead of restarting.
  • CW: the displayed frequency and tap-to-tune are corrected. A signal transmitted on 7.060.000 appeared at 7.060.040, and tapping it tuned you 40 Hz off, so the other station heard you shifted. Two things added up: a calibration figure that has defaulted to the wrong value since before the panadapter read your CW offset from the radio, and the display rounding to whole analysis bins (47 Hz each). ⚠ Corrected by calculation that matches the reported measurements exactly, but not yet confirmed on the air — please measure and report. (Roy KI0ER)
  • Radio menus: you can see what you are typing. Editing messages past number 9 meant typing blind behind the on-screen keyboard; the screen now scrolls so the radio's cursor stays visible. The help for a radio with no second serial port now tells you to power-cycle it. And the two-finger tap to blank the screen works properly instead of about one attempt in ten — two fingers never leave the glass at the same instant, and the one left behind was being treated as a deliberate touch. (Michael KZ4LY)
  • Also documented: in the band config table, Enable/Disable entries accept E and D typed directly, and the arrows change the value rather than moving between columns — step onto a numeric column first to move across. That is the radio's own behaviour. (Stan Dye KC7XE)

Not a bug: auto-answer is off after every restart by design — a radio that started transmitting the moment the Tab5 powered on might be feeding an untuned antenna. WSJT-X arms transmit per startup for the same reason. (asked by Brian WA6JFK, answered by Roy KI0ER)

v1.8.5 — 2026-08-17

Mostly the things people had already been told were fixed, plus two found on the bench.

Six of these were described as done in replies sent before v1.8.4 shipped, so anyone who believed those replies went looking for them in a build that did not contain them. That is the main reason this release exists.

  • Radio menus: you can see what you are typing, and type. A cursor is drawn — it was tracked internally all along and simply never shown. BS deletes leftward: land on a value, backspace away what you don't want and type the rest. There is an on-screen QWERTY on a keyboard button in the top row, which matters on a Tab5 without the snap-on keyboard — there was otherwise no way to enter a value at all. "Exit terminal" no longer re-opens the session, and when the radio has no second serial port the full menu path is on screenSystem config → GPS & Ser. ports → USB serial ports → 2 — instead of a message that disappears. Values longer than two digits, and values in tables, are backspace-and-retype rather than arrow-adjust; that is how the radio has always behaved. (Randy N4OPI, Michael KZ4LY)
  • The web log viewer can correct a report. It is called View / edit log and could only delete. The two report columns are now click-to-edit, and leaving one empty records that no report was exchanged. Only the reports can change — callsign, band, mode, date and time are what QRZ, eQSL and LoTW match a contact on. An edit corrects the Tab5's log only; a copy a logbook already holds cannot be amended by re-uploading. Related: a report is now logged only if it was actually transmitted, where before an armed message that got replaced could still reach the log. (Gyula HA3HZ)
  • The station you are working never disappears from the list. With Show only CQ callers on, your own exchange vanished — two filters were stacking. The contact in progress is now exempt from all of them. (Roy KI0ER)
  • Leaving Radio menus hands the radio back properly. After a menu visit the waterfall could misbehave until you paused and resumed by hand; closing the terminal now does that for you. A QMX's IQ mode is session state that a trip through its own menus can drop. (Roy KI0ER)
  • A pileup caller is answered from what they actually sent rather than always a bare report — the last of a family of bugs where the manual Transmit button was right and the automatic path lagged.
  • The clock no longer says UTC(GPS) on a radio with no GPS. The Tab5 decided a radio was GPS-disciplined when its second-tick agreed closely with internet time — but the Tab5 also sets that clock on a radio without GPS, so it was reading back its own handiwork. Measured across four pushes, the agreement landed anywhere from 12 ms to 834 ms, so the same firmware would say GPS on one unit and not on another for no reason at all. It was not only a wrong label: once it believed there was GPS it stopped keeping that radio's clock right, and a QMX loses its clock every time it is switched off. A clock the Tab5 set is no longer treated as evidence about itself.
  • In CW the display follows the offset you actually set. The dial agreed with the radio but the waterfall did not, and tapping a signal tuned you about 30 Hz off — so you transmitted off frequency as though XIT were on. The radio's CW offset was read once, when the Tab5 connected, and never again, so changing it on the radio left the display correcting by the old figure for the rest of the session. It is now re-read every few seconds while you are in CW. (Roy KI0ER)
  • A caller who answers your CQ with a report instead of a grid is followed properly. Someone who already knows they have you often skips the grid and reports you straight away; the reply should acknowledge that with R plus your report, not send another bare report and lose a cycle. Tapping Transmit by hand always did this correctly — it was only the automatic run that was a step behind. (Gyula HA3HZ)
  • A dated, day-at-a-time ADIF export. A Today only, dated file link beside the ADIF download gives just that day's contacts, named qso-YYYY-MM-DD.adi, so a daily file already says which day it is. (Gyula HA3HZ)
  • The red transmitting banner no longer covers the text under it. The panel was 99 pixels tall and holding 406 pixels of content with nothing to contain it. It can now shrink and scroll, and the status line no longer wraps onto three lines. (Gyula HA3HZ)

Known limitation, unchanged: in Radio menus, values longer than two digits and values inside a table still do not change with the ◀ ▶ keys — Max PA Voltage, the band-config columns, CAT timeout, TCXO and the Virtual U3S fields. They need some key other than left/right, and the question has gone to QRP Labs rather than a guess going into a release. Everything else in the menus edits normally.

v1.8.4 — 2026-08-16

Your radio's own menus on the Tab5, and a batch of fixes that stop it doing things you did not ask for.

  • The QMX's own menu system, on the Tab5 and in the browser. Settings → Radio → Radio menus shows the radio's 80×24 menu screen with arrow keys, Enter and Back. For a QMX+ with no control panel this is the only way in — everything the front panel would reach, including Band config and System config. It runs on the radio's second USB serial port, so the panadapter keeps decoding while you are in the menus; enable that once on the radio under System config → GPS & Ser. ports → USB serial ports → 2. Closing walks the radio back out through its own Exit terminal item, and if you close the browser tab or leave it two minutes it hands the radio back by itself. (Randy N4OPI, seconded by Michael KZ4LY)
  • Auto-answer now stands down when you would not expect it to be running. It waits until it has heard both transmit windows before its first call, instead of picking a frequency from nothing after a band change. Cancelling a transmission switches it off — so halting a transmission to go and check your antenna does what you expect, rather than the radio starting again a cycle later. A band change switches it off, whichever way you changed band, because the antenna is usually not tuned for the new one yet. And it is off at every startup. (Roy KI0ER)
  • A transmit offset you choose during a QSO is used. It was refused whenever a burst happened to be on the air — which, since a transmission fills most of every other slot, was about four attempts in ten. The exchange then carried on at the offset it started with, exactly when you were trying to move out from under someone. It is now accepted immediately and applied the moment the burst ends. (Roy KI0ER)
  • Spur suppression offers the setting that works first. Both were there, but the weaker one was offered first: measured on 20 m, Erase spur bins takes the spur columns down about 78% against Subtract's 28%. Erase now comes first. It does not leave dark holes — it ramps between the neighbouring bins — and what it learns is remembered per frequency, so the two-second measurement happens once. (Samuel W7STF, who reported it as not seeming effective, and was right.)
  • A USB mouse is read from its own description instead of an assumption. A mouse reporting 16-bit movement had it read as 8-bit, so the pointer flew sideways, jumped between points, and barely moved vertically. (Kevin KW6E)
  • A WiFi hiccup can no longer restart the Tab5. The WiFi transport used to restart the whole device rather than drop a single frame — and because it was a clean restart there was no crash report, so it looked like a mystery. It now drops the frame and keeps going.
  • Smaller, all reported by users: the Close button in the QSO log is no longer red — it was a brighter red than Delete all, which is exactly backwards (Gyula HA3HZ); a QSO that could not be saved is no longer reported as logged (found while answering Gyula's question about how much the log holds — about two thousand contacts); and the top bar no longer gets stuck showing the wrong mode or band.

v1.8.3 — 2026-08-14

A field-report release: every fix in it was found by someone using the radio.

  • Your QRZ and eQSL logins can be changed from the browser. The prompt only ever appeared when nothing was stored, so a key typed wrongly — or one the service later reissued — could not be replaced from the page at all, and the only ways out were editing the config file by hand or a full erase-and-reflash. There is now a Change QRZ API key and a Change eQSL login row under the upload links, which appear once something is stored. (Brian WA6JFK)
  • The dB scale labels follow the range you set. They were fixed at −40 down to −120 and ignored your Min and Max completely, so any range other than the default was described by labels that did not belong to it. They are now worked out from whatever range you choose, with a finer step for a narrow range. At the default range they are unchanged. (Samuel W7STF)
  • The "Adaptive floor" slider has been removed. It could not change anything — the per-bin noise floor it blends towards is re-seeded many times a second, so both ends of the slider produced the same picture. It was already absent from the browser; a control that cannot do anything is worse than a missing one. The stored value is kept, so it can return if the underlying tracking is ever fixed. (Samuel W7STF asked why there were so many handles — this was the answer.)
  • The filtered part of the spectrum is drawn where the radio actually filters. There was a gap of about 250 Hz between the dial frequency and the start of the shaded passband, because that edge was a fixed number that never came from the radio. In the digital modes the QMX uses one fixed filter of 150 to 3200 Hz, and it reports 3200 as the top edge rather than as a width — so the shading was drawn at 200 to 2900. Corrected, and measured on the screen afterwards. (Samuel W7STF)
  • RF gain no longer sticks on "reading…". It displayed the answer to the previous question, so the first time you opened the drawer there was nothing to show and nothing repainted it when the answer arrived — it cleared only when you next opened the drawer, and a single unanswered query left it stuck for the whole session. Since the gain is stored per band, it came back on every band change. It also now says "radio not connected" when the radio is not there, instead of implying it is being read. (Samuel W7STF)
  • The dark bands at the edges of a zoomed view are about half as wide. Zooming filters the signal before re-analysing it, and that filter began rolling off just inside the edge of what is drawn. The filter is now twice as long. Widening it instead was rejected deliberately: that would have traded the dark edge for false signals appearing where nothing is transmitting. (Samuel W7STF, whose own estimate of the width was accurate.)
  • Out of band, the band strip is now a coarse tuner. Inside a band the strip is a map — where you touch is where you go. Outside one there is nothing to map, so a handle sits in the middle and you drag it off centre to move the dial; let go and it springs back. A full pull moves by half of what is on screen, so two drags overlap instead of skipping a gap, and it gets finer as you zoom in. (Samuel W7STF, who rightly pointed out that a row saying only "out of band" earns nothing.)
  • The browser's decode list shows distance and bearing. KM and BRG columns after the audio tone, in the same order the Tab5 uses, switching to MI if you have Distance in miles ticked. The Tab5 works it out and sends it, so the two screens cannot disagree, and a station that has not sent a grid shows a dash rather than a made-up number. (Tony Abbey)

v1.8.2 — 2026-08-13

Your radio's own spurs can be removed from the display, and a POTA clock that stopped being stolen.

  • The spurs your radio makes itself can now be taken off the display. If you have ever seen evenly spaced signals that are always in the same place, do not move when you tune, and are still there with the antenna unplugged — those come from the QMX's own synthesizer. On the bench at 14.074 MHz, the FT8 calling frequency, the strongest sat nearly 40 dB above the noise floor. The panadapter finds them by nudging the dial 25 Hz for about two seconds: a real signal stays where it is, while these move sixteen to fifty times further. Off by default — Settings → Waterfall → Spur suppression, with Subtract (can never hide a real signal) or Erase (they disappear completely). Wherever something is being removed, the line under the frequency labels turns teal, so you can always see what is being touched.
  • A QMX without GPS no longer overwrites an accurate clock. Set the Tab5's RTC at home, arrive at a POTA site, switch the radio on — and your accurate UTC was replaced by the radio's power-on 00:00, after which FT8 stopped decoding. The clock was only protected while the network time was fresh, and offline it never is. The Tab5's own RTC now wins, and it sets the radio's clock instead. (Don WB0LQW)
  • RIT can be parked instead of cleared. Long-press the RIT button and the offset is remembered while RIT switches off; long-press again and it comes back unchanged. For a net or a round robin where one station is off frequency, the offset comes and goes as the turn passes, without re-dialling it. The button reads RIT (+250) while an offset is parked. (Roy KI0ER)
  • The RIT offset is shown on the waterfall, beside its own marker, so you can read how far off you are listening without looking at the corner. (Samuel W7STF)
  • The band strip no longer vanishes when you are out of band. It reads "Out of band" in one flat colour and comes back to normal as soon as you are inside a band, so the row is never just empty and the coarse-tune drag stays where your thumb expects it. (Samuel W7STF)
  • The Operator Identity window no longer appears for unrelated faults. Calling CQ with a message that would not build sent you to check a callsign that was perfectly fine. The real error is now shown. (Don WB0LQW)
  • The panadapter no longer switches your radio off trying to fix something it cannot. After certain restarts the QMX stops answering on USB until it is power-cycled. The recovery meant for a stuck USB port was firing at that and cutting the port's 5 V — switching the radio off in front of you, for nothing. It now recognises the difference and leaves the radio alone.
  • "Adaptive floor" is documented as having no effect. Both ends of the slider produce the same picture. It was already absent from the browser for that reason; now the manual says so rather than describing a control that does nothing. (Removed outright in v1.8.3.)

v1.8.1 — 2026-08-12

The fixes from the first day of v1.8.0 in the field.

  • The spectrum is tunable again wherever you can see it. Most of the spectrum had stopped responding to tap-to-tune — only a window in the middle worked, so it felt as though tuning only worked near the centre frequency while the waterfall was fine. The touch areas behind the top bar had been made shallower without the tune code being told, leaving a strip that belonged to nobody. The rule now is simply that if the mouse pointer is white, clicking tunes, and a finger behaves the same.
  • CW centre reaches the value your radio actually uses. The radio offers 500–950 Hz in 25 Hz steps and the slider offered 600–800 in 50 Hz steps. It also could never agree with the radio, because the Tab5 pushed its stored value about thirteen seconds before the CAT link exists — so it now reads the centre from the radio at connect. (Samuel W7STF, Roy KI0ER)
  • The CW transmit offset puts VFO B back. Switching it off did return the radio to simplex — FT8 was never transmitting off frequency — but VFO B was left at your frequency plus the offset for the rest of the session. It is now restored and simplex is confirmed by reading it back. Your QMX may still show both VFOs; that is on the radio's side and is reported to QRP Labs. Switching band and back clears it. (Roy KI0ER)
  • RF gain and volume agree between the Tab5 and the browser. Whichever screen you opened second used to show the value from before your change. (Samuel W7STF)
  • Browser spot labels no longer swallow clicks meant for a signal. A callsign can be 3–4 kHz wide on screen, and clicking anywhere in it took you to that station. A label is now a target only close to the frequency it marks. (Samuel W7STF)
  • The seconds can be set again. Hours and minutes were editable and the seconds were not, so with no WiFi and no GPS there was no way to get the clock inside the second FT8 needs. Hold the SS box and release on the minute. (Don WB0LQW, gesture by Roy KI0ER)
  • The RIT button can be hidden — Settings → Radio → Show RIT button, on by default. An offset that is actually engaged still shows itself. (Samuel W7STF)
  • Saving settings from the browser could fail with "HTTP 400" once the form grew past 1 KB.
  • The manual now says a Bluetooth mouse must be BLE 4.0 or later. The Tab5's Bluetooth has no Classic radio, so an older Classic mouse never appears at all and no firmware change can help. (Roy KI0ER)
  • Bluetooth mouse decoding is unchanged this release. The real fault was found — only the first 22 bytes of the layout description every mouse publishes were being read — but the fix broke something else and was reverted. It will be redone.

v1.8.0 — 2026-08-11

RIT you set by tapping, summit spots, and a browser that finally matches the Tab5.

  • RIT — receive off your transmit frequency. A caller answering slightly off your frequency can be pulled in without moving transmit. Tap RIT at the top right of the spectrum to arm it, then tap the caller: a dashed magenta marker shows where you are listening, in the spectrum and down the waterfall, while the gold line goes on meaning the dial — and therefore transmit. The filter window moves onto the caller too. It stays armed, so the next caller is another tap, and retuning clears it. Works from the browser as well. (Roy KI0ER, shaped with Michael KZ4LY and Bill Carver)
  • SOTA spots. Summit activations join POTA, RBN and the DX cluster on the spectrum, from spothole.app with Ian Renton M0TRT's permission. Off by default — it is a volunteer-run server.
  • Fox/Hound (DXpedition) mode, hound side. Off / Guided / Automatic. Calls from above 1000 Hz, moves onto the Fox's frequency when answered, and stops on its RR73. Simulation-verified only — no real DXpedition has seen it yet.
  • The browser caught up with the Tab5, control by control. RIT; starting and stopping a POTA/SOTA activation, with a badge while one is running so it cannot be forgotten; CW pitch, IF calibration, the battery charge limit, the 180° screen flip, Fox/Hound, simulation mode and the spot mode filter; and a "Prepare for flashing" item. Only the clock-sync window is still Tab5-only.
  • The browser's spectrum and waterfall now look like the Tab5's rather than approximating them — same colour maps, same floor arithmetic, and the black level, contrast, colour scheme and smoothing settings finally reach it.
  • Spot mode filter. Hides spots you cannot work in the mode you are in, since tapping a spot sets the mode as well as the frequency. (Michael KZ4LY)
  • Mouse and pointer. A proper arrow that turns bright green over anything a click would act on, clickable edge grips, and tappable handles on the drawer and Memory Channels.
  • CW transmit offset narrowed to ±300 Hz, and the guidance corrected: earlier releases suggested 400–600 Hz, which is outside many operators' filters. Around 100 Hz or less is what works.

Two things to check if you use the browser. SWR protection set from the browser was never saved on any v1.7.x build — check it on the Tab5 (Settings → "SWR protection (transmit)") if you set it there. And spot labels were stealing clicks: a callsign's clickable area was wide enough to swallow several kHz, so clicking a signal near one tuned you to that station instead. Both fixed, along with Bluetooth mice that send a different byte layout than the one on the bench, and two browsers fighting over the live spectrum.

v1.7.2 — 2026-08-10 — bug-fix patch

  • A Bluetooth mouse could stop reconnecting until you restarted the Tab5: a part-way failed attempt stopped it trying again, and the mouse sleeps after about half a minute, so it happened routinely.

v1.7.1 — 2026-08-10 — bug-fix patch

Tried a Bluetooth mouse on v1.7.0? Install this so your WiFi doesn't go flaky.

  • The Bluetooth mouse was making WiFi unstable. Switching the mouse on could leave the web UI flapping between Connected and Disconnected, with the link dropping and recovering for as long as it stayed on. The two look unrelated, which is why it took days to find: WiFi and Bluetooth share one link to the wireless co-processor, and the Tab5 was listening for every Bluetooth device in the building, continuously — thousands of advertisements a minute in a busy room, all of it crowding WiFi off the same pipe. It now listens in short bursts, and once your mouse is paired the co-processor ignores everything else, so that traffic never reaches the Tab5 at all. On the bench the underlying link errors went from about five a minute to none, with the mouse still connecting by itself. If you have not used a Bluetooth mouse, nothing changes for you.
  • The settings drawer would not close. The swipe only worked if your finger started on bare background, so it felt random. Tap anywhere outside the drawer. (Michael KZ4LY)
  • CW transmit offset by the hertz−50 / −10 / +10 / +50 buttons under the slider, which covers 2000 Hz in two-pixel steps. Range deliberately unchanged. (Michael KZ4LY)
  • DX cluster spots stop vanishing. A cluster with nobody typing was treated as a dead connection and dropped about every 70 seconds, losing its held spots. Quiet is normal on a cluster.
  • The browser said GPS with no radio attached — the clock fault Don N2VGU reported, fixed on the Tab5 in v1.7.0 but missed in the web page.
  • A failed WiFi scan says why, and one that never returns no longer sits on "Scanning..." forever.

v1.7.0 — 2026-08-09

A mouse, the phone spots that were missing, and knowing who hears you.

  • A Bluetooth mouse, with the radio still plugged in. A USB mouse cannot do this: the QMX occupies the Tab5's only USB port, and sharing it through a hub does not work on this hardware. A Bluetooth mouse never touches that port. Pair it once — it reconnects by itself afterwards, across reboots and updates — and you get a pointer, a left click, and a wheel that scrolls whatever is under it. For anyone whose hands are cold or unsteady, every control becomes a click instead of a precise tap on glass. A symbol in the bottom bar shows off, scanning or connected. Off by default; see Settings.
  • DX cluster spots — the phone activity RBN cannot see. RBN is automated skimmers, and no machine recognises a callsign spoken into a microphone, so every SSB station on the band was invisible to it. A cluster is people typing. Mode is worked out from the spotter's comment or your band plan, park and summit references are picked out of the text, and skimmer spots relayed onto the cluster are dropped so they cannot double what RBN already shows. See Live Spots.
  • Activation mode for POTA and SOTA. Start an activation and every logged contact carries the reference automatically, with the count shown against the threshold — ten for POTA, four for SOTA — read from the log itself so it survives a reboot. Chases are tagged too, from spots already on screen. The ADIF download can be limited to one reference, so you upload that park's log rather than your whole file. Stopping is as prominent as starting, because the mistake that actually happens is driving home with it still on.
  • SWR protection while transmitting. The QMX reports SWR over the control link; above your limit — 3.0:1 by default — the transmission is cut short and the transmitter latched off until you clear it. An FT8 burst is nearly thirteen seconds of continuous key-down, so a disconnected or wrong-band antenna has real time to do damage.
  • Who is hearing me. Asks PSK Reporter which receivers have copied your callsign, listing distance, bearing and the report they gave you. The valuable case is the mismatch: stations you can hear that cannot hear you is a transmit-side fault, and from the receiving side alone that looks exactly like a dead band.
  • Spots appear once. An activator spotted on POTA and heard by RBN was drawn twice, in two colours, almost on top of each other; RBN also doubled itself where two skimmers rounded the same signal differently. One station is now one entry, and the RBN sighting is folded in as corroboration — meaning a receiver actually copied them just now, rather than a self-spot typed an hour ago.
  • Fixes: the clock claimed GPS time with no radio attached (Don N2VGU) — the Tab5 has no GPS of its own, and it was trusting a remembered verdict; each spot source checkbox is now genuinely its own source, where switching off POTA used to blank the whole lane and leave its spots behind; a tune started from the web UI now says so on the Tab5; and Antenna Tune no longer cancels itself after a second while leaving the radio keyed.

Not yet confirmed on the air: SWR protection has never seen a real mismatch, and the DX cluster lane has been verified as a feed but not watched drawing on a busy band. Reports welcome.

Installing v1.7.0

  1. Use the one-click flasher from the Releases page
  2. Or follow Build from Source

Your settings are preserved during a normal flash.

v1.6.0 — 2026-08-09 — the browser became a second operating position: reply to a station, pick your TX tone, edit settings and memories and read the manual from any browser; qmx.local; CW transmit offset, RF gain and Release radio; self-recovering audio; the manual gained an A-Z index and drawn diagrams; the settings drawer was grouped with a Basic/Expert toggle.

v1.5.0 — 2026-08-06 — Context-sensitive help: the User Manual button opens the chapter for the screen you are on, warning banners are tappable, and a Need guidance? panel lists symptoms in plain words with the ones the device can see highlighted. Plus Call CQ from the browser (Dennis WN4FLA) and the station you are working held at the top of the decode list (Don WB0LQW).

v1.4.0 — 2026-08-05 — Live spots on the spectrum (POTA, with RBN as an opt-in second source): callsigns drawn on the trace at the frequency the station is actually using, grey when you have already worked them on that band, press-and-drag to pick one and lift to tune it with the right mode; spots fade with age and go after 30 minutes, and corner counts take you to the ones just off-screen. Behind that, three long-standing causes of instability root-caused rather than patched around: all internet uploads were failing (QRZ, eQSL, LoTW and the update check — a hardware crypto engine starved of memory), 52 KB of internal memory was being held by the firmware's own tables (low-water mark 0 KB → 32 KB — one cause covering the SD remount failures, USB not re-opening after a radio power-cycle, and reboots after an hour of FT8), and power-cycling the QMX could freeze the Tab5 on the dead USB connection. Plus WiFi remembers up to six networks and moves between them itself (Roy KI0ER), four of Roy KI0ER's five FT8 findings fixed, and the QRZ / eQSL / LoTW setup no longer hidden until you have logged a contact (Brian WA6JFK).

v1.3.6 — 2026-08-03 — A pure fixes release, two of them closing problems as old as the project: the "restart the QMX again and again" USB mystery solved as two separate bugs (the Tab5-side one fixed with self-healing; the QMX-side one detected and explained on screen, reported to QRP Labs), a crash on radio power-on fixed (Dennis WN4FLA), WiFi Scan working away from home, live TX status on the web page, and the "Diag(saved)" download delivering the crash log with an SD card inserted.

v1.3.5 — 2026-07-31 — Don WB0LQW's three requests, Roy KI0ER's bug report and the drawer touch fix: CQ stops calling after a limit you set (long-press Call CQ → CQ stop, never/1-5/10, live "call 2 of 4" counter, one extra listening slot after the final call), the QSO log opens in your browser (QSO Logs → View / edit log — sortable columns, per-row delete, type-DELETE Delete-all) with Delete all on the Tab5 too (two-tap, "ALL 34?"), an escape for the busy-station hold (TAP TO CANCEL), the settings drawer stops stealing your finger mid-drag, QMX volume verified identical to the radio's own LCD and capped at 50 dB (Randy N4OPI), and a latent bug fixed before it bit anyone: clearing the log would have silently disabled all future QRZ/eQSL/LoTW uploads.

v1.3.4 — 2026-07-29 — The same-day field reports on v1.3.3, almost all from Roy KI0ER: a partner who never decoded your final now gets it re-sent (up to three times in four minutes) instead of the Tab5 moving on without ever making their log, finishing by hand no longer writes duplicate log entries, the fabricated 599 signal reports nobody sent are gone from the ADIF log, and the occupancy map is filtered by time window — a tone busy only in the opposite slot no longer reads as busy for you. The TX frequency became a permanent button on the FT8 screen with a live mini occupancy strip under the slot countdown, TX Hold (WSJT-X's "Hold Tx Freq") pins your tone, the parity choice is one cycling TXCQ ANY / EVEN / ODD button, and WiFi strength in the bottom bar is a fan icon with the freed width going to the network name.

v1.3.3 — 2026-07-29 — Your TX audio frequency became visible and adjustable for the first time: a tone picker with a live occupancy strip across the 200-2800 Hz window, drag-to-pick, ±50 Hz, Find clear slot, changeable mid-QSO but never mid-burst (Roy KI0ER). The Tab5 also stopped calling stations already working someone else — which additionally stopped a merely-popular station being grey-listed for it — an incoming RRR began closing a QSO like RR73 (it used to deadlock), a QMX volume slider in dB matching the radio's own LCD arrived for control-panel-less QMX+ builds (Randy N4OPI), and LoTW uploads gained US state and county, whose absence had been costing US operators their Worked All States and county credit (found via Paul N8HM's CardSat).

v1.3.2 — 2026-07-26 — Grid squares are logged again (almost every QSO was missing GRIDSQUARE — John W5JSS), PSK Reporter spotting on by default (since confirmed working: "QMX Panadapter v1.3.2" is listed under "Software in use" at pskreporter.info with spots from six stations — note the 5½-minute delay before the first report, and that PSK Reporter never acknowledges anything, so that page is the only place to check), the User Manual built into the firmware so it needs no WiFi and no SD card and the "Save offline" button is gone, an explicit microSD backup contract (continuous with WiFi off and a green dot; one complete backup per start-up with WiFi on and a yellow dot — insert the card before switching on), grey-listing for stations that never answer (opt-in), and pileup replies using the intelligent-Transmit laddering (both Roy KI0ER).

v1.3.1 — 2026-07-24 — Two decode-list columns requested by Roy KI0ER (DT, the station's slot-timing offset, and HZ, its audio tone, with the country column compacted to a 3-letter code), a boot-diagnostics fix so ST7121 units report the hardware actually detected (Paul VE3PIK), and UI alignment polish (QMX prompt placement, FT8 left-pane grid, settings-drawer dropdowns and sliders).

v1.3.0 — 2026-07-23

Smarter manual FT8 operation — built around field feedback from Roy KI0ER — plus a rebuilt practice simulator, USB mouse support, and a web file browser for the microSD card.

  • Intelligent Transmit. Tapping a decoded station's Transmit now sends the correct next message for that exchange — their CQ gets your grid (or your report with Skip-TX1 on), their grid gets your report, their report gets your roger, and so on — the same behaviour as a WSJT-X double-click. You can run a whole QSO by hand, one tap per step, and it logs to ADIF like any other contact when you send the closing RR73/73.
  • Faster replies. The mid-slot reply window is wider and hand-armed exchanges now land on the beat instead of a cycle late. A subtle bug that made every exchange step transmit twice in some cases is fixed.
  • Fast pounce (early decode) — new toggle, on by default. Decodes appear before the slot boundary (the way WSJT-X works), so answering a fresh CQ can transmit in the very next slot instead of waiting 30 s. ⚠️ Honest note: this specific feature hasn't been verified on a live band yet (no antenna at the development QTH until mid-August). The known trade-off is that a station transmitting late in the slot can occasionally be missed. If your decode counts drop with it on, switch it off in the FT8 settings drawer — and please report your before/after numbers on the groups.io thread; that's exactly the field data we need.
  • Pileup no longer hides the log. While callers are waiting the ADIF-log button reads "Pileup" — holding it now always opens the ADIF log (a one-time hint teaches the gesture). Auto-work pileup also starts draining immediately when you enable it with callers already waiting, and worked-before stations only vanish from the pileup when you've actually checked "Exclude worked-before".
  • Practice simulator, rebuilt. FT8 Simulation Mode now needs no radio at all — six phantom stations (US + DX) call CQ, four of them answer your CQ at once (a real pileup to practice on), and they're patient like real operators: each repeats its message up to four times before giving up. They answer manual step-by-step Transmit, Auto Pounce, and CQ-runs alike. When you're done, a "Del N test" button in the ADIF viewer (only visible while practice contacts exist) wipes them from the log in two taps.
  • USB mouse. Plug a mouse into the USB-A port — a cursor appears and clicks drive everything. (Limitation: the mouse and QMX can't share the port, and a USB hub can't bridge them on this hardware — so it's for setup, log review and manual reading with the radio unplugged.)
  • microSD file browser. Files → SD Files in the web page opens a browser for the card — download logs and backups, upload, delete — without pulling the card out.
  • User Manual on a fresh boot now waits for WiFi instead of asking for a reboot.

v1.2.0 — 2026-07-20 — A built-in User Manual on the Tab5 itself (Settings drawer → User Manual): native markdown reader with a drag-to-pick two-column Contents page, offline copies to microSD (Save offline), and a quiet GitHub firmware-update check. (The Save-offline mechanism was superseded in v1.3.2 — the manual now ships inside the firmware.) Plus the FT8 pileup fix: a worked (or late-answering) station no longer lingers in the pileup. (Thanks to Dirk DK7CVD.)

v1.1.0 — 2026-07-19 — A years-old FT8 decode mystery solved: the panadapter used to hear 60+ stations in its first slots then collapse to a fraction; the cause was ~200–350 ms of QMX audio lost at the USB wire every slot (invisible to every counter). Fixed — full decode rate every slot now. Plus the microSD card promoted to a full grab-and-go station backup (QSO log + settings + LoTW cert/key), automatic GPS time sync (~10 ms, no toggle), a band-plan drag from the bottom bar, and an ADIF-viewer crash fix.

v1.0.1 — 2026-07-17 — Point fix: when you answer a CQ, the report you send back is your own measurement of their signal, not an echo of theirs. (Reported by Steve N0SZ, Jonathan KN6LFB.)

v1.0.0 — 2026-07-16

The 1.0. The beta label is gone: the QMX Panadapter is a complete, self-contained FT8/FT4 station — receive, transmit, auto-QSO, logging, and upload to all three major logbooks — with no PC anywhere in the loop.

  • LoTW upload — the final piece. QSOs are signed on the device with your own ARRL callsign certificate and uploaded directly to Logbook of the World. One-time guided setup from the web page (step-by-step TQSL certificate export, then import — your certificate passphrase never leaves your browser). Live-verified against lotw.arrl.org. Certificate renewal: Ctrl-click the LoTW button
  • The FT8 "everything sent twice" behaviour is fixed. Replies used to miss their own slot by ~2 seconds and go out again next cycle, doubling QSO duration; the transmitter now holds ~2 seconds for the fresh reply and fires it on the same slot. Field-verified on air
  • Nonstandard callsigns work now: special/compound calls (special-event stations, PJ4/...) no longer show as <...> once heard in full, and their answers to your CQ are recognized
  • Correct received reports in the log: the partner's R-06-style roger is their real measurement of your signal and is now logged as such — no more 599 placeholders from CQ runs. (Old 599 rows can be deleted — see next)
  • QSO log viewer grows up: a Today/All filter with a POTA activation counter (title turns green at 10 QSOs today), and single-record delete — long-press a row, drag to the right line, release, confirm. Deletions keep all three logbook upload positions consistent
  • Broken QSOs resume: if a station fades mid-exchange and comes back within a few minutes, the exchange continues where it stopped (automatically, or by tapping their row) instead of restarting from scratch
  • Steadier decode list during CQ runs: stations you can't currently hear (they transmit when you do) no longer vanish mid-run, and the list keeps entries for 2 minutes instead of 1
  • Display sleep: set an idle timeout and the screen turns off while everything keeps running (FT8, radio link, web UI). Tap to wake — the wake tap can't press anything. Two-finger double-tap blanks immediately. A real battery win for unattended and web-only use
  • Reorganized settings drawer: setup items (WiFi, callsign, band-plan region, brightness, battery care, display sleep) grouped at the top, display-tuning controls below
  • Web page polish: the bottom bar's many buttons are now three tidy menus (QSO Logs / Files / Miscellaneous); a congested WiFi link can no longer freeze the page for seconds
  • A rare crash fixed: a momentary USB glitch on the radio-control link could reboot the whole device; it now just retries
  • Full writeup in Version History Document

v0.21.0

  • FT4 returned — the panadapter no longer redraws itself behind the FT8/FT4 screen, freeing the processor headroom FT4's 7.5-second cadence needs; verified end-to-end (RX + TX)
  • Fixed a full-screen display flash (mostly in FT4); QRZ upload no longer gets stuck on already-logged contacts; reset settings or Wi-Fi from the web page; QMX VOX switched off automatically at link time

v0.20.1 / v0.20.0

  • Robustness release. WiFi "dies after a few minutes" fault now self-heals instead of needing a reboot; opening a window no longer freezes the device; the radio-control (CAT) link rides out USB glitches; the web UI pauses its stream while FT8 runs
  • FT8 decode timing anchored to the exact slot boundary; FT8 pile-up list + "Skip TX1" quick pounce; 11 m/CB band; memory-channel overhaul; battery-care charge limit; web-UI whole-band plan strip, draggable split, better screenshots and keypad
  • microSD now on its own bus (SD auto-archive still off — it squeezed memory needed by FT8)
  • v0.20.1 hot-fix: fixed a reboot on every pounce (a scratch table overflowed a small task stack; moved to PSRAM)
  • (FT4 was switched off across v0.20.x for the memory pressure now resolved in v0.21.0.)

v0.19.5

  • AM mode + Antenna Tune for QMX 1_04+ firmware (invisible on stable 1_03_002)
  • Fixed a crash on leaving FT8 mode; WiFi on/off now applies live and no longer wipes a saved password; FT8/FT4 remembers its own frequency
  • Band picker shows all bands in two columns; band-plan strip is a see-through framed window with 6 m segments; steadier point-to-tune; settings-drawer slider/scroll fixes; DiGi-gated memory recall in FT8/FT4

v0.19.4

  • FT4 usability — four stacked faults fixed: a capture buffer's FFT workspace in slow memory (every other slot decoded nothing), a mis-firing stuck-decoder watchdog wiping the list mid-QSO, an uncapped per-slot clock nudge, and slot-parity computed on FT8's grid in FT4
  • QMX IQ-mode confirmation hardened (readback no longer fooled by the command echo)
  • See-through frequency keypad; settings-drawer declutter (removed Snap-to-signal + FT8 sync lines, moved Band-plan region)

v0.19.3

  • QMX IQ-mode handshake retried automatically (up to 4 attempts), with a red on-screen banner if all attempts fail — a silent failure could leave a whole session without I/Q data (spectrum shifted, tunable across the full 48 kHz window)
  • Band-plan strip: tracks zoom/pan live, shows the filter passband at band scale, drag-to-tune and tap-to-jump directly on the strip
  • Memory channel drag-to-move; tap an empty slot to create; out-of-band frequencies rejected immediately
  • Frequency entry popup: draggable, resizable (pinch/swipe), position remembered across reboots
  • ADIF log viewer rebuilt: real column alignment, sticky header, Country and Mode columns, Sent/Rcvd split, zebra rows
  • FT8/FT4 TX confirm dialog: up/down nudge buttons; FT4 countdown and title corrected for 7.5-second slots
  • FT4 clock-sync fix (timing offset was using FT8's block geometry, ~3.3× wrong) and FT4 decode-quality fix (FT8's iteration cut no longer applied to FT4)
  • QRZ/eQSL uploads more reliable (SD auto-archive paused during uploads); web UI stale-connection freeze capped at 5 s

v0.19.2

  • microSD auto-archive: diagnostic log, ADIF log, and a config export are mirrored automatically to a microSD card when one is inserted
  • Diagnostic log is now always-on and survives a power loss (a rolling copy persists to internal flash, downloadable even with no SD card)
  • USB reconnect fix: power-cycling the QMX after WiFi is up no longer breaks audio/CAT
  • Crash fix: a USB disconnect race that could reboot the Tab5 when the QMX dropped off USB
  • QMX IQ mode is now verified, not assumed — the panadapter checks the radio actually accepted the I/Q-mode command instead of just checking the USB write succeeded
  • FT8 continuation messages (report, RR73, 73) resend less often during an active QSO — decode time on busy slots cut by ~25-30%

v0.19.1

  • New project homepage at tab5.lav.dk — the user guide and reference as plain web pages
  • Logbook uploads (QRZ / eQSL) and log downloads now work reliably while FT8 is running — no more reboots or dropped WiFi during a transfer

v0.19.0

  • FT4 transmit and receive (7.5-second slots, 105 symbols, 48 ms cadence) — CAT cadence verified on real QMX hardware
  • Per-mode sticky frequency/bandwidth/filter recall between FT8 and FT4

v0.18.8

  • ARRL Field Day FT8 exchange mode (class + section in message, special TX sequence, ADIF logging)
  • FT8 simulation mode (practice QSOs with phantom stations, no radio keyed)
  • FT8 decode yield investigation closed (found and fixed 3 separate CPU contention issues)

v0.18.7

  • Decode-yield gap closed (controlled A/B with v0.18.0 confirmed fixes sufficient)
  • Auto-answer robot mode un-shelved (live TX, full disclaimer on-screen)
  • CQ tone auto-relocation on clash
  • SNTP/QMX time-priority fix + FT8-derived auto-sync
  • Flasher recovery mode + auto port detection

v0.18.6

  • FT8 sparse-decode investigation: found 3 separate regressions since v0.18.0
  • Fixed: cw_audio_init() ghost task, missing poll-task CDC tolerance, waterfall style-set loop
  • RST_SENT fix in CQ-run QSO
  • Distance-in-miles display toggle
  • Diag-log dot + firmware version in bottom bar

v0.18.5

  • Band-aid for FT8 decode regression (incomplete; issue fully addressed in v0.18.6)
  • Critical bootloader-corruption hotfix (flasher wrote to 0x0 instead of 0x10000)
  • FT8 double-spawn crash guard restored

v0.18.4

  • Band-nav strip (CW/Digi/Phone color zones below frequency axis)
  • One-finger pan/stroll (spectrum scroll + center-freq readout)
  • Snap-to-signal peak detection
  • Band-aware worked-before (callsign + band memory)
  • Robot mode (complete but shelved — greyed out, disabled)

v0.18.3

  • Waterfall live controls (black level, contrast, adaptive floor, FFT window selector)
  • Display 180° flip toggle
  • Image rejection investigation (reverted — not a firmware issue)

v0.18.2

  • Idle reboot resolved (WiFi SDIO RX streaming → mempool recycled buffer)
  • Web UI freeze/reconnect fix
  • BW from web (CW passband)

v0.18.1

  • Config backup/restore (settings + memory channels + ADIF log as INI file)
  • Flasher clean-flash option
  • Memory recall fix (CAT race condition → optimistic display + deferred writes)
  • Fast Panadapter↔FT8 toggle crash fix

v0.18.0

  • FT8 decode rework: streaming STFT + dual-core + reply-on-immediate-slot
  • dBm scale restored on spectrum
  • Multiple field-reported fixes (memory freq, tap-to-tune reversal, band lockout)

v0.15.x and Earlier

See Full Version History for detailed notes on all earlier releases.

Roadmap

Next up (post-v1.0.0)

  1. Web-UI audio streaming — listen to the receiver in any browser on your LAN, demodulated on the Tab5. Already working in development; held for quality tuning and an overnight streaming soak
  2. CW page — canned-message CW TX memories, then decoded-CW display
  3. Binaural CW audio — a stereo sound stage so two stations a few tens of hertz apart land in different places in your head (asked for by Roy KI0ER; shaped by Don N2VGU and Michael KZ4LY, whose point that the stage width should be a setting rather than a fixed angle is now the plan). Waits on the same audio-output rework as the CW page
  4. Live microSD mirroring while WiFi is up — continuous mirroring currently only runs with WiFi off; v1.3.2 made that explicit and reliable (one complete backup per start-up with WiFi on). This was believed to be bus contention between the card and the WiFi co-processor. v1.4.0 found that a large part of it was actually a memory shortage — the pool the card needs to mount had been squeezed to almost nothing, and now has room again — so this may already behave better than documented. Needs a retest before the behaviour is changed

Phase 6.3 (FPS Recovery)

  • Native portrait LVGL rewrite (720×1280, all widgets transposed, canvas drawing ported)
  • Avoids 90° software rotation (~50% FPS gain)
  • Large effort; not yet started

Future Additions

  • CW audio (shelved since v0.18.5 due to CPU contention; needs pipeline redesign)
  • Offline maps (grid squares, distance visualization)
  • Video tutorials & regional quick-start guides

Download & Documentation


Have a question? Check Quick Start or Troubleshooting.