Winegard satellite dish control for amateur radio sky tracking
Find a file
2026-02-17 20:57:20 -07:00
docs Add hardware reference docs (A3981, K60, RYS352A) 2026-02-14 18:36:42 -07:00
firmware/ble-bridge Parse GGA/GSA fix quality from NMEA, add PAIR command init sequence 2026-02-11 18:28:59 -07:00
mcp Bump to 2026.02.18 — re-publish with PyPI README rendering 2026-02-17 20:57:20 -07:00
scripts Add G2 bootloader and EEPROM exploration scripts 2026-02-14 18:05:03 -07:00
src Add LNB polarity toggle (V-pol 13V / H-pol 18V) 2026-02-17 17:24:05 -07:00
Trav-ler-Rotor-For-HAL-2.05 Initial travler-rotor library scaffolding 2026-02-11 04:10:17 -07:00
tui Bump to 2026.02.18 — re-publish with PyPI README rendering 2026-02-17 20:57:20 -07:00
.gitattributes Configure git-lfs for binary assets 2026-02-14 18:36:23 -07:00
.gitignore Ignore site/ directory — now its own repo (warehack.ing/birdcage-docs) 2026-02-13 05:20:34 -07:00
CLAUDE.md Publish birdcage-tui to PyPI, document TUI extras 2026-02-17 18:42:28 -07:00
pyproject.toml Bump to 2026.02.18 — re-publish with PyPI README rendering 2026-02-17 20:57:20 -07:00
README.md Add PyPI README files and MCP resource/prompt tests 2026-02-17 19:15:23 -07:00
uv.lock Rename project from travler-rotor to birdcage 2026-02-13 05:16:00 -07:00

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
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