Skip to content

A tool that automates the generation of FT8 datasets by listening, transmitting, and analyzing signal reports.

License

Notifications You must be signed in to change notification settings

miguelboing/ft8-dc

Repository files navigation

FT8DC

FT8 Dataset Creator is a tool developed for research purposes to automate the creation of an FT8 dataset. Its core functionality can be summarized in the following steps:

  1. Listen to an FT8 band for a specified duration using the WSJT-X receiver.
  2. Transmit a CQ call on the same frequency.
  3. Query PSK Reporter to identify which stations received the CQ message.

Requirements

  1. A radio transceiver that supports CAT (Computer Aided Transceiver) control and uses audio channels for transmission and reception.
  2. WSJT-X (version 2.7.0 or later).
  3. On Linux systems, you must install rigctld. For example, on Fedora you can directly use the package manager: dnf install rigctld
  4. Python (3.13 or later)

Installation

  1. Clone the repository git clone https://github.com/miguelboing/ft8dc.git.
  2. Install the required packages pip install -r requirements.txt.

Usage

  1. Connect your computer to the radio and check if rigctld is successfuly installed. For more information, see the Hamlib rigctl/rigctld documentation.

    Note for Windows users:
    You can use the WSJT-X rigctld version. For the following steps, use rigctld-wsjtx instead of rigctld.

    rigctld -h
  2. List supported radios using the command:

    rigctld -l

    Find the corresponding Rig number for your radio (e.g., Flex-Radio 64XX is 2036).

  3. Run the rigctld daemon, passing the Rig number and the communication interface:

    • Using a serial port:
      rigctld -m 2036 -s 115200 -r /dev/ttyUSB0
    • Using a network socket:
      rigctld -m 2036 -r 127.0.0.1:5002
  4. Verify the rigctld connection by reading the radio's frequency:

    rigctl -m 2 -r 127.0.0.1:4532 f

    Note: Use -m 2 and -r 127.0.0.1:4532 as these are the default interface values created by rigctld.

  5. Configure WSJT-X:

    • Open WSJT-X and go to Settings -> Radio
    • Use the configuration shown below:

    WSJT-X RIG Configuration

  6. Set program behavior by editing the config.toml file.

    Refer to the inline comments in the file for configuration guidance.

  7. Run the main script:

    python -m ft8dc
  8. After the program finishes, collected data will be saved at:

    ft8dc/dataset/output/serialized_samples/
    

    Each iteration generates a new sample file.

  9. Convert samples to readable formats:

    • To convert a specific sample:

      python to_readable_format.py ./dataset/output/serialized_samples/sample_name.pkl.gz

      This creates a folder named after the sample and exports the data as .csv and .txt files.

    • To convert all samples at once:

      python to_readable_format.py dataset/output/serialized_samples/*

Contributing

Contributions are welcome! Please check the Issues page for ongoing tasks. If you’d like to contribute, you can fork the repository, make your changes, and submit a pull request with your modifications.

Road Map

Version 1.0 introduces a new debug tool and SWR management functionality for the ATU (available exclusively for Flex radios). The ft8-dc application has been running reliably for several months, with only minor issues related to the FlexRadio API — these are supposed to be resolved when using firmware version v3.10.10 or later.

Version 0.1 is fully functional, but several components can be improved. Currently, the transmitter is implemented entirely in Python, while the receiver still relies on WSJT-X to capture packets. Future development aims to implement the receiving functionality in Python as well, removing the WSJT-X dependency.

For additional improvements, known issues, and feature requests, please refer to the issues page.

Credits and Licensing

This project includes and modifies code from ft8.py, originally written by James Kelly (VK3JPK), licensed under GPLv3.

The FT8 protocol and algorithms are based on WSJT-X by Joe Taylor (K1JT). More information: WSJT-X

Additionally, this project includes code from py-wsjtx, specifically the file wsjtx_server/pywsjtx_packets.py, which is licensed under the MIT License. A copy of the original MIT license is included in the same directory as the used file (LICENSE).

All modifications and additions to this project are licensed under the GNU General Public License v3.0 or later.

About

A tool that automates the generation of FT8 datasets by listening, transmitting, and analyzing signal reports.

Resources

License

Stars

Watchers

Forks

Languages