Repository navigation
Releases: Guru-RF/SmartCW
Release list
SmartCW 2.3.2
SmartCW 2.3.2 fixes the USB network on Windows 11 after the September 2026 update, and gives the trainer the same speed as the keyer. Your settings in config.txt are kept when you update.
Windows 11 (September 2026 update, KB5124008)
After this Windows update, SmartCW with firmware 2.3.1 or older does not work on some Windows 11 PCs:
- Windows refuses SmartCW's USB network adapter (Code 10 in Device Manager);
- SmartCW then restarts about every 12 s, and Windows plays the "device connected" sound each time.
Microsoft enables the check PC by PC, so one Windows PC can show it while another doesn't yet. With 2.3.2, Windows accepts the adapter again. Even when a computer's network driver fails, SmartCW keeps running with the serial port and MIDI instead of restarting.
Updating a SmartCW that has this problem: do the update from a Mac or a Linux computer (a Raspberry Pi works too). The Windows PC that shows the problem cannot keep SmartCW running long enough.
Trainer speed
The trainer now uses the keyer's speed.
- Changing the speed on a trainer page changes it on the Live page, in Settings and for the paddles, and the other way round.
- The trainer's effective (Farnsworth) speed and tone stay its own.
- The Callsigns drill still speeds up and slows down within the exercise, starting from your speed.
SmartCW 2.3.1
SmartCW 2.3.1 has ten memories instead of six. Your settings in config.txt are kept when you update.
What's new
- Ten memories. M7 to M10 come with contest defaults:
5NN {nr},{lastnr} {lastnr},AGN?andQRZ?.- Your own M1 to M6 are kept, and the four new ones are written into
config.txtonce. !memandPOST /api/memtake 1 to 10.
- Your own M1 to M6 are kept, and the four new ones are written into
- Live page: the memory buttons are now two per row on every screen width.
SmartCW 2.3.0
SmartCW 2.3.0 gives every SmartCW its own RF.Guru serial number and adds commands for the test bench. Your settings in config.txt are kept when you update.
What's new
- RF.Guru serial number. Each SmartCW gets a serial number such as
SCW-00042, written once with!id set.- It is kept outside the firmware and
config.txt, so firmware updates and factory settings keep it. Onlyflash_nuke.uf2erases it. - Once set, it is also the USB serial number, from the next restart on.
!id,!status,!stateand/api/statereport it together with the chip ID. The System page in the web interface shows both.
- It is kept outside the firmware and
!inputsshows the paddle and PTT contacts as wired:!inputs dit 0 dah 0 ptt 0, 1 = closed.!selftestlights each LED in turn and beeps, then reports!selftest doneafter about 2 s.!bootloadernow writes a pending settings change toconfig.txtbefore it reboots, so a change made just before an update is kept.
INTEROP.md lists the exact replies.
SmartCW 2.2.0
SmartCW 2.2.0 adds what keyers with a computer side usually have: contest logger support, internet CW, contest serial numbers and speed control on the box. Your settings in config.txt are kept when you update.
What's new
- Contest loggers, WinKeyer. The USB serial port answers the K1EL WinKeyer 2 protocol. In a logger with WinKeyer support (N1MM+, DXLog, Win-Test, fldigi, CQRLOG, Log4OM and others), choose SmartCW's serial port as the WinKeyer.
- While the logger is open, its speed, weight, tone, key mode, PTT timing and keying compensation apply. SmartCW's own settings come back when it closes.
- Paddle break-in works as on a WinKeyer.
- The web page shows a banner while a logger has SmartCW open.
- Contest loggers, cwdaemon. UDP port 6789 on the USB network, for Linux loggers (CQRLOG, TLF, xlog, KLog).
- Contest serial numbers.
{nr}in a memory sends the number and moves on to the next;{lastnr}repeats the last one.- Cut numbers are optional: 0 as T, 9 as N.
- Set the number on the Live page, in Settings or with
!nr.
- Internet CW. Settings → Computer → Keyboard sends: Paddle keys turns the paddles into the Left and Right Ctrl keys that vBand and Vail listen for. For Vail over MIDI, there is a one-click Vail notes preset.
- Keying compensation and first-element extension, for QSK radios.
- Speed on the box. Hold PTT and tap the dit paddle (1 wpm slower) or the dah paddle (1 wpm faster). The new speed is played on the sidetone when you let go.
- Speed range is now 5–99 wpm.
- Trainer: new exercise, Your own text. Paste calls, words, exchanges or a whole text, then copy it or key it.
README.md and INTEROP.md have the details.
Firmware updates
With WinKeyer on (the default), the Arduino "1200 baud touch" no longer reboots SmartCW into the bootloader, because WinKeyer loggers use 1200 baud. Update from the web page (System → Restart into update mode), with !bootloader, or with BOOTSEL.
Files
smartcw-v2.2.0.uf2: the firmware.flash_nuke.uf2: erases the whole flash, includingconfig.txt. Flash the firmware afterwards.
Known limits
None of the new protocols has been tried with a real logger, vBand or Vail yet. The WinKeyer and cwdaemon handling passes host-side tests. Paddles, the straight key and the echo trainer have still not been tested on hardware, and neither have macOS and Windows.
SmartCW 2.1.0
SmartCW 2.1.0 is a complete rewrite: C++ firmware for the RP2040 and a web interface over the same USB-C cable. Your settings in config.txt are kept when you update.
What's new
- C++ firmware. It replaces the CircuitPython version. Timing runs on a 1 kHz interrupt, so it is exact at any speed.
- Web interface at http://smartcw.local/ (or http://192.168.7.1/) over USB Ethernet. No driver, app or internet connection is needed on Linux, macOS or Windows 10/11.
- Live: the visual Morse tree, decoded text with its Morse, an on-screen key (tap = dot, hold = dash), text sending, memories, beacon, tune, PTT and a monitor.
- Trainer:
- listen and repeat (Koch method)
- copy characters
- your own callsign, other callsigns, words and abbreviations
- Q-codes and prosigns
- QSO practice (answer a CQ, call CQ, contest, park hunter)
- head copy, a fist analyzer and progress per character
- its own speed (character and effective wpm) and pitch
- Settings: every setting, applied at once and saved a moment later, with Reset to defaults.
- System: status, a command console, backup and restore, and firmware update.
- Key types: iambic A, iambic B, ultimatic, bug and straight. A long press on PTT toggles straight key, which has its own MIDI note.
- Transmit output:
- key line: keys your radio
- audio + PTT: for FM, SSB or a data input, with PTT lead and tail
- practice: nothing transmitted
- USB MIDI, serial, keyboard and Ethernet all at once on one USB-C cable.
- TCP port with the same text and command protocol as the serial port. See INTEROP.md.
- mDNS and DNS-SD:
smartcw.localresolves at once over IPv4 and IPv6. SmartCW shows up as a web site and a telnet service in service browsers. - The old Python GUI is gone; the web interface replaces it.
Files
smartcw-v2.1.0.uf2: the firmware.flash_nuke.uf2: erases the whole flash, includingconfig.txt. Flash the firmware afterwards.
Updating
Choose System → Restart into update mode on the web page, or send !bootloader over serial or TCP. Then drag smartcw-v2.1.0.uf2 onto the RPI-RP2 drive. The README has the BOOTSEL recovery steps.
Known limits
Real paddles, the straight key and the echo trainer have not yet been tested on hardware. Keyer modes A, ultimatic, bug and autospace are untested too. macOS and Windows have not been tried with this release.