The CW Commuter

I’ve written before about trying to use CW while commuting. I was looking into a bunch of different ways of achieving commute CW operating via the Internet.

And going back to 2016, I started thinking about how to send/receive CW via a lossy datagram-based internet connection.  Lossy, because us hams can do error correction and deal with QSB already with our operating practices.   And it is more like real radio if it is a bit unreliable.

The protocol

So back in 2016, I wrote down an on-the-wire protocol for this — called bitoip.  Each end would send and receive packets of carrier-on and carrier-off events to communicate the CW with real timing (and therefore hand-key “fist” dynamics) — without needing to run up a pile of audio channels and all of that.   I assume it this ought to be low-bandwidth and reasonably reliable but not too reliable.

Protocol details in the GitHub repo at https://github.com/G0WCZ/cwc. See bitoip.md for those details.

Equipment

Okay, so how about the equipment needed for this?  There are two components:

  1. A station – that turns keyed morse into packets, and receives packets and turns them into a tone in headphones or can drive a separate oscillator.
  2. A reflector – that creates a number of channels that stations can connect to.  This really just broadcasts to connected stations what it hears coming in.  Plus other enhancements if needed later.

So now let’s look at equipment options:

Station

My minimal station would be a tiny box that can wifi to my phone hotspot and has a key and a headphone jack.  Optionally a volume control and channel selector.   That’s a minimal option.  That’s a Pi Zero W with a couple of parts to add a headphone output.  Other ways would be — a PC or Mac (Linux, Windows, OS/X) with a serial interface for key and using the built-in audio.

I’ve built basic Go code for a one-channel station client that will compile for most platforms. This includes the serial and Pi GPIO I/O for key interface (in/out) and PWM audio.   That’s in the repo. See https://github.com/G0WCZ/cwc/tree/master/go

I’ll tidy up the hardware and publish that soon.

Reflector

I’ve built a basic one-channel-only reflector in Go that works nice on a Pi, on OS/X or Linux.   That is also in the repo at https://github.com/G0WCZ/cwc/tree/master/go

There’s a basic single-channel reflector server running on cwc0.nodestone.io:7388

Initial Testing

CWC Pi and serial development

Over this Easter break, I’ve writing Go code and have been doing some tests of the basic station and reflector.  It works.  I suspect some more work on time sync is needed but for now, it seems to capture, transmit, receive and reconstruct morse okay.

More on Github

I’m going to keep working on this. Feel free to join and collaborate over on GitHub at https://github.com/G0WCZ/cwc or leave a comment here.

Pi + Mumble + iCW

I commute to and from London 4 days a week.  There’s an hour on the train each way.  I can only do so much CW training. What I need is something that connects to the phone to allow an easy CW QSO or two.  iCW is close, but doing that with a computer and all the gubbins is a bit too much to set up.  So I was thinking about this:

What sort of small black box can I make that will wifi to my phone hotspot, have a plug for key and headphones and micro USB for power (or have battery brick inside.)  It’d have just one big knob for channel selection and a couple of LEDs to indicate connection status.  

What would that be?  First thought is a Raspberry Pi Zero W with the headless Mumble client by Daniel Chote: https://github.com/dchote/talkiepi and a bit of work to interface a key and add a hacky headphone output.

So, that’s the basic idea.  I’ll see where experiments take me.