- astro-opengraph-images: auto-generates 1200x630 PNG for all 50 pages - Starlight Head override injects og:image via getImagePath helper - site URL enables sitemap-index.xml generation - Fix F1 Dashboard description (action cards, not satellite list)
170 lines
8.3 KiB
Plaintext
170 lines
8.3 KiB
Plaintext
---
|
|
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
|
|
|
|
<CardGrid>
|
|
<Card title="Satellite Tracking" icon="star">
|
|
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/)
|
|
</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 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
|
|
|
|

|
|
|
|
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
|
|
|
|
<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>
|
|
|
|
<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>
|
|
|
|
## 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.
|
|
|
|
<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
|
|
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.
|
|
[Read the full story →](/journal/origins/)
|
|
</Aside>
|
|
|
|
## 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.
|
|
|
|
<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." />
|
|
|
|
## 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">
|
|
Wiring, calibration, satellite tracking, camera capture, radio telescope, BLE wireless bridge.
|
|
[Browse guides →](/guides/wiring/)
|
|
</Card>
|
|
<Card title="Reference" icon="document">
|
|
100+ firmware commands, NVS settings, GPIO pin maps, hardware specs, serial protocol.
|
|
[See reference →](/reference/firmware-variants/)
|
|
</Card>
|
|
<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>
|
|
<Card title="Project Journal" icon="pencil">
|
|
Discovery stories, debugging sessions, and the ongoing narrative of reverse-engineering these dishes.
|
|
[Read the journal →](/journal/)
|
|
</Card>
|
|
</CardGrid>
|
|
|
|
## 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.
|
|
|
|
<LinkCard title="Read the journal" href="/journal/" description="Discovery stories, debugging sessions, and the ongoing narrative of this project." />
|