Fldigi Users Manual  4.1.17
nanoIO Interface


nanoIO is an Arduino sketch (program) designed to work within the constraints of an "Arduino nano" circuit board. It converts serial ASCII characters to either CW or FSK keyline output. It also performs the functions of a simple Straight key, Iambic-A, or Iambic-B interface. The keyer does not provide any memory or parameter controls via button or paddle input. It is primarily a computer to keyline interface and all control parameters are executed via a simple serial command set.

nanoIO sketch is expanded version of these two GPL programs

  • tinyFSK by Andy Flowers, K0SM
  • Iambic Keyer, by Steven T. Elliott

FSK Specifications:

  • 5 bit Baudot
  • baud rates 45.45, 50, 75 and 100

CW Specifications:

  • 5 to 100 WPM
  • dash/dot ratio adjustable 2.5 to 3.5
  • in-line increment decrement WPM using ^ and | characters
  • incremental size user adjustable
  • left/right paddle inputs

PTT signal generated by Arduino

Both: an internal buffer of 300 characters is available for buffered transmit.

Hardware requirements:

  • nanoIO is compatible with kit interface MORTTY, by N8AR and K8UT. MORTTY is a Do-It-Yourself construction project that provides a miniature enclosure and a computing platform that can run either

    • nanoIO
    • K0SM’s TinyFSK RTTY Keyer or
    • K3NG’s CW Keyer sketch software.

    MORTTY is an inexpensive minimalist solution that depends upon the configuration and control features incorporated in the computer program. It has only two inputs, a USB serial port interface to the computer, and a CW paddle.

    Version 3 of MORTTY has two outputs, a PTT signal line, and a shared CW/FSK signalling line. The CW/FSK signal needs to be manually switched between the transceivers CW and FSK input ports. Version 3 also includes a speed potentiometer. The fldigi interface can set and read the speed range of the potentiometer.

  • homebrew nanoIO circuit: Circuit Diagram

    • Arduino nano or compatible circuit board
    • LTV-847 quad opto-isolator
    • 4 - 620 ohm ¼ watt resistors
    • suitable connectors to interface to transceiver and paddles

The power on default configuration is:

  • Mode: FSK
  • FSK: Baud: 45.45, Mark LOW
  • CW: WPM: 18/18, dash/dot 3.00, incr 2, IambicA keyer

Control and configuration commands to nanoIO are issued by the computer program via the built-in Arduino nano USB port.

USB serial command strings all begin with the tilde, ~, character

Cmd ~...
C,c CW mode
F,f FSK mode
T,t CW Tune
Snnns computer wpm 10...100
Unnnu key (user) wpm 10...100
Dnnnd dash/dot 250...350 (2.5...3.5)
In CW incr (1..9)
A,a IambicA
B,b IambicB
K,k Straight key
0 FSK mark = HIGH
1 FSK mark = LOW
4 45.45 baud
5 50 baud
7 75 baud
9 100 baud
? Show config
~ Show cmds

In line special characters are used to control both CW and FSK signalling:


  • [ PTT on
  • ] PTT off
  • \ escape; clear internal buffer and set PTT off


  • ^ increase computer wpm by increment value (default is 2) *
  • | decrease computer wpm by increment value *
  • % SK
  • & AS
  • + KN
  • - BT
  • < AS
  • = BT
  • > AR
  • { left brace HM
  • } right brace VE
  • the ^| wpm modifiers do not effect the paddle CW, just the computer CW.
    for example, a CW string might contain:
~C~S24s[tu ^^5nn|| k]
  1. Mode is changed to CW
  2. Computer WPM is set to 24
  3. PTT is set ON
  4. the string “tu “ is sent
  5. Computer WPM is increased by 2 increment factors
  6. the string “5nn” is sent
  7. Computer WPM is decreased by 2 increment factors
  8. the string “ k” is sent
  9. PTT is set OFF

PTT would enable before starting the CW transmission. PTT would disable after the last CW character (k) was completed.

nano CW configure

Configure fldigi and the nanoIO interface for CW operation using the configuration tab Modems / CW / nanoCW


Select the USB serial port to which the Arduino is attached and press the "Connect" button.

The WPM rate is separately controlled for the computer and paddle characters. Dash/Dot ratio is adjustable from 2.5 to 3.5. This control effects both the computer and paddle generated CW. Set the two WPM settings, the paddle type to Straight, Iambic-A, or Iambic B. Set the incremental WPM adjuster (see ^ and | characters above).

CW is generated from USB serial input strings and/or the paddle inputs. Paddle input overrides the serial string, but does not clear athe serial buffer.

The text control will show the current state after a successful connect:


FSK configure

Configure fldigi and the nanoIO interface for FSK operation using the configuration tab Modems / TTY / nanoFSK.


Set the state (high/low) of the FSK keyline for the transceiver to generate the MARK signal.
Select the baud rate (45.45 is the one most used).
Press the connect button and in a few seconds the USB Serial I/O text display should show


Return to Top of Page
Return to Main Page