2026-02-13 05:20:10 -07:00
---
title: "Birdcage"
2026-02-16 05:08:18 -07:00
description: A generic AZ/EL positioner that doesn't care about wavelength — repurposing motorized satellite TV dishes for amateur radio tracking
2026-02-13 05:20:10 -07:00
template: splash
hero:
2026-02-16 05:08:18 -07:00
tagline: A generic AZ/EL positioner that doesn't care about wavelength
2026-02-13 05:20:10 -07:00
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
2026-02-16 06:00:19 -07:00
- text: Try Demo Mode
link: /guides/tui/#quick-start
2026-02-13 20:22:46 -07:00
variant: minimal
2026-02-16 06:00:19 -07:00
- text: Browse Guides
link: /guides/wiring/
2026-02-13 05:20:10 -07:00
variant: minimal
---
2026-02-17 18:42:22 -07:00
import { Card, CardGrid, LinkCard, Aside, Tabs, TabItem } from '@astrojs/starlight/components';
2026-02-16 06:00:19 -07:00
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
<CardGrid>
<Card title="Satellite Tracking" icon="star">
Real-time pass prediction from the [Craft API](https://space.warehack.ing), or connect Gpredict via the built-in rotctld server. Search by name, filter by elevation, track automatically.
[Tracking guide →](/guides/satellite-tracking/)
</Card>
<Card title="Camera Capture" icon="seti:image">
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/)
</Card>
<Card title="Radio Telescope" icon="sun">
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/)
</Card>
<Card title="Signal Analysis" icon="bars">
Live RSSI monitoring, automated sweep peaking, DVB tuner access, and LNB polarity switching — all from the Signal screen.
[Signal screen →](/guides/tui/#f3--signal)
</Card>
<Card title="Motor Control" icon="setting">
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)
</Card>
<Card title="Raw Console" icon="terminal">
Full firmware shell access through the TUI. 12 submenus, 100+ commands, with history and prompt-aware I/O.
[Command reference →](/reference/console-commands/)
</Card>
</CardGrid>
## The TUI

Six screens, one terminal. Everything from pass prediction to raw firmware commands:
- **F1 — Dashboard:** Satellite list, pass predictions, active tracking status, position readout
- **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
<Aside type="note" title="No hardware? No problem.">
Demo mode runs the full TUI with simulated data — every screen, every interaction. It's the fastest way to see what Birdcage can do.
</Aside>
2026-02-17 18:42:22 -07:00
<Tabs>
<TabItem label="uvx (no clone needed)">
```bash
uvx birdcage-tui --demo
```
</TabItem>
<TabItem label="From source">
```bash
cd tui/
uv sync
uv run birdcage-tui --demo
```
</TabItem>
</Tabs>
2026-02-16 06:00:19 -07:00
## 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.
2026-02-13 05:20:10 -07:00
<Aside type="tip" title="Standing on the shoulders of saveitforparts">
This project builds directly on the open-source work of **Gabe Emerson (KL1FI)** and his
[saveitforparts](https://www.youtube.com/@saveitforparts) YouTube channel. Gabe documented
five different Winegard dish variants, wrote Python control scripts for each, and shared
2026-02-16 06:00:19 -07:00
everything on GitHub. Chris Davidson ([cdavidson0522](https://github.com/cdavidson0522/winegard-sky-scan))
figured out the G2's RS-422 wiring and discovered the built-in radio telescope mode.
Without their work, none of this would exist.
2026-02-13 05:20:10 -07:00
[Read the full story →](/journal/origins/)
</Aside>
2026-02-16 06:00:19 -07:00
## Supported hardware
2026-02-13 05:20:10 -07:00
2026-02-16 06:00:19 -07:00
Five Winegard dish variants are documented, with varying levels of testing:
2026-02-13 05:20:10 -07:00
2026-02-16 06:00:19 -07:00
| 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** |
2026-02-13 05:20:10 -07:00
2026-02-16 06:00:19 -07:00
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.
2026-02-13 05:20:10 -07:00
2026-02-16 06:00:19 -07:00
<LinkCard title="Firmware Variant Comparison" href="/reference/firmware-variants/" description="Detailed comparison table of all five variants: baud rates, motor commands, position formats, and protocol differences." />
2026-02-13 05:20:10 -07:00
## Where to start
<CardGrid>
<Card title="Getting Started" icon="rocket">
What hardware you need, how to connect, and your first satellite track.
[Start here →](/getting-started/)
</Card>
<Card title="Guides" icon="open-book">
2026-02-16 06:00:19 -07:00
Wiring, calibration, satellite tracking, camera capture, radio telescope, BLE wireless bridge.
2026-02-13 05:20:10 -07:00
[Browse guides →](/guides/wiring/)
</Card>
<Card title="Reference" icon="document">
2026-02-16 06:00:19 -07:00
100+ firmware commands, NVS settings, GPIO pin maps, hardware specs, serial protocol.
2026-02-13 05:20:10 -07:00
[See reference →](/reference/firmware-variants/)
</Card>
Add Experiments section — 14 RF science experiments across DVB and SDR
New section documents what you can do with the positioner beyond satellite TV:
On-board DVB (7 experiments, ready to test):
- Solar radio monitoring, rain fade radiometry, geostationary arc census,
RFI mapping, antenna pattern measurement, DVB signal intelligence,
differential radiometry
External SDR (7 experiments, planned):
- Hydrogen line (1420 MHz), NOAA HRPT (1.7 GHz), EME monitoring (1296 MHz),
GPS/GNSS (1575 MHz), Iridium (1626 MHz), directional ADS-B (1090 MHz),
Inmarsat L-band (~1.5 GHz)
Also adds shared SDR hardware setup page (feeds, LNAs, bias tee safety,
BladeRF/RTL-SDR specs), overview with status table, Experiments card on
homepage, and sidebar with nested DVB/SDR groups.
2026-02-16 07:41:21 -07:00
<Card title="Experiments" icon="star">
Solar monitoring, rain fade radiometry, hydrogen line astronomy, weather satellite imagery, and more — on-board DVB and external SDR.
[Browse experiments →](/experiments/)
</Card>
2026-02-16 06:00:19 -07:00
<Card title="Project Journal" icon="pencil">
Discovery stories, debugging sessions, and the ongoing narrative of reverse-engineering these dishes.
[Read the journal →](/journal/)
2026-02-13 05:20:10 -07:00
</Card>
</CardGrid>
## Project journal
2026-02-16 06:00:19 -07:00
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.
2026-02-13 05:20:10 -07:00
<LinkCard title="Read the journal" href="/journal/" description="Discovery stories, debugging sessions, and the ongoing narrative of this project." />