The personal website of Scott W Harden

New QRSS Keyer

I’d like to use an interesting pattern that takes advantage of both FSK and OOK. I want it to be 5 Hz or less in bandwidth, and I want it to be unique and recognizable in cases where only a few seconds are spotted, but I don’t want it to be so odd that it’s annoying. I came up with something like:

Here’s what it looks like on the air:


ATTiny2313 programmed with C (source code)

GPS serial data parsing

To ensure the message transmits exactly at the 0:00 mark of every 10 minutes, the microcontroller is occasionally put into a “wait” mode where it continuously watches the GPS output (parsing the serial data that bursts out every second) and waits for the minutes digit to become zero before beginning a transmission.

Technical details: The output is 9600 baud serial data in NMEA format. A string buffer is filled as incoming characters are received. If the message starts with $GPRMC we know the 11th character is the ones digit of the minutes number in the time code. Waiting for the next ten minute rollover to occur is as easy as waiting until that character becomes zero.

^    ^     ^

The start of a time message looks like this. To identify $GPRMC we just need to match the $ and the C (indicated by the first two arrows above). We then know if we keep reading, we will arrive at the ones digit of the minutes number (the third arrow).

I have some notes on the Neo-6M here

FSK Circuit

I found this design very convenient. A potentiometer (RV1) sets center frequency to let me adjust where in the QRSS band I want to transmit.

The FSK input (which could be digital or analog) is 0-5V, expected to originate from a microcontroller pin. The keyer is programmed to transmits over the full 0-5V range.

The second potentiometer (RV2) sets the width of the FSK input. I adjust this to achieve a bandwidth of about 5 Hz.

The output is buffered, mixed, and sent to the oscillator module with coax.

QRSS Stitch and Stack

If the transmitter frequency is stable, transmissions start every 10 minutes, and grabbers are time-aligned to be every 10 minutes, multiple grabs can be averaged together to enhance signal-to-noise ratio. This is called QRSS Image Stacking. To simplify the process of making these images I created a new tool for the job: QRSS Stitch and Stack.

Started Transmitting Letters

I finished writing the microcontroller code to read the GPS time and only start transmissions when the minutes value ends with a zero. The signal now stacks nicely in 10-minute grabs. Now that GPS and the oven is working well I’ve started sending my call sign (AJ4VD).

AJ4VD spotted in Pensacola, FL (W4HBK)

First spot occurred while I was actively adjusting the transmission length

AJ4VD spotted in Greensboro, NC (WD4ELG)

5x frame stack (mean frame) from the WD4ELG grabber reveals the AJ4VD signal much better, and confirms the GPS timer is working well.


I got OOK and FSK working together (the S shape in the middle). I’m also now using a crude oven, but am not sure yet how stable frequency is over long time spans.

AJ4VD spotted in Pensacola, FL (W4HBK)

AJ4VD spotted in Greensboro, NC (WD4ELG)

I kept thinking my oscillator was drifting frequency because the line wasn’t straight. Turns out it was my curved monitors!

Amplifier Improvements

I improved my amplifier (now output 500mW) and am impressed how well my attic dipole is doing! It runs east/west so it radiates north/south. I saw my signal on a few more grabbers.

AJ4VD spotted in Northwood, OH (N8NJ)

AJ4VD spotted in Las Cruces, NM (WA5DJJ)

AJ4VD spotted in Florida (WD4AH)

This grab shows a nice airplane reflection in the middle

AJ4VD spotted in Ontario, Canada (VA3ROM)

AJ4VD spotted in Pensacola, FL (W4HBK)

This 8-hour grab reveals when my AC kicks on and off and demonstrates the necessity of ovenizing my setup. It’s the signal around 10,139,980 Hz.