This project aims to develop a dirt-cheap, open-source, highly reconfigurable, wireless PC-radio interface to support various packet radio modes.  This ESP32-based device attaches to the mic/audio-in and speaker/audio-out jacks of virtually any ham radio and connects to a controlling PC via USB, Wifi, or Bluetooth.  The device provides two operating modes:  1) audio relay services for use with modem software on the controlling PC, and 2) as a packet radio modem.  It will be functionally similar to a combination of a wireless version of the Signalink USB soundcard ($140) and a Mobilinkd TNC3 ($120), for a small fraction of the price of each of these commercial units individually.  I'm estimating ~$20 for parts.

This project started on a whim.  I am a new ham, with a mobile radio, a couple of HTs, a modest budget, and an interest in supporting emergency communications.  After I joined the local ARES chapter in March, I tuned in to an over-the-air activity day, learned about this group's use of Winlink for coordination between EMCOMM stations, and observed an exercise simulating an emergency scenario.  Unable to participate without a digital interface for my radios, I dug through my parts bin and had the idea of using an ESP32 as a Bluetooth audio relay.  That got me thinking about many other ways the ESP32 could be used as a packet radio interface, not only as an audio relay but also as a full-blown packet modem, an audio signal analyzer, and an APRS modem or gateway.

For this project, I will interface to an Icom ID-5100a and a Boafeng UV-5R, since that's what I have, but the modem will be easily reconfigurable for virtually any HF or VHF/UHF radio, with some manual cable or headset hacking.  I intend to minimize parts as much as possible, although some electronics in addition to the ESP32 are inherently necessary, i.g. for audio leveling and bias.  Lastly, this will be a learning experience.  I intend to take the hard way and reinvent the wheel in many cases in order to truly understand how packet radio works and to be able to optimize as needed.  Lastly, I will document my progress here for anyone interested in the thought process, and I will make demos available as I go along, and ultimately the entire codebase will be on github.  

I hope someone finds some part of this useful.  If that's you, please leave a comment to let me know :)

73!

Status/To-Do:

 ☑  Design data vis UI
 ☑  Develop analog->digital conversion (Rx)
 ☑  Develop digital->analog conversion (Tx)
 ☑  Develop audio streaming over UDP (PC->ESP32 ☑, ESP32->PC ☑)
 ☐  Develop audio streaming over BT (deprioritized)
 ☑  Develop KISS interface
 ☑  Research and prioritize modulation modes
 ☐  Develop FSK modulation
 ☐  Develop FSK demodulation - IN PROGRESS
 ☐  Design and test radio interface circuits (☑ UV-5R)
 ☐  Design state machine for switching between modes (☑ Audio relay Tx/Rx only)
 ☐  Design html UI
 ☐  Test with Winlink (☑ Audio relay with Soundmodem)
 ☐  Test with APRS  (☑ Audio relay with Soundmodem)


Some considerations regarding interfaces: