Skip to content

Origins — Standing on saveitforparts

The idea of pointing a satellite TV dish at things other than TV satellites isn’t new. But making it practical — with working code, documented protocols, and tested hardware — required someone to go first. That someone was Gabe Emerson (KL1FI), who publishes as saveitforparts on YouTube.

Gabe got his hands on a Winegard Trav’ler — one of those big motorized dishes that sit on RV rooftops — and figured out how to control it. He documented the RS-485 serial protocol, wrote Python scripts to send motor commands, and integrated it with Gpredict via the Hamlib rotctld protocol. Then he published everything on GitHub.

Then he did it again. And again. Five times, across five different Winegard hardware variants:

RepositoryVariantWhat it covers
Travler_RotorHAL 0.0.00Original Trav’ler control script
Trav-ler-Rotor-For-HAL-2.05HAL 2.05.003Updated firmware variant
Travler-Pro-RotorTrav’ler ProUSB A-to-A connection, ODU tunneling
Carryout-RotorCarryout (2003)Different protocol (g not a), stall-detect homing
Carryout-Radio-TelescopeCarryoutRF scanning and sky imaging

Each repo includes the complete wiring guide, the Python control script, and enough documentation to get someone else started. That’s the part that matters — he didn’t just make it work for himself, he made it reproducible.

This project started with Gabe’s HAL 2.05 code. The original travler_rotor.py — 275 lines of serial I/O, motor commands, and Gpredict integration — was the foundation.

We restructured it into a proper Python package (birdcage) with separate modules for protocol abstraction, the leapfrog overshoot algorithm, high-level antenna control, the rotctld server, and a CLI. Along the way we found and fixed the elevation leapfrog bug that was present in both the Trav’ler and Trav’ler Pro repos.

Then the Carryout G2 arrived. It spoke a different dialect — RS-422 instead of RS-485, 115200 baud instead of 57600, Angle[0] instead of AZ = — and we needed to reverse-engineer its firmware console from scratch. That work produced the console-probe tool, the full command inventory, and eventually the GPIO pin map of the K60 MCU.

Chris Davidson’s winegard-sky-scan project provided the other critical piece — the RS-422 wiring guide for the Carryout G2 and the discovery of the azscanwxp radio telescope mode.

Gabe’s YouTube demos are worth watching if you want to see these dishes in action:

Amateur radio satellite tracking requires a dish that can point at a specific spot in the sky and follow a moving object. Commercial amateur radio rotators cost $500-$2000+. A used Winegard Trav’ler or Carryout from an RV salvage yard costs $50-$200 and has more mechanical range than most purpose-built rotators.

The gap was software — translating between “azimuth 145.3°, elevation 32.7°” and the specific serial commands each Winegard variant expects. Gabe bridged that gap first. Everything here is an extension of that work.