So, I’ve made some progress on teasing apart enough of the encoding of WSPR beacon messages to write a completely stand alone Python program that will generate the appropriate tone sequence to send out the callsign/grid/power message. For instance, if I type “genwspr KF6KYI CM87 27”, I get:
3, 3, 0, 2, 0, 0, 0, 0, 3, 2, 2, 2, 3, 3, 1, 2, 0, 2, 3, 0, 0, 1, 0, 1,
1, 1, 3, 0, 2, 2, 2, 0, 2, 2, 3, 2, 2, 1, 0, 1, 0, 2, 0, 0, 0, 2, 3, 0,
3, 1, 0, 2, 3, 3, 2, 1, 0, 0, 2, 3, 3, 0, 1, 2, 0, 0, 0, 1, 1, 2, 1, 0,
3, 0, 3, 0, 3, 2, 0, 3, 0, 2, 1, 2, 3, 3, 2, 2, 2, 1, 3, 2, 3, 0, 3, 0,
2, 0, 1, 2, 2, 2, 0, 0, 3, 2, 0, 1, 0, 0, 3, 1, 1, 2, 1, 1, 0, 0, 1, 3,
0, 3, 2, 0, 0, 3, 3, 3, 2, 2, 2, 0, 2, 3, 0, 1, 0, 0, 1, 3, 0, 0, 0, 0,
0, 2, 0, 3, 3, 0, 3, 0, 3, 3, 2, 0, 0, 1, 1, 0, 0, 2,
Which is the 162 bit long code needed to indicate that KF6KYI is operating with an output power of 27dbM, or 0.5 watts.
If I crank up the power to 37dbm (a full 5w on my FT-817), i should use this code sequence.
3, 3, 0, 0, 0, 0, 0, 0, 3, 0, 2, 2, 3, 1, 1, 2, 0, 2, 3, 2, 0, 3, 0, 1,
1, 3, 3, 0, 2, 2, 2, 0, 2, 2, 3, 0, 2, 3, 0, 3, 0, 0, 0, 0, 0, 2, 3, 2,
3, 3, 0, 0, 3, 3, 2, 1, 0, 0, 2, 1, 3, 0, 1, 2, 0, 0, 0, 3, 1, 0, 1, 0,
3, 2, 3, 2, 3, 2, 0, 1, 0, 0, 1, 0, 3, 3, 2, 0, 2, 1, 3, 2, 3, 2, 3, 2,
2, 0, 1, 2, 2, 0, 0, 2, 3, 2, 0, 3, 0, 0, 3, 1, 1, 2, 1, 3, 0, 0, 1, 1,
0, 3, 2, 0, 0, 1, 3, 3, 2, 2, 2, 0, 2, 1, 0, 3, 0, 2, 1, 3, 0, 2, 0, 2,
0, 0, 0, 1, 3, 2, 3, 2, 3, 1, 2, 2, 0, 1, 1, 2, 0, 2,
My Python program isn’t very pretty, and it doesn’t implement all the non-beacon message types that are needed for QSO-mode operation, but it does appear to work. I’ll make it available after I get a chance to tidy it up a bit more.
Hi !
i was very interested when i saw your short notice about the WSPR encoding script and i wonder if you are willing to share it. I thought about implementing the stuff on a microcontroller and DDS signal generator. Think it would be a nice feature to be able to change the settings live without recompiling.
regards
Mario, DH5YM, Dresden
You can find my “genwspr” script (Python) here.
Many thanks ! I already created a short piece of Atmel AVR software for transmitting a beacon. Maybe i am able to implement the encoding routines in C which would prevent from recompiling when changing the beacon message. Another thing is synchronizing the beacon with GPS or a radio controlled clock since it is not easy to keept the timing over a long timeframe. Currently my beacon works with a AD9832 DDS but AD9850 should be possible also.