Skip to content

cwdaemon

Network service that keys a transmitter's Morse from a serial or parallel port

What it does

Runs as a daemon listening on a UDP port and turns the text it is sent into keying on a serial or parallel port line, or into sidetone on the sound card. Speed, weighting, tone and PTT behaviour are changed by escape sequences in the same stream, so a client can alter sending mid-message.

Why you would want it

It is the standard way a Linux logging or contest program sends Morse: tlf, and several others, speak to it rather than owning the keying themselves. Putting the timing in one small daemon is also what keeps it steady while the logging program is busy redrawing a screen.

Before it will work

A keying interface on a real serial or parallel port and a transmitter to key. Access to the port means membership of the dialout group for serial, or lp for parallel — this manifest does not add either, because which one you need depends on hardware this catalog cannot see.

How it installs

  • apt: cwdaemon
  • Not on Kali. Debian removed cwdaemon from testing on 2025-11-03 over RC bug #1039160 -- the package ships a sysv-init script and no systemd unit -- and Kali inherits testing. Debian 13 stable keeps 0.10.2-3, as do Parrot, Ubuntu and Mint. Checked against the Debian tracker and Kali's archive on 2026-09-04; this is a packaging bug, not a dead upstream, and tlf's keying still expects it.

Known problems

USB-to-serial adapters vary widely in how quickly they toggle a control line, and a slow one produces keying that sounds fine at 15 wpm and falls apart at 30. This is the single most common cause of "cwdaemon sends badly" and it is a property of the adapter, not of the software. A real UART, or a dedicated keyer, is the fix. Parallel-port keying needs the ppdev module and is increasingly hard to find hardware for.

Keeping it current

  • probe: apt policy
  • strategy: apt_upgrade

Where to get help with the software itself

SourceForge project page and mailing list.

Source: catalog/packages/cwdaemon.yaml