Dr. Brian Robert Callahan

academic, developer, with an eye towards a brighter techno-social life


Let's create a protocol, part 1: Introducing the CW Record Protocol

Update September 26, 2020: I eventually wrote this up as a complete article, which I then submitted to QEX and it was accepted. Sadly, that means the end of this series until the QEX publication but stay tuned for it!

We will be starting a new series. I know what you're thinking: "you can't start a new series, you haven't finished the old one." We'll just have to interlace the Unix exploration series with this new series. Besides, this might very well be interesting to the Unix people as well as the amateur radio people.

Amateur radio is neat in that it allows operators to create and use new protocols over the air, as long as they are publicly documented (97.309(a)(4), also question G1C13 in the current 2019-2023 General exam pool). So let's do that. Let's create a new protocol for use over the airwaves.

Some quick notes before we get started

I will be documenting the protocol as I develop it. This means that there is the potential for a later blog post to contradict what came before it. Changes may be necessary during development. I will conclude this series with the final public documentation so at the end, if you'd just like to use the protocol and aren't interested in how it was designed and developed, you can simply read the final blog post of the series.

Introducing the CW Record Protocol

I decided to create a protocol to transmit binary data over CW. I am sure I am not the first person to think of this. But I believe it will be a simple enough protocol for us to understand while still forcing us to make design decisions that require good thought and weighing of potential pros and cons.

I have decided to name this protocol the CW Record protocol, or CWR for short. The protocol will define both a file format, the CW Record file format, and the mechanism through which the file will be transmitted and received.

Those of you who know about file formats will immediately recognize the naming similarity to the Intel HEX Record and Motorola S-Record file formats. This is intentional. The file format is inspired by both, though it will be a more compact form than either.


Here are my goals for the CW Record protocol, in no particular order:

That's it. If we can achieve those goals, anything else we might want to do can be layered on top as extensions. We want to keep the base protocol simple, as this is as much a learning exercise as it is the production of a popular and usable protocol.

Next: looking back so we can look forward

In the next post, we will explore the Intel HEX Record and Motorola S-Record file formats so we can begin to plan out how our CW Record file format will take shape.