Last updated on August 2nd 2009.
I implemented WSPR beacon transmit mode into ATS3bv-1.5 firmware. It is not the very first standalone WSPR beacon implementation, but it is the first WSPR beacon implementation for a stock transceiver or transceiver kit. For those not familiar with Steve Weber KD1JV ATS-3b creation, it is a tiny 6 band CW/digital transceiver kit fitting into the Altoids tin.
My alternate firmware may be downloaded from
WSPR is a shortwave beacon mode designed by Joe Taylor K1JT. The beacon trasmits call, grid and power information in very compact form with slow 4 tone FSK modulation in two minute intervals. The signal is very narrow (about 4Hz) and by ear undistinguishable from a steady carrier. The beacon sensitivity is -27 dB in a reference bandwidth of 2500 Hz.
WSPR software is able to upload received beacons to a centralized spot database. This is very useful for evaluation of ionospheric conditions and gives nearly immediate feedback on your beacon performance.
To get your ATS-3b rolling with WSPR, you will need to download ATS3bv-1.5 firmware, replace beacon messages in the firmware with yours and flash your transceiver with the modified firmware. The beacon messages are generated by wsprgen application. wsprgen is a tiny windows application based on Mark VandeWettering's genwspr Python script.
My wsprgen may be downloaded from the same place as the ATS-3bv firmware. wsprgen can generate WSPR beacon data in a format, which may be directly included into a firmware of a standalone beacon controller, may it be ATS-3b or something else. To create beacon data for ATS-3b, first enter your Call, Grid and Power in dBm. Then select output format "Assembler" and uncheck the "Include sync vector". No need to include the sync vector into the message. The sync vector is being blended into the message by the ATS-3b firmware itself. Click generate. The output table will be three lines long and will contain 21 bytes. Open ATS-3vb firmware source code and replace one of the three data blocks after labels wspr_table1:, wspr_table2: or wspr_table3: Recompile and flash the firmware into your device.
To start the beacon, first make sure your DDS reference frequency is calibrated. The easiest way to do it is to tune second receiver to WWV at 10MHz and adjust the ATS-3b to zero beat. Then calibrate the IF offset to 600Hz as close as possible. Calibrate your watches with the precision of 1 second. Here comes the ATS-3b and WWV to help again.
With 30M band module use DFE to enter 10140.1kHz. You may start WSPR beacon now, or tune couple of Hz up or down from the center of WSPR activity. Here a more precise DFE would be great, which I plan to do later. Stock ATS-3b could tune in 50Hz steps.
WSPR beacon mode is entered with the Menu button. Hold it until you hear "w" and see a small "u" displayed. Start the beacon 1 with VFO button, beacon 2 with Tune Up button or beacon 3 with Tune Down button. The beacon has to be started at the beginning of an even minute exactly. The beacon will send randomly with the probability of 25%. That makes about 7.5 2 minute relations every hour in average. TX is indicated by blinking dash on the display and beeping for the WSPR symbol interval, which is slightly shorter than 1 second. During idle periods the decimal dot blinks every second. The beacon may be canceled with any button.
WSPR is a constant carrier mode. Running ATS-3b with WSPR at 3W and higher will put quite a strain on the finals. The whole Altoids box will heat up and the DDS reference oscillator will shift about one or two Hz in 2 minutes relation. The receiving side will not decode the "bananas" (technical term among QRSS knights for slanted curved spectrograms). My ATS-3b works well with output power 1W at 5.7V input voltage. I plan to build a dedicated 5.7V regulator for my WSPR experiments. The TX frequency shifted about 1Hz in 4 hours, which I account mostly to the daily temperature changes. It is getting quite hot in the summer in New Jersey. I believe the frequency stability is sufficient, if one avoids transmitting on the boundaries of the WSPR subband.
The 2 minutes timing is derived from the 32768Hz clock resonator. Even without any calibration the stability seems to be sufficient for one day beaconing. I did not see any timing error after 5 hours (measured with WSPR software). Every even second, a pseudo random number between 0 and 255 is generated. If the pseudo random number is lower than 64, TX starts. Otherwise ATS-3b sleeps for another 2 minutes. The pseudo random generator may need some improvement. It seems to "cluster" the TX periods a bit. One or two hour average seems to be ok, so I am not sure whether the problem is in the pseudo random number generator, or in my knowledge of probability.
The first on the air test was performed overnight from 1st to 2nd August. The test was done at 30m with modest multiband dipole and 1W TX power. I was spotted 285x, with best DX ZL3CU (loc RE66gl, 14578km), OE3FVU (loc JN78ve, 6843km), DH5RAE (loc JN68pv, 6644km), PA0PPW (JO21dw, 5924km), GI8HXY (loc IO64vl, 5174km) and EI7GL (IO51tu, 5098km). The ZL spot nearly made me fall from the chair. It is probably as far as it could get from here.
ATS-3b is able to receive WSPR, only it has BFO frequency set to 600Hz by default and it has fixed audio CW filter centered around the same frequency. WSPR software from Joe Taylor recieves at fixed center audio frequency of 1500Hz. One could connect computer microphone before the audio CW filter and set the BFO to 1500Hz. This would work fine, only the transceiver would no more be usable for CW. I will try to contact Joe to make the audio center frequency configurable.
One word of caution. The ATS-3bv-1.5 firmware was only tested on my modified ATS-3b. My firmware is compile time configurable for the stock ATS-3b and it is preconfigured by default for the stock ATS-3b. But it was not tested on real hardware. I will be thankful for positive / negative reports on how my firwmare works on a stock ATS-3b and I will be more than happy to fix the firmware if it does not work for you.