Metadata-Version: 2.4
Name: qrss-ei
Version: 0.0.1
Summary: A simple QRSS CW (very slow Morse code) transmit software.
Author-email: "Dr. Andreas Krüger, DJ3EI" <dj3ei@famsik.de>
License-Expression: MIT
Project-URL: Homepage, https://codeberg.org/omwb/qrss-ei
Project-URL: Repository, https://codeberg.org/omwb/qrss-ei
Project-URL: Issues, https://codeberg.org/omwb/qrss-ei/issues
Keywords: ham,amateur radio
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Communications :: Ham Radio
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: morse2sound~=1.0.7
Dynamic: license-file

# 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

- To read up on it: [Scott Harden + Andy
  resources](https://swharden.com/qrss/plus/)
- To meet others doing it (and read up some more): [QRSS Knights
  mailing list](https://groups.io/g/qrssknights)

### What is this project?

This software enables me to transmit QRSS signals.

Management summary: This is a programm that talks to
[rigctld](https://hamlib.sourceforge.net/html/rigctld.1.html) from the
well-known [hamlib](https://hamlib.github.io/) 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 now 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.

This is strictly a command-line utility.  It needs only plain Python
without any modules that need compilation.  It does make use of the
[morse2sound](https://gitlab.com/4ham/morse2sound) software by the
same author which already 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](https://www.qsl.net/pa2ohh/11lop.htm).

#### Installation hints on that:

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](https://docs.python.org/3/library/venv.html#creating-virtual-environments)
with this pre-installation:

```
pip install numpy pillow pyaudio
```

On my Debian Linux Trixie box, I'm using 16 (pipewire) as the "audio
device for input".  I set the input device actually used via the
standard Gnome configuration.

## Installation

### Plain Python

- Construct a plain Python [virtual
  environment](https://docs.python.org/3/library/venv.html#creating-virtual-environments)
- activate it
- `pip install qrss-ei

### uv

If you use the [uv](https://docs.astral.sh/uv/) Python dependency
manager:

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

