pift8: FT8

Sends an FT8 message, the weak-signal digital mode with 15-second transmit slots. The module name is pift8, the binary name, while the Go names are FT8 and ModuleNameFT8. Code: ft8.go.

Fields

JSON Go field Type Required Rules
frequency Frequency float64 yes Dial frequency in Hz, 5000 to 1500000000
message Message string yes The FT8 message, not empty or only spaces
ppm PPM *float64 no Clock correction in parts per million, any value; without it the program uses NTP
offset Offset *float64 no Audio offset in Hz, 0 to 2500; the program defaults to 1240
slot Slot *int no 0 first 15 s slot, 1 second slot, 2 every slot
repeat Repeat *bool no true adds -r and keeps sending every 15 s

The tone goes out at frequency + offset. gorpitx does not check the message format; pift8 encodes it, so a message FT8 cannot encode fails in the program, not in validation.

FT8 slots are tied to the clock, so the Pi’s time has to be right. Keep NTP running.

Example

{
  "frequency": 14074000,
  "message": "CQ N0CALL FN31",
  "offset": 1500,
  "slot": 1,
  "repeat": true
}

Runs:

stdbuf -oL "$GORPITX_PATH/pift8" -f 14074000 -m "CQ N0CALL FN31" -o 1500 -s 1 -r

With repeat, the program never exits by itself. Give Exec a timeout or call Stop.

Message shapes

A standard exchange goes like this, one message per slot:

Step Message
Call CQ CQ N0CALL FN31
Answer with your grid N0CALL N1CALL EM69
Signal report N1CALL N0CALL -15
Report back, with R N0CALL N1CALL R-08
Confirm N1CALL N0CALL RR73
Sign off N0CALL N1CALL 73