You are currently viewing all posts tagged with radio.

Resilient Communications with Continuous Wave Radio

Codegroup is a program written by John Walker that encodes and decodes any file into groups of five letters. For example, take an image, run it through codegroup, and this is what you get:

$ cat avatar.jpg | codegroup | head -n 4

The resulting code groups lend themselves to being transmitted via low-tech, resilient means, such as continuous wave radio. The ability to do this with any file is a simple but amazingly powerful concept.

I discovered codegroup around the same time that I was learning Morse code. I decided to take advantage of codegroup and put what I was learning into practice. This led to the development of morse.py.

With codegroup, I end up with a series of ASCII characters. I wanted to be able to feed those characters into a program which would convert them to Morse. The program should display the dits and dahs, but more importantly: it should beep them out.

morse.py is a simple script which does just that. It accepts ASCII input and encodes it to International Morse Code. The Morse is printed to the screen, in case you want to key it out yourself. Johnathan Nightingale’s beep.c is used to play the beeps with the terminal bell. The length of dits, dahs, and the pauses in between are configurable, but the defaults conform to International Morse. The input can be a file, but if no file is specified the script simply reads from standard input, which allows it to be piped together with codegroup.

$ morse.py --help
usage: morse.py [-h] [-b BEEP] [-s SPEED] [-f FILE] [-q]

Convert an ASCII file to International Morse Code and play it with system

optional arguments:
  -h, --help            show this help message and exit
  -b BEEP, --beep BEEP  The location of the program that plays the beeps. This
                        script is intended to be used with Johnathan
                        Nightingale's beep: http://www.johnath.com/beep/
  -s SPEED, --speed SPEED
                        Reduce the pauses between message characters by the
                        given amount.
  -f FILE, --file FILE  The location of the ASCII file to convert.
  -q, --quiet           Do not print the dots and dashes.

What is the application? Suppose your government has shut down your internet access. You want to send a map to an acquaintance. With these tools, you can encode the map with codegroup, pass the result to morse.py, hold your radio up to your speakers and key the mic. That’s it. Censorship bypassed.

$ cat map.pdf | codegroup | morse.py -b ~/src/beep/beep

On the receiving end, the Morse needs to be translated back to ASCII characters, which can then be decoded with codegroup. It’s a slow process, but resilient. To speed things up, the file being transmitted can be compressed before being passed to codegroup. (And if privacy is a concern, the file can also be encrypted, but that would be illegal unless you are doing so to protect life or property.)

Learning Morse Code

Although it’s no longer required for the amateur radio Technician license, I have decided to learn Morse code. Despite it’s age, Morse remains one of the most effective ways to transmit information over long distances using minimal infrastructure and power.

Learning Morse Code

To begin, I have printed and laminated the code chart from learnmorsecode.com. This makes encoded and decoding Morse a simple (although not fast) task. I’ve also put a variety of audio files consisting of slow Morse transmission on my media player. With a notebook and pen, I can practice decoding the messages wherever I am.

I’m aiming for 10 minutes of practice per day.

This post was published on . It was tagged with radio, morse.

Studying for the Amateur Radio Technician Exam

I’ve been vaguely interested in amateur radio for a few years. The idea of decentralized, low-infrastructure communications appeals to me, but knowing nothing about radios, I was somewhat overwhelmed by it all and didn’t know where to start. I didn’t pursue the interest until now. In case anyone else is in the same position, I thought I would outline what worked for me.

A couple weeks ago I saw that the local library had a copy of the ARRL Ham Radio License Manual. The Manual is meant to teach beginners the basics of radio and help them to pass the Technician license exam: a 35-question multiple choice test. The entire question and answer pool is publicly available.

My method for using the book was to read one chapter every morning. Immediately afterwards I would quiz myself on all the relevant questions for that chapter (included in the back of the book). For the rest of the day, I wouldn’t think at all about radios, until the evening, when I would once again quiz myself on all the questions from that day’s chapter. The book consists of nine chapters. I combined chapters seven and eight into one day, and so finished the book in 8 days. Over the course of the ninth day I took a dozen or so practice tests on QRZ.com. The following day I took the real exam.

Thanks to the book, in little more than a week I went from knowing absolutely nothing about radios (and near to nothing about electronics) to being confidently able to ace the Technician exam and earn my amateur radio license.

One could just memorize the question pool and probably easily pass the test the same way. I’m not much interested in licenses. I didn’t start this venture just to be awarded a slip of paper by the FCC. I’m after the knowledge. Using a resource like the book to help me in comprehending all of the relevant topics appealed to me much more than rote memorization of the exam’s answers.

Of course all I possess now is book knowledge. That needs to be supplemented with experience. But once I buy a radio, I feel that I have a solid base from which to leap.

This post was published on . It was tagged with radio, ham.