--- title: "Birdcage" description: A generic AZ/EL positioner that doesn't care about wavelength — repurposing motorized satellite TV dishes for amateur radio tracking template: splash hero: tagline: A generic AZ/EL positioner that doesn't care about wavelength image: file: ../../assets/carryout-g2.jpg alt: Winegard Carryout G2 satellite dish — the white dome radome that inspired the project name actions: - text: Get Started link: /getting-started/ icon: right-arrow - text: Try Demo Mode link: /guides/tui/#quick-start variant: minimal - text: Browse Guides link: /guides/wiring/ variant: minimal --- import { Card, CardGrid, LinkCard, Aside, Tabs, TabItem } from '@astrojs/starlight/components'; Birdcage turns salvaged RV satellite dishes into general-purpose AZ/EL positioners. Point them at LEO satellites, map the RF sky, capture images during passes — the hardware doesn't care what you're tracking or why. ## What it does Search the sky catalog by name, track targets at 1 Hz, predict upcoming passes. Works standalone via the Craft API or with Gpredict through the built-in rotctld server. [Tracking guide →](/guides/satellite-tracking/) Manual, interval, and pass-event triggered image capture. Produces JPEG frames with JSON metadata and optional FITS output for scientific workflows. [TUI guide →](/guides/tui/) 2D RF sky mapping with `azscanwxp` — a firmware command that sweeps azimuth while cycling DVB transponders and logging RSSI at each grid point. [Radio telescope guide →](/guides/radio-telescope/) Live RSSI monitoring, automated sweep peaking, DVB tuner access, and LNB polarity switching — all from the Signal screen. [Signal screen →](/guides/tui/#f3--signal) Keyboard nudging, position presets, velocity tuning, configurable step sizes. Direct motor commands with safety gates to prevent accidental stow. [Control screen →](/guides/tui/#f2--control) Full firmware shell access through the TUI. 12 submenus, 100+ commands, with history and prompt-aware I/O. [Command reference →](/reference/console-commands/) ## The Sky Catalog Birdcage doesn't maintain its own TLE files or orbital prediction engine. It talks to [Craft](https://space.warehack.ing) — an open API that knows where everything is. Search "ISS" and get its current azimuth and elevation from your location. Search "Moon" and point the dish at it. The catalog covers LEO satellites, GPS constellations, geostationary birds, deep space probes, and celestial bodies — anything with a known ephemeris. The integration runs at three levels: - **TUI Craft mode** (F2 → Craft tab) — search, select a target, hit Track. The dish follows at 1 Hz. Pass predictions show rise time, peak elevation, and duration. Pass-state transitions (AOS → TCA → LOS) feed the Camera overlay for automated capture. - **MCP server** — `search_satellites`, `get_passes`, `get_next_pass`, and `get_visible_targets` tools let any MCP client query the catalog and compose tracking workflows. - **rotctld bridge** — Gpredict and other Hamlib-compatible controllers drive the dish via the built-in TCP server on port 4533. Craft provides the orbital data; Gpredict does the math. No NORAD catalog numbers to memorize, no TLE files to download, no prediction libraries to configure. Type a name, get a position. ## The TUI ![Birdcage TUI — six screens shown in demo mode](/screenshots/tui-collage.png) Six screens, one terminal. Everything from pass prediction to raw firmware commands: - **F1 — Dashboard:** Four action cards — Point Dish, Monitor Signal, Scan Sky, and Stow — each jumping to the relevant screen - **F2 — Control:** Motor nudging, presets, velocity controls, step size selector - **F3 — Signal:** RSSI plots, DVB tuner status, sweep peaking, LNB diagnostics - **F4 — System:** NVS settings, firmware identification, motor lifetime stats - **F5 — Console:** Direct firmware shell with prompt-terminated I/O and command history - **F6 — Camera:** Live capture overlay with manual, interval, and pass-event triggers ```bash uvx birdcage-tui --demo ``` ```bash cd tui/ uv sync uv run birdcage-tui --demo ``` ## Why "Birdcage"? In ham radio, satellites are called "birds." The Carryout G2's white dome radome looks like a birdcage — and a birdcage catches birds from the sky. It's also a nod to [saveitforparts](https://www.youtube.com/@saveitforparts). Gabe saves discarded RV satellite dishes "for parts." We took the parts and built a birdcage from them. ## Supported hardware Five Winegard dish variants are documented, with varying levels of testing: | Variant | Connection | Status | |---------|-----------|--------| | Trav'ler (HAL 0.0.00) | RS-485 / RJ-25 | Supported (Gabe's original) | | Trav'ler (HAL 2.05) | RS-485 / RJ-25 | Supported (Gabe's original) | | Trav'ler Pro | USB A-to-A | Partially supported | | Carryout (2003) | RS-485 / RJ-25 | Supported (different protocol) | | Carryout G2 | RS-422 / RJ-12 | **Fully reverse-engineered** | The Carryout G2 has the most complete documentation — over 100 firmware commands mapped across 12 submenus, NVS settings dumped, GPIO pins identified, and motor control characterized. ## Where to start What hardware you need, how to connect, and your first satellite track. [Start here →](/getting-started/) Wiring, calibration, satellite tracking, camera capture, radio telescope, BLE wireless bridge. [Browse guides →](/guides/wiring/) 100+ firmware commands, NVS settings, GPIO pin maps, hardware specs, serial protocol. [See reference →](/reference/firmware-variants/) Solar monitoring, rain fade radiometry, hydrogen line astronomy, weather satellite imagery, and more — on-board DVB and external SDR. [Browse experiments →](/experiments/) Discovery stories, debugging sessions, and the ongoing narrative of reverse-engineering these dishes. [Read the journal →](/journal/) ## Project journal This isn't just a reference manual. The [project journal](/journal/) captures the story of how we got here — the debugging sessions, the discoveries, the moments where a `?` in the right submenu revealed a whole new capability.