Winegard satellite dish control for amateur radio sky tracking
Project description
winegard-birdcage
Serial control library for Winegard motorized satellite dishes, repurposed for amateur radio satellite tracking.
Turns surplus RV/marine satellite TV antennas into steerable ground station dishes via RS-485 or RS-422.
Install
pip install winegard-birdcage
CLI Tools
Two entry points are included:
birdcage -- antenna control and rotctld server:
birdcage init --port /dev/ttyUSB0 --firmware hal205
birdcage pos
birdcage move --az 180.0 --el 45.0
birdcage serve --host 127.0.0.1 --port 4533 # rotctld for Gpredict
console-probe -- automated firmware exploration:
console-probe --port /dev/ttyUSB0 --baud 115200 --discover-only --json report.json
console-probe --port /dev/ttyUSB0 --baud 115200 --deep --wordlist wordlist.txt
Supported Hardware
| Variant | Connection | Baud | Motor Command |
|---|---|---|---|
| Trav'ler (HAL 0.0.00) | RS-485 / RJ-25 | 57600 | a <id> <deg> |
| Trav'ler (HAL 2.05) | RS-485 / RJ-25 | 57600 | a <id> <deg> |
| Trav'ler Pro | USB A-to-A | 57600 | a <id> <deg> |
| Carryout | RS-485 / RJ-25 | 57600 | g <az> <el> |
| Carryout G2 | RS-422 / RJ-12 | 115200 | a <id> <deg> |
Architecture
protocol.py -- FirmwareProtocol ABC + per-variant subclasses (HAL205, HAL000, G2)
leapfrog.py -- Predictive overshoot compensation for mechanical motor lag
antenna.py -- BirdcageAntenna: high-level control wrapping protocol + leapfrog
rotctld.py -- Hamlib rotctld TCP server (p/P/S/_/q) for Gpredict integration
cli.py -- Click CLI: init / serve / pos / move
Related Packages
| Package | Description |
|---|---|
| birdcage-tui | Six-screen terminal UI for dish control |
| mcbirdcage | MCP server for AI-assisted dish operations |
Documentation
Full hardware details, wiring guides, firmware command reference, and NVS tables: birdcage.warehack.ing
Credits
- Gabe Emerson (KL1FI / saveitforparts) -- original Trav'ler, Trav'ler Pro, and Carryout rotor scripts
- Chris Davidson (cdavidson0522) -- Carryout G2 sky scan and rotator control
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file winegard_birdcage-2026.2.18.tar.gz.
File metadata
- Download URL: winegard_birdcage-2026.2.18.tar.gz
- Upload date:
- Size: 45.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4db69e078e22d9ea67388fe63ac259ab9dd547e0476e86943774b02097079cdd
|
|
| MD5 |
653f6357c0c6c2a5d485f0e0562d88a4
|
|
| BLAKE2b-256 |
aad3ab7220451a0a0ab7def6c774988b6952dd8b2d82bcadb61c222774d4e378
|
File details
Details for the file winegard_birdcage-2026.2.18-py3-none-any.whl.
File metadata
- Download URL: winegard_birdcage-2026.2.18-py3-none-any.whl
- Upload date:
- Size: 44.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d5aa133b797ac2f1024b15a561086344ba4562db75e222de87f19b7ebf2323f
|
|
| MD5 |
3d9bb48c2eebbb343eadee2b0ca203a8
|
|
| BLAKE2b-256 |
956fde23fba4f67c613bb57b537c665b82f04248200487973f2ee94be717999b
|