Skip to main content

eesdr-tci

Python package to interact with Expert Electronics SDR TCI control interface.

This package is a work-in-progress and will probably change quite a bit in the near term.

It is currently based on the TCI Protocol.pdf, version 2.0 from the ExpertSDR3/TCI documentation repo.

I have tested basic connectivity, receiving and changing parameters, and receiving and transmitting audio streams in various formats.

Until everything stabilizes, take a look at the example folder to see a couple different ways it can be used. Example utilities include:

  • json_dump.py: reads startup parameters and outputs them as a JSON dictionary
  • param_listener.py: prints out all parameter changes received from the TCI server
  • receive_audio.py: receives audio stream from the TCI interface which can be piped to other utilities
  • spot_saved_stations.py: repeatedly spots a list of stations to keep them visible in the EESDR interface
  • scanner.py: moves between a list of stations and pauses if squelch is broken
  • direwolf_interface.py: provides a pure TCI interface to the direwolf packet soundmodem. (Note: currently, this requires building a modified version which can pipe the transmit audio, see this branch if interested.)
  • ctcss_decode.py: listens for CTCSS/PL tones in receiver audio and prints possible matches.
  • cw_macro_keyer.py: 12-button CW macro keyer with freeform text box and speed adjustment. cw_macro_keyer_screenshot
  • contest_memo.py: Use the spotting feature to leave notes to yourself during unassissted contest activites. contest_memo_screenshot

Recent Changes

v0.0.2

Updated/added a couple of commands to match the most recent TCI protocol definition.

v0.1.0

Refactored several things, including coding style cleanups and adding docstrings to the code. There were two major changes that may impact existing code:

  1. Module name tci.Listener was changed to tci.listener.
  2. Listener.get_cached_param_value(...) was removed along with the entire caching setup. It was mainly a remnant of my very first pass at structuring things and I didn't find a need for it in any of the utilities I've made so far. It could also be easily recreated in a program that would make use of it.

Release files for eesdr-tci 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 eesdr-tci 0.1.0
File Size Uploaded
eesdr-tci-0.1.0.tar.gz 10.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eesdr-tci 0.1.0
File Interpreter ABI Platform
eesdr_tci-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.5 kB

Release files / eesdr-tci-0.1.0.tar.gz

Download URL eesdr-tci-0.1.0.tar.gz
Size 10.2 kB
Tags Source
SHA-256 checksum
How to use checksums
1a31b5e1a5b3bf5f51f10c9a8f68ce776d91f94f0295ab54bcd84103f4e7e1b9
BLAKE2b-256 checksum
How to use checksums
074634bc6ba48f73a3d1ab8bb9ce90699481da8f4fe51c58981b26fac36a4ef5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.1

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

Download URL eesdr_tci-0.1.0-py3-none-any.whl
Size 9.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
49b59e04c47c64d5f0b20015f4149609728820e31292ca6d87b8e80bc9b6cbcd
BLAKE2b-256 checksum
How to use checksums
3b0ed81a55968272767fce9b24cee868c2d30a9532ae8229d725110586513c34
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.1

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

0.0.2

2 release files

0.0.1

2 release files

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