Category Archives: Amateur Radio

Another try at an HF FAX decoder…

About two years ago, I spent an evening and hacked together a simple program for taking recordings of HF-FAX transmissions and converting them into image files. The other day, I thought I’d dust that code off, but I couldn’t find it. So, instead, I reimplemented it from scratch. There is an interesting bit of math that I finally understood when I reimplemented it, which actually worked out rather well. I took a recording that I made of the New Orleans Coast Guard’s station broadcast, and it turned into this picture:

hffax

I’ll have to work a bit on the sync detection and scaling, as well as rectification, but it’s looking pretty good for the small amount of effort I’ve placed in it.

Google Chart Tools / Image Charts

Wow, the Google Chart Tools api includes all sorts of interesting things you can do with a tiny bit of web programming. For instance, you can make charts or visualize maps, or even typeset nifty mathematical formulas. It isn’t hard to write little chunks of Python code that can be used to create little png images like this one:

tex

It’s late, so I am just placing this here as a placemarker, but I’ll use this more in the future.

Mathematical (TeX) Formulas – Google Chart Tools / Image Charts (aka Chart API) – Google Code

NAVTEX on 518khz

I don’t have the right antennas or the best setup for decoding, but I can still occasionally hear some of the more local NAVTEX stations, and using MultiPSK (capable, but man, is that one program in need of a makeover) I managed to decode some of the alerts. Without further ado:

PACIFIC COAST HIGHWAY BRIDGE NAVIGATIONAL LIGHTS REPORTED 
INOPERATIONAL DUE TO A POWER OUTAGE. 

NNNN
BRK
ZCZC QA04
CCGD11 BNM D11 0110-10 
1. CALIFORNIA - GULF OF SANTA CATALINA 
OCEANSIDE DANGER BUOY (LLNR 2317) IS MISSING. 

NNNN
BRK
ZCZC QE42
DGPS BNM 133-10 
AUSTIN, NV DGPS BROADCAST SITE IS UNUSABLE AS OF 071145Z FEB 
10 UNTIL 
FURTHER NOTICE. 

NNNN
BRK
ZCZC QA64
CCGD11 BNM D11 0113-10 
1. CA-SAN CLEMENTE ISLAND 
HAZARDOUS OPERATIONS WILL TAKE PLACE AT THE FOLLOWING TIMES: 

 090800T-091200T FEB 10 
 101700T-102130T FEB 10 
IN AN AREA BOUND BY THE FOLLOWING COORDINATES: 
 32-55-00N  118-25-00W 
 32-55-00N  118-15-00W 
 32-45-00N  118-15-00W 
 32-45-00N  118-25-00W 
 TO POINT OF ORIGIN. 
MARINERS ARE ADVISED TO STAY CLEAR OF THIS AREA. 
2. CANCEL BROADCAST AT TIME//110530Z FEB 10// 

NNNN
BRK
ZCZC QA19
CCGD$1 BNM D11 0123-10 
1. CALIFORNIA - NEWPORT BAY 
NEWPORT BAY CHANNEL LIGHT 11 (LLNR 2470) HAS BEEN 
REPORTRD EXTINGUISHED. 

NNNN
BRK
ZCZC QA90
CCGD11 BNM D11 0115-10 
1. CA-SAN CLEMENTE ISLAND 
HAZARDOUS OPERATIONS WILL TAKE PLACE AT THE FOLLOWING TIMES: 

 100700T-101700T FEB 10 
 110700T-111700T FEB 10 
 120700T-120700T FEB 10 
IN AN AREA BOUND BY THE FOLLOWING COOODINATES: 
 32-55-00N  118-25-0-W 
 32-5--00N  118-15-0-W 
 32-40-00N  118-15-00W__
  2-20-_0PU  118-35-00W W
_  2-25-00N 111-35300WI_
 TOTP_INTIOFOF_ IRINJM 
MUMPNPNS ARZ AJBJSED TO A GAT_

					

Azimuthal Map Server

An azimuthal map shows the compass direction for the shortest path to a given location from the place the map is centered. This can be useful to help you aim antennas. I’ve used GMT to make maps before, but if you need a custom azimuthal map for your location, try surfing over to NA3T and NV3Z’s website, and make yourself one.

AZ_PROJ at WM7D: Azimuthal Equidistant Great Circle Projection Map Server Postscript by NA3T and NV3Z.

Here is the low resolution GIF image of mine, I downloaded a PDF that I printed on our ncie color printer.

1265828041

You can see that Australia is mostly just south of west, Japan is northwest, and most of Europe is northeast. Interestingly, the tip of Africa is almost straight west, as is the panhandle of Florida.

WSPR on 15m today…

Today is Wednesday, which means that it’s a day for trying different bands on WSPR. Today is scheduled to be 15m, which I have never tried before. I immediately saw a few RTTY stations below the WSPR sub band, which was a good sign, and two minutes later, I had my first spot, and it was a good one: EA1FAQ in grid IN71op, in Central Spain. If you have the capabilities, tune your WSPR stations onto 15 and see what you can get!

Morse Timing

While working on my Morse practice generating program that I have tentatively called mscript, I decided that I wanted to support “Farnsworth” timing: basically sending characters at one rate, but then increasing the spacing between characters and words so that the overall rate was slower. The idea (as near as I can tell, completely untested but still probably sensible) is that by learning the sound of characters at a fast rate, you don’t plateau as readily.

It isn’t hard to figure out the timing of traditional Morse code: A dit lasts one time period. A dash is three times as long. All elemtents (dots and dashes) within a character are separated by one period. Characters are separated by three periods. Words are separated by seven periods. Using this, the word “PARIS” takes 50 time periods, so the length of each period is 1200 / WPM milliseconds when WPM denotes the desired speed in words per minute.

But how does his timing change with the Farnsworth spacing? Well, inside a given character, the timing all remains the same. We’d like to extend intra and interword spacings to slow the overall code down to a different rate. We’d also like to preserve the 3/7 ratio between those two intervals. The math was eluding me, so I did what all people do when they don’t know the answer to a question: I looked it up on the internet. And of course, if you ask the right question, you get the right answer. Mine came in the form of an article by Jon Bloom, KE3Z that appeared in QEX entitled A Standard for Morse Timing Using the Farnsworth Technique which you can get from the ARRL archive here if you are a member.

But if you can’t, here are the formulas. Let’s say that you are specifying the Farnsworth in terms of a ratio s/c, where s is the overall (slower speed) and c is the character speed in WPM. You then compute

ta = (60 c – 37.2 s) / (s * c)
tc = 3 * ta / 19
tw = 7 * ta / 19

where tc and tw are the times (in seconds) that you have between characters and words respectively.

I’ll get this hacked into mscript shortly, and post an example.

Addendum: I’ve got the code added into mscript. Here are two samples of six random five-letter groups, sent first at 20wpm, and secondly sent at 20wpm, but with character spacing increased to slow the overall rate to 10wpm.

An example of both conventional timing and Farnsworth timing.

40m dipole not really tuned for 40m… or is it?

A while ago, I bought an MFJ antenna analzyer, but I hadn’t really done much with it. I wanted a short, simple project over the weekend, so I decided to check out my 40m dipole. A quick sweep revealed that it was resonant off the top end of 40m, around 7.350 or so, and that down at the bottom end of the CW portion of the band, it was about a 3:1 SWR. I’ll take better notes later tonight when I get home, and maybe even produce a small graph.

This dipole is actually a premanufactured one from radiowavz.com. It’s just a basic 40m dipole with balun, fed by 50 ohm coax. In my case, its mounted quite low: Its about 20 feet off the ground at one end, but it is tied to a short tree up my hill. so the middle is maybe 10 feet above ground, and the far end maybe only 6 feet.

So, the open question is: will raising the far end of the antenna lower its resonant frequency? Or is the antenna just cut wrong for the CW portion of the band?

Bets anyone?

Addendum: This website does show that as the antenna gets lower, the feedpoint impedance drops significantly, and also shows that dependent on height, the resonant frequency of the antenna can vary by more than 100khz. This suggests (unsurprisingly) that I should try to mount this antenna higher to provide an easier match in the 40m band. It also suggests that measuring an antenna close to the ground isn’t a good idea.

Bruce, VE9QRP on his qrpTracker

Bruce, VE9QRP has been experimenting with using a small Atmel controller to implement the Plan 13 algorithm that provides satellite tracking and Doppler calculations (the same algorithm that I use in my own Python code). It seems silly to drag a laptop into the field to do Doppler tuning when a couple of dollars worth of silicon can easily do the calculations necessary to provide full Doppler tuning. Wouldn’t it be awesome if your rig could do this “out of the box”?


httpv://www.youtube.com/watch?v=TP_fq_frqKw

A Great Ham Radio Podcast: ICQ Podcast

Allright, I’m probably the last ham on the planet who doesn’t know about this one, but just in case there is one other out there, I thought I’d give a plug to the ICQ Podcast. I found this while trying to find other podcasts for people trying to learn Morse Code. It is a terrific combination of new and just general conversation about ham radio, done by a group of UK hams. Well worth listening too, I got hooked on the latest episode, but am now downloading the entire catalog of back issues for my boring commute hours. Thanks alot to all the contributers, it’s really awesome.

ICQ Podcast – Home.

Diana Eng demonstrates dipole and Yagi antennas…

This morning greeted me with this nice little video, where Diana Eng demonstrates the pattern generated by dipole and Yagi antennas by a simple detector consisting of a dipole antenna with a small flashlight bulb wired across the feed point:


httpv://www.youtube.com/watch?v=lslHtCUSfN4

It does actually uncover one of my pet peeves: in describing the action of the reflector element of the Yagi, Diane claims that the reflector “reflects”, but when she added a director, she claimed that the director “focuses”. But if you are a clever person who maybe doesn’t understand much about how antennas work, you might reasonably ask how that actually works. After all, the elements are identical in composition, and are essentially placed the same distance from the antenna. Why does the director direct, but the reflector reflect?

If you can actually answer this question, you’ve begun to understand how antennas really work.

A little evening programming project…

Well, there wasn’t anything terrific on TV tonight, and I’ve had a little program kicking around in my head for a while, so I decided to set down and see if I could make some headway on it in a single evening of programming.

I used to have some Morse code practice cassette tapes a while ago. It used the Koch method, and was progressive. They began with just two letters, say K and M that were sent using Koch spacing (the space between letters were sent as if they were 5wpm, but the letters themselves were sent at 13wpm.) The tapes themselves were thus the combination of regular speech (giving you instructions) and Morse code. But I can’t find the tapes anymore, and even if I did have the tapes, I don’t have a cassette player, so they wouldn’t be of any immediate use. I went to HRO to see if they had any such thing on CD so that I could listen to them in my car, but ironically, the bottom seems to have fallen out of the Morse Code CD market, and they didn’t have any in stock.

So, I thought to myself, what would it take to make my own?

I’ve written programs to generate Morse code before. And most of the computers I use have some kind of speech synthesis capability (either the “say” command on Mac OS, or the festival speech synthesizer on Linux) so generating some reasonable if not exactly pleasing speech wouldn’t be that hard.

So, I tossed together a simple scripting language to wire the two together. It takes a simple script which consists of text which it translates directly into Morse code. The exception is any text which appears in double quotes. It gathers that text up, and passes it to the system speech synthesizer, and generates a sound file, which it then reopens, resamples to the same output rate as the rest of the morse code, and then returns to Morse mode. This isn’t all that hard because of the excellent libsndfile and libsamplerate libraries. There is some work left to be done, but the basics work. Here is the contents of a simple test script that I wrote:


"This is a test of the emergency broadcast system."
If this had been an actual emergency,
you would not have been using Morse code.

And here is the resulting .mp3 file, synthesized on my Macbook:

Morse synthesized by my “mscript” program (MP3)

The basics all work, but there are some additions to be made, to insert arbitrary wav files perhaps, to adjust timing, to implement Koch spacing and flexibility in changing the speed of Morse code inside a single document, and just other bits of cleanliness. Oh, and the Morse doesn’t have any shaping at all, so the transitions are a bit clicky. I can fix that pretty easily. Still, not bad for a couple of hours of tinkering with C, yacc, and lex.

The Wireless Amateur in Times of Disaster (1913)

The more things change, the more things stay the same:

MR. B. N. BURGLUND, whose description of the wireless station at the University of Michigan, appeared in our March number, writes us an interesting letter on the part played by wireless amateurs during the recent floods in the Middle West in March. He has much to say in praise of those who did good work and rendered efficient service; and he also condemns, in no uncertain terms, the meddler who, we are sorry to admit, appears to be always on the job and gets in his fine work at such times. One of these individuals, possessed of a powerful transmitter, and ignorant of the code except to the extent of being able to recognize a few well-known calls when he heard them, persisted in calling the station at the University of Michigan while the operator there was trying to handle messages from the flooded districts. He was told, repeatedly, to keep out, but being ignorant of what was said to him, and thinking his calls were simply being recognized, kept on calling. And he kept it up for over six hours. The wireless law provides a heavy penalty for offenses of this sort, but he did not sign an understandable call and will probably never be caught.

via The Wireless Amateur in Times of Disaster (1913).

Radio History: The book of wireless telegraph and telephone : being a clear description of wireless telgraph and telephone sets and how to make and operate them, together with a simple explanation of how wireless works

The early history of radio is quite fascinating, and luckily, lots of books from this early period are out of copyright and are available for free on the Internet. As an example, check out The book of wireless telegraph and telephone by A. F. Collins. This was radio in its infancy, when the use of vacuum tubes to create continuous oscillations was “the new wireless”, and the majority of stations were still using spark gaps. While you can’t legally operate spark anymore, it is still interesting to read these kinds of books, which offered pragmatic advice to the experimenters of the day on how they could construct and deploy their own wireless stations. Very nice.

The book of wireless telegraph and telephone : being a clear description of wireless telgraph and telephone sets and how to make and operate them, together with a simple explanation of how wireless works.