⭐ WELCOME 2 MY WEBSITE ⭐ A $20 radio that teaches you CW ⭐ di-dah-di-dit ⭐ no soldering required ⭐ flashes from your web browser ⭐ 73! ⭐

Welcome, fellow radio nerd! 👋 This here is a school project all about turning a dirt-cheap Quansheng UV-K1 (a.k.a. UV-K5 V3) handheld radio into a dedicated Morse code trainer. You flash some custom firmware, the radio forgets it was ever a radio, and boots straight into a little CW classroom. Costs about $20!!

📱 What the heck is a Quansheng K1?

The Quansheng UV-K1 (sold in some places as the UV-K5 V3) is a tiny, wildly popular dual-band ham radio handheld. It became famous because it is cheap and its firmware can be completely rewritten by hobbyists. People have crammed spectrum analyzers, FM radios, and little games onto it.

This project takes that hackability and points it at one job: teaching you Morse code. The radio part (transmitting, receiving, antennas) is switched completely off. No license needed to practice — it just beeps at you and quizzes you, like a pocket flash-card machine that speaks in dits and dahs.

📝 The boring-but-important specs

RadioQuansheng UV-K1 / UV-K5 V3
Brain (MCU)PY32F071 (newer chip than the original UV-K5 V1)
Screen128 × 64 monochrome LCD (ST7565)
InputThe radio's own rubber keypad (numbers do the answers!)
PriceRoughly $15–$30 depending where you look
SoundBuilt-in speaker sidetone — adjustable tone & WPM
LicenseOpen source (Apache-2.0), built on the F4HWN & NR7Y firmware

🤓 Why learn CW on a $20 radio?

Morse code (CW) is still one of the most fun and efficient ways to make contacts on the ham bands. The trouble is, dedicated code-practice gadgets and fancy apps can get pricey, and computer trainers chain you to a desk. The whole pitch of this project:

  • It's the cheapest "accessory" in ham radio. A spare K1 costs less than a night out, and doubles as a learning tool you keep in your pocket.
  • No computer, no internet, no desk. Practice on the couch, on the bus, in line at the store. It's a self-contained little classroom.
  • No license required to start. Nothing transmits. It only makes beeps and asks you what you heard.
  • It's adaptive. The trainer watches which characters trip you up and drills those harder — just like a good teacher.
  • It's already in your shack. Tons of hams already own a K-series Quansheng. Flash a second one and you've got a trainer for free-ish.
💡 The big idea: instead of buying a one-trick code-practice oscillator, spend the same money on a whole radio that teaches you the code and can be flashed back to a normal radio whenever you want.

🎓 The Trainer Modes (the fun part)

Every mode works the same friendly way: the radio plays a bit of Morse, shows you up to four answers, and you press the matching number key (1–4). It grades you instantly, keeps score, and quietly tracks your weak spots. There are four modes:

1. 📈 Koch — the classic ladder

Starts you with just a couple of characters at full speed, and automatically adds a new character once you're getting groups clean. It climbs from single letters → pairs → triples → whole words. This is the proven "Koch method" that real CW teachers swear by.

2. 🧐 Confuse — drills your mix-ups

Keeps a little "confusion matrix" of the characters you personally get mixed up (like U vs V or 5 vs H) and feeds you those look-alike pairs until you can tell them apart cold.

3. 💬 Phrase — real ham shorthand

Plays common words, abbreviations, and prosigns you'll actually hear on the air (73, CQ, QTH, BK…) so the code starts sounding like language instead of random letters.

4. ⚡ Rapid — on-air realism

Fires off callsigns, words, numbers, and US state abbreviations, multiple-choice style, to build the quick recognition you need for contesting and rag-chewing.

⌨️ The keypad cheat-sheet

1–4 pick answer A select / WPM + # WPM − B / C navigate D back * replay sound 0–9 digits

📷 Screenshots from the lil' screen

Here's what the trainer actually looks like on that 128×64 LCD. (Drawn to scale, pixel-faithful — the real backlight is this greeny color.)

(These are faithful mockups of the trainer's actual on-screen layout — swap in real device photos here once you've got the K1 in hand!)


🔌 How to flash it (right from your browser!)

The amazing part: you don't need to install anything. The K-series flashes over a web tool called UVTools2 using WebSerial, straight in Chrome, Chromium, or Edge. Here's the drill:

⚠️ READ THIS FIRST: messing with firmware can brick your radio. This firmware (and this site) has no warranty whatsoever — do it at your own risk. Only flash V3/K1 firmware to a K1 / UV-K5 V3. Never flash V1/V2 firmware to it.

💾 Step 0: Back up your calibration FIRST

Before anything, use UVTools2's Dump Calib mode to save a calibration.dat file. If anything goes sideways, this is your lifeline. Tip: rename the file with the radio's serial number so you don't mix units up.

🔥 Step-by-step flash

  1. Plug the radio into your computer with a Quansheng USB programming cable (the USB-C one, or the Baofeng/Kenwood double-jack cable).
  2. Put the radio into DFU / flash mode: hold the PTT button while turning it on. (On the trainer build, the bootloader still works this way, so you can always re-flash.)
  3. Open UVTools2 in Flash mode in Chrome / Edge.
  4. Choose the trainer firmware .bin file on your computer.
  5. Click Flash Firmware, then pick the serial port for your radio when asked.
  6. Watch the progress bar. When it's done, the radio restarts — straight into the CW trainer. 🎉
💡 Want a real paddle? The trainer works fine with the keypad alone, but there's an optional solder mod (the NR7Y "paddle rework") that wires a 3.5 mm jack to the tip/sleeve pins so you can send with a real iambic paddle. The PDF lives in the project's docs/ folder. Totally optional — skip it if you just want to copy code.

🏗️ Building it yourself (for the brave)

If you'd rather compile from source, the repo ships a Docker helper and a CMake Trainer preset that strips out all the RF features and leaves a lean, mean morse machine. See the project's CLAUDE.md and README.md for the full toolchain steps.


🛒 Where to buy a K1

You'll want a Quansheng UV-K1 or UV-K5 V3 (make sure it's the newer PY32-based version). Grab one here:

⚠️ Buy the RIGHT version! This firmware is only for the UV-K1 / UV-K5 V3 (PY32F071 chip). The older UV-K5 / K5(8) / K6 V1/V2 use a different chip and will not work with this build. When in doubt, ask the seller.

🎓 Graduated? Come join BKG!

Here's the deal: this trainer isn't the destination — it's school. Once you can actually copy code, the real fun is getting on the air with other CW ops. That's what BKG is for. Learn the code here first, then come hang out with the crew and put those dits and dahs to work. 📡

🎓 Class dismissed! Don't join to learn CW — learn CW here, then join to use it. See you on the bands. 72/73!