Skip to main content

Freeselcall

scratchanitch.dev badge

Codan 4 digit Selcall encoder and decoder

Features

  • Codan HF Selcall (4 digits)
  • Codan Page calls - sending and receiving - with magic bytes
  • Basic web interface
  • CLI interface
  • Websockets for application integration

Screenshot of the CLI for freeselcall

Unsupported

  • Windows

Requirements

  • hamlib
  • portaudio / pyaudio
  • c build tools / cmake

Running with Docker

Example:

docker run -p 5001:5001 --name freeselcall --rm --device /dev/snd -it ghcr.io/xssfox/freeselcall:latest --help

Install with pip

# install required system packages
sudo apt-get update
sudo apt install git build-essential cmake portaudio19-dev python3 python3-dev libhamlib-utils

sudo apt install pipx
pipx ensurepath

# make sure the PATH is set correctly
source ~/.profile

pipx install freeselcall

freeselcall --help

Install from source

Instructions for a raspberrypi. Requires bookworm or python 3.11 to be installed. UNTESTED

# install required system packages
sudo apt-get update
sudo apt install git build-essential cmake portaudio19-dev python3 python3-dev libhamlib-utils

sudo apt install pipx
pipx ensurepath

# make sure the PATH is set correctly
source ~/.profile

pipx install poetry


# install freeselcall
git clone --recurse-submodules https://github.com/xssfox/freeselcall.git
cd freeselcall

# the headers installed by libcodec2 make install don't include kiss_fftr.h required by the modem
poetry install
poetry shell
python3 -m freeselcall

Running

# Run rigctld in background. See rigctld --help on how to configure your rig
rigctld -m 1 -r /dev/null &

# Test to make sure rigctl works
rigctl -m 2 T 1 # enable PTT
rigctl -m 2 T 0 # disable PTT

# Get argument help
freeselcall --help

#list audio devices
freeselcall --list-audio-devices

freeselcall --output-device 0 --input-device 0 --log-level DEBUG # it's useful to have debug turned on when first testing

Testing

The CLI has a handy test_ptt to make test that PTT and sound output is working.

Web

By default the web interface runs on port 5002. It can be accessed at http://localhost:5002/

Freeselcall web interface

Socket.io is used to. Subscribe to:

  • selcall
  • preamble
  • info

Emit:

  • info
  • selcall, id

Command line arguments

freeselcall --help
\usage: freeselcall [-h] [-c C] [--no-cli] [--list-audio-devices] [--log-level {CRITICAL,FATAL,ERROR,WARN,WARNING,INFO,DEBUG,NOTSET}] [--input-device INPUT_DEVICE] [--output-device OUTPUT_DEVICE]
                   [--output-volume OUTPUT_VOLUME] [--rigctld-port RIGCTLD_PORT] [--rigctld-selcall-commands RIGCTLD_SELCALL_COMMANDS] [--rigctld-pretx RIGCTLD_PRETX] [--rigctld-posttx RIGCTLD_POSTTX]
                   [--rigctld-host RIGCTLD_HOST] [--ptt-on-delay-ms PTT_ON_DELAY_MS] [--ptt-off-delay-ms PTT_OFF_DELAY_MS] [--id ID] [--no-web] [--web-host WEB_HOST] [--web-port WEB_PORT]

options:
  -h, --help            show this help message and exit
  -c C, -config C       config file path
  --no-cli              [env var: FREESELCALL_NO_CLI]
  --list-audio-devices
  --log-level {CRITICAL,FATAL,ERROR,WARN,WARNING,INFO,DEBUG,NOTSET}
                        [env var: FREESELCALL_LOG_LEVEL]
  --input-device INPUT_DEVICE
                        [env var: FREESELCALL_INPUT_DEVICE]
  --output-device OUTPUT_DEVICE
                        [env var: FREESELCALL_OUTPUT_DEVICE]
  --output-volume OUTPUT_VOLUME
                        in db. postive = louder, negative = quiter [env var: FREESELCALL_OUTPUT_DB]
  --rigctld-port RIGCTLD_PORT
                        TCP port for rigctld - set to 0 to disable rigctld support [env var: FREESELCALL_RIGTCTLD_PORT]
  --rigctld-selcall-commands RIGCTLD_SELCALL_COMMANDS
                        Commands to send the rigctl server - for example 'L SQL 0' on ICOM will disable squelch when selcall is received [env var: FREESELCALL_RIGTCTLD_COMMAND]
  --rigctld-pretx RIGCTLD_PRETX
                        Commands to send the rigctl server before TXing (PTT already included) [env var: FREESELCALL_RIGTCTLD_PRETX_COMMAND]
  --rigctld-posttx RIGCTLD_POSTTX
                        Commands to send the rigctl server after TXing [env var: FREESELCALL_RIGTCTLD_POSTTX_COMMAND]
  --rigctld-host RIGCTLD_HOST
                        Host for rigctld [env var: FREESELCALL_RIGTCTLD_HOST]
  --ptt-on-delay-ms PTT_ON_DELAY_MS
                        Delay after triggering PTT before sending data [env var: FREESELCALL_PTT_ON_DELAY_MS]
  --ptt-off-delay-ms PTT_OFF_DELAY_MS
                        Delay after sending data before releasing PTT [env var: FREESELCALL_PTT_OFF_DELAY_MS]
  --id ID               ID to notify of selcall and used to send selcall [env var: FREESELCALL_ID]
  --no-web              [env var: FREESELCALL_NO_WEB]
  --web-host WEB_HOST   [env var: FREESELCALL_WEB_HOST]
  --web-port WEB_PORT   [env var: FREESELCALL_WEB_PORT]

Args that start with '--' can also be set in a config file (~/.freeselcall.conf or specified via -c). Config file syntax allows: key=value, flag=true, stuff=[a,b,c] (for details, see syntax at https://goo.gl/R74nmi). In
general, command-line values override environment variables which override config file values which override defaults.

CLI commands

Freeselcall Help 
--------------- 
clear 
   Clears TX queues 
debug 
   Open the debug shell 
exception 
   Raises and exemption to test the shell 
exit 
   Exits freeselcall 
help 
   This help 
id 
   Sets ID - example: callsign N0CALL 
list_audio_devices 
   Lists audio device parameters 
log_level 
   Set the log level 
save_config 
   Save a config file to ~/.freeselcall.conf. Warning this will override your current config 
selcall 
   Performs a selcall - example: selcall 1234 
test_ptt 
   Turns on PTT for 2 seconds 
volume 
   Set the volume gain in db for output level - you probably want to use soundcard configuration or radio configuration rather than this.

Credits

David Rowe and the FreeDV team for developing the modem and libraries

Metadata

Release files for freeselcall 0.0.7

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

Source distribution (sdist)

Source distribution for freeselcall 0.0.7
File Size Uploaded Provenance Actions
freeselcall-0.0.7.tar.gz 9.6 MB Without provenance Details for freeselcall-0.0.7.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for freeselcall 0.0.7
File Interpreter ABI Platform Actions
freeselcall-0.0.7-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details for freeselcall-0.0.7-cp311-cp311-musllinux_1_2_aarch64.whl
freeselcall-0.0.7-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details for freeselcall-0.0.7-cp311-cp311-macosx_14_0_arm64.whl

Total release size: 12.9 MB

Release files / freeselcall-0.0.7.tar.gz

Download URL freeselcall-0.0.7.tar.gz
Size 9.6 MB
Tags Source
SHA-256 checksum
How to use checksums
9a3ba16eec2fb813d30b960b4c5224a0bdaa39965a6d68b418eeb79c2db73e34
BLAKE2b-256 checksum
How to use checksums
05495e3674d0f0f0b58bf3f8ffab25ff31654f78e78aa448794299b04d7a5362
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.11.10 Darwin/23.2.0

Release files / freeselcall-0.0.7-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL freeselcall-0.0.7-cp311-cp311-musllinux_1_2_aarch64.whl
Size 1.6 MB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
cdef4c627f278cd769b8a442b2100a01173b550246ac497993ea9bbb6b7f0402
BLAKE2b-256 checksum
How to use checksums
d7df75e45f6d9cac05c65d5b86257a823509e527d31b6883518366df9e6af79e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.11.10 Darwin/23.2.0

Release files / freeselcall-0.0.7-cp311-cp311-macosx_14_0_arm64.whl

Download URL freeselcall-0.0.7-cp311-cp311-macosx_14_0_arm64.whl
Size 1.6 MB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
8f5c0c7acb0d16797b89baeb63f4c484b4b19181b19a9823bbd6d1f3ac396c9c
BLAKE2b-256 checksum
How to use checksums
fcd4f347f5c54f3bc96c9e1bd1d2a4c1f913d47a4b7deb20db87571277dceb10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.11.10 Darwin/23.2.0

Security for freeselcall 0.0.7

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