Skip to the content
2 layers28.8 × 43.8 mmAdv pcb, the printed circuit board in 3D

Adapter for cw morse keys to USB

Size
28.8 × 43.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
13
Nets
25
Pads
49
Tracks, vias
75, 2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
16 May 2020
Updated
2 Nov 2026

Overview

Adv pcb is an open-source printed circuit board by Vail-CW, from the Vail-CW/vail-adapter repository on GitHub, published under the MIT licence. It is a 2-layer board of 28.8 × 43.8 mm with 13 parts on 25 nets, routed with 75 tracks and 2 vias.

It is built around the PN2222A. Its parts include 3 ICs, 2 resistors and 1 connector. It belongs with the radio and wireless and interfaces and adapters boards of this library.

Main components

1

README

README.md

Vail Adapter: Morse Code Key / Paddle to USB

Vail Adapter wired to a straight key    Vail Adapter 3D printed cases in several colors

The Vail Adapter is a small USB gadget that turns your Morse key or paddle into a USB device. It shows up as both a keyboard and a MIDI device, so it works with Vail, VBand, and pretty much any CW software. The keyer logic and the sidetone run on the adapter itself, so there is no browser or operating system latency in your keying, even when you are running fast. It works on SAMD21 boards (the Seeed XIAO, the Adafruit QT Py, and the TRRS Trinkey), and there is an experimental build for the AVR Arduino Micro.

Here is a short video that shows what it can do: Vail Adapter benefits (4:46).

What it does

  • With Vail you can keep keying even when the Vail window is not focused, because Vail uses MIDI and MIDI does not care which window has focus
  • Keyboard based apps like VBand work too, but their window has to stay focused, since keyboard presses only reach the window that is focused
  • Runs all nine Vail keyer modes on the adapter, so you can key as fast as you want with no latency
  • Has an optional sidetone generator, which helps with latency and lets you turn off your computer speaker
  • Plays the received signal on the adapter so you can keep the computer quiet
  • Stores CW memories: three slots, about 25 seconds each on SAMD21, and about 12 seconds each on the Arduino Micro
  • Can key a radio directly through the optional radio output on the Advanced PCB
  • Can be set up over MIDI for speed, tone, keyer type, paddle swap, and mode (see MIDI integration)
  • Can swap dit and dah over MIDI, for everything or just the touch pads
  • Has a passthrough mode, so an app can get the raw dit and dah paddles over MIDI and do its own keying
  • Has a Keyboard Sim mode that decodes your Morse and types it like a keyboard. Key KSKS as its own word to turn it on, and unplug to turn it off
  • Gets free firmware updates for life

Where to get one

If you would rather not build your own, I sell them at shop.ke9bos.com. You can get a bare PCB, a full kit with everything you need, or a finished unit that is ready to plug in.

If you want to special order parts, place a bulk order, or you have a question about anything Vail related, email me at ke9bos@pigletradio.org and I will take care of you.

Updating the firmware

You can flash the latest firmware right from your browser (Chrome, Edge, or Opera) at update.vailadapter.com. Choose your board, pick a version, and follow the steps on the page. Every firmware version is posted on the releases page.

First time setup

Once you have flashed an adapter, the first thing to do is run the getting started tool at vailadapter.com/gettingstarted. It walks you through getting set up and making sure everything is working.

The full manual is on the website at vailadapter.com/manual. It covers the buttons, the keyer modes, the memories, and the rest of the day to day use.

Building your own

Step by step assembly guides for both boards are on the website at vailadapter.com/assembly, and the PDFs are kept in this repo too: Basic PCB v2 and Advanced. If you would rather not source parts and solder, you can get a kit or a finished unit from shop.ke9bos.com.

The board designs (KiCad and gerbers) and the printable cases are in hardware/, organized by variant.

Basic PCB (v2)

You can order the bare PCB from JLCPCB or PCBWAY yourself, or get a bare board, a kit, or an assembled unit from shop.ke9bos.com.

Advanced PCB

The Advanced PCB does everything the Basic does and adds a radio output, so you can key a rig directly, along with capacitive touch points. It uses more parts than the Basic build:

  • Seeed Studio XIAO SAMD21 or an Adafruit QT Py SAMD21
  • A buzzer speaker
  • The Advanced Vail Adapter PCB
  • 1 switching aux jack and 2 standard aux jacks
  • 2 transistors and 2 resistors, which drive the radio output
  • 2 screw terminal PCB mounts
  • 2 headers for the Arduino

The radio output parts are easy to get wrong when you buy them one at a time, so most people get the Advanced build as a kit or assembled from shop.ke9bos.com. The full build steps are in the Advanced assembly guide.

Without a PCB

Vail Lite, the USB stick version

  • An Adafruit TRRS Trinkey M0, which is a USB stick sized board with a TRRS jack built in
  • A piezo buzzer, connected through the STEMMA QT connector
  • It has no buttons, no capacitive touch, no headphone jack, and no radio output, so you change settings over MIDI
  • Full instructions are in TRRS_TRINKEY_BUILD.md

Arduino Micro (experimental)

This is a 5V AVR alternative to the SAMD21 boards. It is for DIY and breadboard builds only, and there is no PCB made for it.

  • Wiring: D2 is Dit, D1 is Dah, D0 is the Straight Key, D10 is the Piezo, and GND is ground. There is a full walkthrough in docs/advanced-install.md.
  • A few things it cannot do compared to the SAMD21 boards: no capacitive touch, no button menu, and no status LEDs. The CW memories are shorter at about 12 seconds each, and the radio output on A2 and A3 runs at 5V, so check that your radio can handle it or use a level shifter.
  • Flashing is different too. It uses WebSerial with the AVR109 (Caterina) bootloader instead of UF2 drag and drop. Flash it at update.vailadapter.com by choosing DIY No PCB and then Arduino Micro in Chrome, Edge, or Opera, or run arduino-cli upload --fqbn arduino:avr:micro.

Setting it up

The full manual is at vailadapter.com/manual.

MIDI integration

The adapter is a standard USB MIDI device. Software can set the mode, the speed, the sidetone, and the keyer type, and it can read the keyed output as MIDI notes. The whole protocol, including the message types, the value ranges, and exactly how the firmware responds, is written up in MIDI_INTEGRATION_SPEC.md. If you are building something that talks to the adapter, follow that document closely, because I keep the existing MIDI commands the same on purpose. There is more about that just below.

Contributing

I am glad to have help with this project. If you have a question, want parts, or want to talk through an idea, email me at ke9bos@pigletradio.org. If the adapter has been useful to you and you want to support more work on it, you can buy me a coffee.

Guidelines

The Vail Adapter has one job and it does it well. It is a simple, reliable, low latency bridge from a Morse key or paddle to USB. A lot of people, and a lot of outside tools, already count on the way it works today, so I review changes with that in mind. Here is what I ask:

  1. Do not change the existing MIDI commands. The MIDI commands that are already there, for mode, speed, tone, keyer selection, and the dit, dah, and straight key notes the adapter sends, are something other tools and the Vail and VBand sites depend on. The commands, the value ranges, and the note numbers need to stay exactly as they are. I am happy to look at new MIDI commands, as long as they use messages that are not already being used and they do not change or interfere with anything that already works. If you add one, update the MIDI spec to match.

  2. Keep it backward compatible. Do not break the things people already rely on, like the keyboard output (Dit is Left Control and Dah is Right Control), starting up in keyboard mode, saved settings, or the USB keyboard and MIDI interfaces. If you change how settings are stored, make sure the settings people already have still load.

  3. Keep it fast. The reason this thing exists is lag free keying. Do not add anything that slows down the path from the paddle to the output. If a feature needs heavy work, do that work somewhere other than the keying loop.

  4. Keep it focused. This is a key and paddle adapter. It does keying, keyer modes, sidetone, CW memories, and the optional radio output. Bigger ideas like a display, WiFi, logging, or training games belong on the Vail Summit, not here.

  5. Add new hardware without disturbing the old. If you add support for a new board, put it behind a setting in config.h so the boards that already work keep behaving exactly the same. The Arduino Micro support is a good example of this.

  6. Make sure every board still builds. A change should not fix one board by breaking another. Check that all of the configurations still compile before you send it.

  7. Watch the limits of the chips. There is not a lot of room to spare, especially on the Arduino Micro. New features have to fit without using up the headroom on the boards that already work.

  8. Do not change the defaults without a good reason. The default keyer, speed, tone, and startup mode are what people expect when they turn it on. Changing them catches people off guard.

  9. Add to it rather than change it. When you can, add a new mode, command, or setting instead of changing how an existing one behaves.

  10. Talk to me before any big change. For a large rewrite or a whole new feature, open an issue or send me an email first so we can make sure it fits where the project is going.

License and credits

Parts

13
QtyValueFootprintReferences
27837Button_Switch_THT:KEYSTONE_7837Dah1, Dit1
2PN2222APackage_TO_SOT_THT:TO-92_InlineDAH2, DIT2
2RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2
2TestPointTestPoint:TestPoint_Pad_D4.0mmTP1, TP2
1ADAFRUIT_QT_PYModule:MODULE_ADAFRUIT_QT_PYU1
1BuzzerBuzzer_Beeper:Buzzer_TDK_PS1240P02BT_D12.2mm_H6.5mmBZ1
1Key InputAudio_Module:TRRS-PJ-320AU3
1Output to RadioAudio_Module:TRRS-PJ-320AU2
1headphoneAudio_Module:WENZHOU_PJ324MJ1

More from Vail-CW/vail-adapter

2
  • 2 layers20 × 32 mmButton backpack, the printed circuit board in 3D

    Button backpack

    Vail-CW/vail-adapter

    Adapter for cw morse keys to USB

    13 parts81MIT
  • 2 layers20.8 × 37.5 mmVail V1 PCB, the printed circuit board in 3D

    Vail V1 PCB

    Vail-CW/vail-adapter

    Adapter for cw morse keys to USB

    4 parts81MIT

Similar boards

  • 2 layers152.4 × 101.6 mm8088-FE2010A SBC, the printed circuit board in 3D

    8088-FE2010A SBC

    skiselev/micro_8088

    Micro 8088 - IBM XT Compatible Processor Board based on Faraday FE2010 chipset

    72 parts412GPL-3.0
  • 2 layers33.7 × 66 mmSmartbell, the printed circuit board in 3D

    Smartbell

    Staacks/there.oughta.be

    Projects featured on my blog at https://there.oughta.be

    27 parts108GPL-3.0
  • 4 layers100 × 100 mm2063-Z80, the printed circuit board in 3D

    2063-Z80

    Z80-Retro/2063-Z80

    Retro Z80 CPU Board

    86 parts96
  • 2 layers30.7 × 76.1 mmRepeater v2, the printed circuit board in 3D

    Repeater v2

    plusvic/simplebus2-intercom

    General description of the Simplebus2 protocol used by some Comelit's intercoms. Hardware for retransmitting Simplebus2 messages over UART.

    17 parts95CC0-1.0
  • 2 layers23.2 × 52.1 mmOpenC64Saver, the printed circuit board in 3D

    OpenC64Saver

    SukkoPera/OpenC64Saver

    Protect your Commodore 64 from killer power supplies!

    17 parts79
  • 4 layers184.2 × 169.5 mmSB mini II, the printed circuit board in 3D

    SB mini II

    simonboak/SB-mini-II

    A homebrewed Apple II clone

    97 parts76MIT
  • 2 layers49.5 × 30 mmAirpcb smd old, the printed circuit board in 3D

    Airpcb smd old

    issalig/toshiba_air_cond

    AB protocol decoder for toshiba air conditioners

    30 parts65
  • 2 layers305 × 75 mmGd pcb, the printed circuit board in 3D

    Gd pcb

    sh4d0wm45k/glass-detect

    A detector for Meta Ray-Ban glasses

    44 parts52

Questions

How big is the Adv pcb PCB?

It measures 28.8 × 43.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Adv pcb use?

13 parts, built around the PN2222A. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Adv pcb KiCad files?

From the Vail-CW/vail-adapter repository on GitHub, at the commit this page was made from: the board is hardware/advanced-adapter/pcb/adv_pcb.kicad_pcb and its schematic hardware/advanced-adapter/pcb/adv_pcb.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Adv pcb design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).