Foundations of Amateur Radio On the 6th of June, 2004, two Brazilian amateurs Roland, PY4ZBZ and Arnaldo, PY4BL made a historic contact on 40m. The distance was not particularly significant, only 70 km, but the mode was. Using 2.1 kHz bandwidth, so it could fit within an amateur radio SSB transmission, they used software created by Swiss amateur Francesco, HB9TLK to make the very first HamDream exchange. This technological advancement represents the birth of what we now call HamDRM and Digital SSTV and how it came about is an adventure that needs documenting, since what we have is written in a combination of Portuguese, German and English, cobbled together from broken websites, archives, source code, commit comments and lost links. To provide some context, there is a broadcast radio mode called DRM, or Digital Radio Mondiale. At this point I should mention that this has absolutely nothing to do with Digital Rights Management with the catchy acronym of, you guessed it, DRM. As you might expect, this acronym clash is unhelpful, to say the least, when you're trying to find information about this radio mode. Digital Radio Mondiale, or DRM, essentially defines a digital standard for radio broadcast transmissions. It can handle multiple audio streams as well as file exchange and is used by broadcasters across the globe. Mondiale, in case you're curious means worldwide in French, seems my high school language lessons have finally been put to good use, my French teacher in the Netherlands will be thrilled. DRM is more efficient than AM and FM and as an open standard, it's gaining popularity. The first broadcast using this mode took place on the 16th of June 2003, during the World Radiocommunication Conference in Geneva. An open source implementation of this mode is called Dream. The source code is available online and is capable of being compiled for Windows, MacOS and Linux. Dream was originally written by Volker Fischer and Alexander Kurpiers. The Dream project started in June of 2001 and today it has many contributors. The DRM standard uses different bandwidths depending on which mode is used. The narrowest DRM mode uses 4.5 kHz, but modes using 100 kHz exist. By comparison, a typical analogue amateur radio uses 2.7 kHz for SSB. Using the source of Dream, Francesco built a modified version, called it HamDream and let it loose on the world. It was used for that very first 70 km contact between Roland and Arnaldo. Several versions of HamDream existed. The first QSO used 2.1 kHz and the last version of HamDream used 2.5 kHz bandwidth. To fit digital audio inside that narrow bandwidth it used different audio compression techniques, called a CODEC, namely LPC10 and SPEEX. According to Francesco, HamDream is the basis for all current amateur radio 2.5 kHz HamDRM programs. He goes on to say that it's outdated and the source and executables were removed from the net. Personally I think that's a shame, since it represents part of the history of our community and I think that putting the source online in a place like GitHub would be beneficial to the hobby. The 2.5 kHz HamDRM mode is implemented in several places. QSSTV, EasyPal and WinDRM to name a few. No doubt it's elsewhere. Of those three, only QSSTV survives. The source code for EasyPal, written by Erik VK4AES, now SK, was lost, apparently when the computer on which it lived was sold by his estate. Ironic really, since EasyPal was written because Erik lost a previous application due to a lightning strike nearby and was forced to write a new application from scratch. WinDRM appears even more elusive. There's a repository on the now archived Google Code site. There are derivatives that appear to use a version of WinDRM, but details are hard to find. An archive I have shows a commit by Francesco, HB9TLK from 2008. I've yet to learn how this relates to the overall picture. In parallel, in 2005, a few enterprising students made a MATLAB implementation of DRM. Called Diorama and written by Andreas Dittrich and Torsten Schorr it forms the basis of a Linux open source HamDRM receiver written by Ties, PA0MBO, chosen because it had a better performance in marginal conditions than Dream did. It's called RXAMADRM. Ties also wrote an open source transmitter, cunningly called TXAMADRM. It was based on the source code of Dream, specifically v1.12b. If at this point your head is exploding, I wouldn't blame you. Let's recap. There's an open broadcast standard called DRM. An open source, cross platform tool called Dream, in active development, implements that standard. A special, now discontinued, version of Dream was created called HamDream. It used less bandwidth than DRM and forms the basis of a standard that we now call HamDRM, which underpins Digital SSTV. HamDream forms the basis of the discontinued products, EasyPal and WinDRM, and lives on in TRXAMADRM and QSSTV, both Linux open source. In amateur radio terms HamDRM is one of the ways we can efficiently exchange digital information across long distances. At this point you might wonder why it matters? For starters, this is part of our history of amateur radio. The HamDRM mode is poorly documented, if at all. It forms the basis of several modes in use today and writing your own software is made all the more challenging because much of the design and development of this mode has been lost. What's more, HamDRM is an example of "modern radio". It uses the same fundamental techniques used by the 4G and 5G mobile phone network, as well as modern Wi-Fi. Losing this is a massive step backwards for amateur radio. This article alone represents a week of research by two people, thank you Randall VK6WR, and I won't be surprised to learn that it contains errors and omissions. It shouldn't have to be this hard to discover how a mode works, what is used to make it tick and how to write new software to implement a new application. Gotta love open source. Speaking of which. If you have source code copies of HamDream or WinDRM, I'd love to hear from you. cq@vk6flab.com is my address. If you have documentation on the design of the HamDRM mode, I'll owe you a beer, or a glass of milk, your choice. I'm Onno VK6FLAB