Baycom modem USB KISS interface

Which die-hard packet radio enthousiast doesn’t has one or more Baycom type modems laying around somewhere? Yes… Me too…

Unfortunately they aren’t very useful on Windows since the Windows XP era. Forcing you to use an old DOS/Windows or Linux on a PC with a real UART COM-port. USB to RS232 UART converters aren’t very useful either with Baycom modems. Although a retro setup also has it charms I still was looking for a method to fiddle around a bit with a Baycom modem on more modern OS-es and hardware.

I didn’t found anything existing which fulfilled my small list of requirements. Actually at first the only requirement was a good working interface with modern OS and hardware compatibility.

Pretty quickly I decided to build an interface myself. Just a simple one which interfaces Baycom type packet radio modems to a modern PC or laptop. It would be nice to use an USB connection which presents a serial port to the OS. For ease of implementation and high compatibility I’ve also choosen to use the well known and supported KISS protocol which makes the interface acts like a TNC in KISS mode.

And there it was born… Just used an ATmega8 microcontroller and USB<->RS-232 board I had laying around on a breadboard to develop some software and test things out. Worked like a charm exactly as intended!

After development and tests with the ‘ATmega8 on a breadboard’ setup, I decided to use a slightly different approach. Using an ATmega8 microcontroller would require producing a PCB, and for people which want to make one themselves also some skills + equipment for assembly and programming the firmware in the uC . Because there also was some interest from the packet radio community over here, I therefore decided to make use of a Pro Micro board (Arduino klone) with ATmega32U4 onboard. Baycom meets Atmel… 😉

The Pro Micro board should make things a lot easier, cheaper, and only requires connecting a couple of wires and removing or disconnecting 3 components. Upload the firmware by making use of its bootloader and you’re all set. With its minimal size it even might be possible to fit in the same enclosure.

The ATmega32U4 has a comprehensive USB device onboard already. Which can be configured and used nicely as a virtual serial device. It will present itself as a serial port (COMx) to the OS just like a real UART serial port does.

Pro Micro to Baycom modem connections

Baycom USB KISS interface characteristics:
– Standard KISS protocol communication.
– USB powered modem.
– Utilizes a standard USB CDC serial port.
– No manual driver install needed on modern OS.
– Auto-baudrate selection, supposed to work with any serial interface speed.
– Digital PLL based open squelch DCD built-in, no need for XR2211 or software DCD.
– Optional LEDs for PTT and DCD signalling.
– Firmware (re)programmable through USB bootloader.

For this project a Pro Micro board (Arduino or clone) with ATmega32U4 is needed. Make sure you use the 5V 16MHz version.

Programming the firmware’s .hex file in the Pro Micro board can be done by using the Freematics Arduino Builder tool. You also need to install the Arduino IDE which contains drivers to recognize the standard Arduino bootloader in the Pro Micro board for programming. When programming you need to select an Arduino Leonardo @ 16MHz in the Freematics Arduino Builder tool. The Pro Micro is pre-programmed with the Arduino Leonardo bootloader by default.

Note: Windows 8.1/10 don’t need any driver install and will recognize and install the interface automagically as a generic USB serial port. For WinXP/Vista/7 there’s a driver INF available for installation:

5 thoughts on “Baycom modem USB KISS interface

    1. Thanks. It’s doing buffering of the incoming frames for TX-ing but I’m not sure about the buffer size I’ve used, would need to check that in source.
      I’ve made a simple variant first on a breadboard with a ATMega8 using the on-chip hardware UART. Quickly afterwards I switched to a Pro Micro board and used the USB CDC stuff for the serial comms.

Leave a Reply

Your email address will not be published. Required fields are marked *