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.