Skip to main content

qrss-ei: Software to transmit QRSS CW signals

Introduction

What is QRSS CW?

Very slow Morse code. In normal Morse code, the beginner's slow speed is 60 cpm (characters per minute), which is the same as 12 wpm (words per minute). At that speed, the fundamental unit, the "dot length", is 100 ms. In QRSS, the dot length is much longer, commonly 3 seconds or more. In other words, QRSS is Morse code with a speed of 2 cpm = 0.4 wpm or less.

Normal CW is on-off-keying. QRSS is commonly sent as frequency-shift-keying, with the "key engaged" frequency typically being 5 Hz above the "key released" frequency.

Finally, typical QRSS receiving software assumes that the QRSS transmission is repeated a few times each 10 minutes, preferably with exactly the same timing. This is used to "integrate" serveral transmissions so they can be fished out of the noise better.

QRSS is also very much a QRP mode. Typical transceivers put out a few 100 mW or so, some even less.

The waterholes for people interested in this mode seems to be

What is this project?

This software enables me to transmit QRSS signals.

Management summary: This is a programm that talks to rigctld from the well-known hamlib software package. The rig should be set to RTTY mode, which will cause a carrier to be sent whenever PTT is pressed. Alternatively, some other such mode can be tried (AM and FM would work as well).

No actual characters are ever emitted to be sent via RTTY. Also, this uses the "data" variety of "PTT", and as no data comes in, AM and FM should also send a bare, unmodulated carrier.

On each frequency shift, the PTT is briefly released, the frequency shifted 5 Hz up or down, and the PTT again pressed. I'm not sure whether this is needed. I fancy it reduces bandwidth occupied. Not sure.

This software is strictly a command-line utility. It needs only plain Python without any modules that need compilation. It does make use of the morse2sound software by the same author, which has the code to convert text into Morse code characters. But morse2sound is plain Python as well.

What do I use to receive QRSS CW?

This software does not help you to receive QRSS CW. To do that, I presently use Lopora.

Installation hints on Lopora:

The Lopora instructions address unconventional installation targets. On my plain Python installation on my plain Linux Debian Laptop, I found I just needed an active virtual environment with this pre-installation:

pip install numpy pillow pyaudio

On my Debian Linux Trixie box, I'm using "pipewire" as the "audio device for input". I then set the input device actually used via the standard Gnome configuration. This basically ties up audio while Lopora is used.

Installation of qrss_ei

The following steps should give you an executable script qrss_ei intended to be run in a terminal. To actually send QRSS, you will also need to run rigctld from the well-known hamlib software package to actually connect to your rig. qrss_ei has no code to connect to your radio, it only knows to connect to rigctld.

For further instructions, see the output qrss_ei -h gives you.

Plain Python

uv

If you use the uv Python dependency manager:

  • Construct a uv virtual environment with uv venv
  • activate it
  • uv pip install qrss-ei

The name

Has two sections: The "qrss" part stands for what you can transmit with this, the "ei" part is derived from the suffix of my, the author's, radio amateur call sign DJ3EI.

I do not seem to be able to make up my mind whether to separate the two with - or _, so the Python project and the repo have -, but the Python package and the script have _.

Metadata

Release files for qrss-ei 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qrss-ei 0.1.0
File Size Uploaded Provenance Actions
qrss_ei-0.1.0.tar.gz 10.8 kB Without provenance Details for qrss_ei-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for qrss-ei 0.1.0
File Interpreter ABI Platform Actions
qrss_ei-0.1.0-py3-none-any.whl Python 3 none any Details for qrss_ei-0.1.0-py3-none-any.whl

Total release size: 19.4 kB

Release files / qrss_ei-0.1.0.tar.gz

Download URL qrss_ei-0.1.0.tar.gz
Size 10.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4209b0fae79b90af364872b1e9c04897cdaca821eee54d96f7cb3aa8a03eb560
BLAKE2b-256 checksum
How to use checksums
64c692325dd7218667cd8727b4927cc3e9ab11c8a9424a30722cdc0346214135
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / qrss_ei-0.1.0-py3-none-any.whl

Download URL qrss_ei-0.1.0-py3-none-any.whl
Size 8.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
68ca4e01586d932d773e48a32b7ad00563489647bcd480d7b08bf7a339cead29
BLAKE2b-256 checksum
How to use checksums
a3fbd80013a805b6b5eb09c409f40185a1fac49d68e18baafd0139b693eafad0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Security for qrss-ei 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page