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
Metadata
Release files for winegard-birdcage 2026.2.18
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| winegard_birdcage-2026.2.18.tar.gz | 45.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| winegard_birdcage-2026.2.18-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.2 MB
Release files / winegard_birdcage-2026.2.18.tar.gz
| Download URL | winegard_birdcage-2026.2.18.tar.gz |
|---|---|
| Size | 45.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4db69e078e22d9ea67388fe63ac259ab9dd547e0476e86943774b02097079cdd
|
|
BLAKE2b-256 checksum How to use checksums |
aad3ab7220451a0a0ab7def6c774988b6952dd8b2d82bcadb61c222774d4e378
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / winegard_birdcage-2026.2.18-py3-none-any.whl
| Download URL | winegard_birdcage-2026.2.18-py3-none-any.whl |
|---|---|
| Size | 44.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6d5aa133b797ac2f1024b15a561086344ba4562db75e222de87f19b7ebf2323f
|
|
BLAKE2b-256 checksum How to use checksums |
956fde23fba4f67c613bb57b537c665b82f04248200487973f2ee94be717999b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|