Sentinel Core
A ham radio side project · free & open source

Every CW signal in the passband, decoded at once.

Sherlock Morse is a Morse code skimmer. It finds every keyed signal in your receiver's audio passband, decodes them all at the same time, pulls out the callsigns, and retunes your radio over CAT with a click.

Download for Linux Source on GitHub
What it does

A pileup in, a clean list of callsigns out.

Whole passband at once

A spectrum detector finds keyed carriers (ignoring steady carriers and birdies) and starts an independent decoder on each one.

Probabilistic decoder

Log-normal timing models, a beam search over competing readings and a trigram language model of ham traffic. Handles bad fists, QSB and static crashes.

Waterfall & click to tune

Callsign labels on every signal. Click to follow it, double-click to tune the radio, mouse wheel for ±50 Hz.

Spots with countries

Every callsign heard, with frequency, speed, SNR and DXCC country from the built-in cty.dat. Flags POTA, SKCC and CWT activity.

Station info

Click any call for name, location, grid, distance, beam heading and photo, via HamDB, QRZ.com or HamQTH.

Auto-detects your radio

Finds the radio's USB sound card and CAT port on its own. Decoders follow the signals when you QSY.

Watch

Decoding real signals on 40 m and 20 m.

Sherlock Morse: a free CW skimmer for Linux, decoding real 40 m and 20 m signals
Radios

CAT control for most modern rigs.

So far it has only been tested on a Yaesu FTDX3000. The other radios below are supported by protocol but haven't been tried on real hardware yet. If you run it on one, please tell me how it goes, or open an issue.
Yaesu CATFTDX3000 (tested), FTDX5000, FTDX1200, FT-950, FT-2000, FT-991/A, FT-891, FT-710, FTDX10, FTDX101
Kenwood / ElecraftTS-480, TS-590S/SG, TS-890, TS-990, TS-2000, K3, K4, KX2, KX3
Icom CI-VIC-7300, IC-7610, IC-705, IC-9700, IC-7100, IC-7410, IC-7600, IC-7760 …
Yaesu legacyFT-817/818, FT-857, FT-897
Hamlib rigctldAnything Hamlib supports: hundreds of radios
What's new in v0.4.0 – v0.5.2 · October 22, 2026

Optional CW transmit, help for every setting, and more stations kept on screen.

Transmit (optional, v0.4)

  • Hidden unless you tick Settings → Transmit → Show the transmit panel; with it off, no keying port is ever opened.
  • Type a message and press Enter, or tick Send as I type. Esc or ■ Stop stops at once, and what you send is logged as TX: lines.
  • Keys the radio through DTR or RTS of a serial port, with an optional PTT line for radios without break-in. Speed, weight, Farnsworth gaps and key compensation are adjustable.
  • Up to 12 keyer memories on buttons and F1–F12, using {MYCALL} and {CALL}, with auto-repeat for calling CQ.

Help

  • ? Help in the top bar opens a searchable guide to every part of the program.
  • A small circled ? next to every setting explains what it does, which way to move it and what the default is.
  • Restore default settings resets the settings but keeps your call, logins, radio, audio, keying port and memories.

Stations stay on screen

  • QSO partners keep their row while the other station sends, instead of being blocked for a minute.
  • Stations that fade come back after 10 s, and stations next to a busy QSO are kept.
  • A weak station sending while a strong one keys nearby is no longer dropped.
  • Skirt copies, AGC junk and birdies next to strong stations are dropped.
  • A selected signal stops spelling noise into its row once the station stops sending, and the first word of the next over is still shown.

More kinds of fists

  • Bugs, including heavy bugs, are read right from the start of an over, so "1" no longer comes out as "ATTT".
  • Farnsworth and slow senders' spacing is learned much sooner.
  • Fewer stray E's on weak signals, and month and day names are in the text prediction.
  • A text prediction setting saved before 0.2.0 is moved to the current default once on startup.

Full release notes & checksums on GitHub

Download

Get it for Linux.

Latest release on GitHub

Download for Linux Source on GitHub x86-64, single native binary, no runtime needed · tested on a Yaesu FTDX3000
tar xzf sherlock-morse-v0.5.2-linux-x86_64.tar.gz
cd sherlock-morse-v0.5.2-linux-x86_64
sudo usermod -aG dialout $USER   # serial port access for CAT, then log out and back in
./cwskimmer

Or build it from source:

sudo apt install build-essential pkg-config libasound2-dev libudev-dev libxkbcommon-dev libwayland-dev libgl1-mesa-dev
git clone https://github.com/NR5P/SherlockMorse.git && cd SherlockMorse
cargo build --release
./target/release/cwskimmer

README & radio setup · Release notes & checksums · Source
Free software under the GNU GPL v3 or later.

Support on PayPal Sherlock Morse is free and made in my spare time. If it's useful to you, a tip helps keep it going.