Which device do you have?

📡

Vail Adapter

USB adapter that connects paddles to your computer for web-based CW

⛰️

Vail Summit

Standalone morse code trainer with built-in screen and keyboard

Which adapter do you have?

Just the model. The exact board inside gets detected automatically when you connect.

🎛️

Basic PCB

Standard PCB with paddle inputs and sidetone

Advanced PCB

Adds a radio output port and built-in capacitive touch points

🪶

Vail Lite

USB stick form factor with buzzer sidetone only

🔧

DIY No PCB

Hand-wired or breadboard build following GitHub specs, QT Py, XIAO, or Arduino Micro

Update firmware

Plug in your adapter, then click the button. Your browser will ask which device to use the first time.

Advanced options & troubleshooting

The update button above handles all of this automatically. These are here for when something goes sideways.

  • You can also enter bootloader mode by double-tapping the reset button on the adapter. A drive named QTPYBOOT, XIAOBOOT, or ADAPTERBOOT will appear.
  • The normal picker is filtered to devices that look like your adapter. "Pick port manually" shows every serial port on the system.
  • Linux permission denied: sudo usermod -a -G dialout $USER then log out and back in.
Activity log

                    
  1. Put the adapter in bootloader mode

    Click below and pick your adapter, or double-tap the reset button on the board. Either way a USB drive named QTPYBOOT, XIAOBOOT, or ADAPTERBOOT appears.

  2. Download the firmware file
    ⬇️ Download UF2 file
  3. Drag the file onto the boot drive

    Drop the downloaded .uf2 onto the QTPYBOOT / XIAOBOOT / ADAPTERBOOT drive. The drive ejects itself when the update finishes, then the adapter restarts on the new firmware.

All done? Head to the Getting Started guide to set your keyer type, speed, and tone.
Troubleshooting
  • No boot drive appears: try a different USB cable (many are charge-only), a different USB port, or slow down the double-tap.
  • The copy hangs on Windows: switch to the Install from browser method, it writes over the COM port instead.
  • Bootloader button needs Chrome, Edge, or Opera. On other browsers use the double-tap method.
  • Linux permission denied: sudo usermod -a -G dialout $USER then log out and back in.
Activity log

                    

Update your Summit

Plug in your Summit with a USB-C data cable, then connect. The flasher puts it in bootloader mode automatically and shows the install options.

Advanced options & troubleshooting

If automatic connection fails (like a "port in use" error), enter bootloader mode by hand:

  1. Hold down the BOOT button on your Summit
  2. While holding BOOT, press and release RESET
  3. Release the BOOT button
  4. The device now shows up as "USB JTAG/Serial" instead of "TinyUSB CDC"
  • "Port in use" on Windows: close Arduino IDE, PuTTY, or any serial monitor, then try again. Still stuck? Device Manager → Ports → right-click the COM port → Disable, wait 2 seconds, Enable.
  • Flashing fails or stalls: unplug for 5 seconds, replug, and use the manual BOOT + RESET steps above.
  • Some cables are charge-only. Use one you know carries data.
  • Web Serial needs Chrome, Edge, or Opera on a computer.
Flash log

                    
When flashing finishes the Summit restarts on its own. If it doesn't, unplug it, wait 2 seconds, and plug it back in. Then follow the on-screen setup wizard.