diff --git a/public/screenshots/tui-control.svg b/public/screenshots/tui-control.svg new file mode 100644 index 0000000..3fcec4b --- /dev/null +++ b/public/screenshots/tui-control.svg @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Birdcage + + + + + + + + + + ──────────────────────────────────────────────────────── + F1 Dashboard  F2 Control  F3 Signal  F4 System  +──────────────────────────────────────────────────────── +──────────────────────────────────── + Manual  Presets  Track  +──────────────────────────────────── +AZ  180.00°  EL  45.00° + +.N. +/\ + +WE + +\/ +'' +      S  180.0° + + + +AZ ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ +EL ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + + + + + + + + + + + + +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + +────────────────────────── + Home AZ  Home EL  E/R  +──────────────────────── + + f1 Dashboard  f2 Control  f3 Signal  f4 System  f5 Console  q Quit  d Dark ^p palette + + + diff --git a/public/screenshots/tui-dashboard.svg b/public/screenshots/tui-dashboard.svg new file mode 100644 index 0000000..24d99c1 --- /dev/null +++ b/public/screenshots/tui-dashboard.svg @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Birdcage + + + + + + + + + + ──────────────────────────────────────────────────────── + F1 Dashboard  F2 Control  F3 Signal  F4 System  +──────────────────────────────────────────────────────── +─────────────────────────────────────────────────────────────────────────────────────────────────────────────── +────────────────────────────────────────────────────────── + Point Dish  Monitor Signal  Scan Sky  Stow  +────────────────────────────────────────────────────────── + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + f1 Dashboard  f2 Control  f3 Signal  f4 System  f5 Console  q Quit  d Dark ^p palette + + + diff --git a/public/screenshots/tui-signal.svg b/public/screenshots/tui-signal.svg new file mode 100644 index 0000000..c1619a2 --- /dev/null +++ b/public/screenshots/tui-signal.svg @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Birdcage + + + + + + + + + + ──────────────────────────────────────────────────────── + F1 Dashboard  F2 Control  F3 Signal  F4 System  +──────────────────────────────────────────────────────── +──────────────────────────────────── + Monitor  Sweep  Sky Map  +──────────────────────────────────── +─────────────────────────────────────────────────────────────────────────────────────────────────────────────── + +Signal StrengthReceiver + +RSSIFreq      1090640 kHz +░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0SymRate   0 ksps +avg: 0  cur: 0  reads: 0LNB       ODU 13V (V-pol) +DVB RSSILock      NO +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁BCM       --- +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + +─────────────────────────────────────────────────────────────────────────────────────────────────────────────── + +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + +Samples: 0 + + + + + + + + + +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + +Iters  + + + + f1 Dashboard  f2 Control  f3 Signal  f4 System  f5 Console  q Quit  d Dark ^p palette + + + diff --git a/public/screenshots/tui-system.svg b/public/screenshots/tui-system.svg new file mode 100644 index 0000000..5f0f0df --- /dev/null +++ b/public/screenshots/tui-system.svg @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Birdcage + + + + + + + + + + ──────────────────────────────────────────────────────── + F1 Dashboard  F2 Control  F3 Signal  F4 System  +──────────────────────────────────────────────────────── +──────────────────────────────────── + Hardware  Motors  NVS Config  +──────────────────────────────────── +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + +Firmware + +FW: 02.02.48  |  MCU: K60 96MHz  |  Ant: 12-IN G2 + + + + + + +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + +A3981 Stepper Drivers + +AZ DIAG: OK +EL DIAG: OK +AZ Step Size Mode = AUTO +EL Step Size Mode = AUTO +AZ: Mode = AUTO +EL: Mode = AUTO +AZ Torq:LOW + +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + +───────────────────────────────── + Refresh All  Reset A3981 Faults  +───────────────────────────────── + + f1 Dashboard  f2 Control  f3 Signal  f4 System  f5 Console  q Quit  d Dark ^p palette + + + diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index 2aab685..0249b01 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -11,59 +11,95 @@ hero: - text: Get Started link: /getting-started/ icon: right-arrow - - text: Birdcage TUI - link: /guides/tui/ + - text: Try Demo Mode + link: /guides/tui/#quick-start variant: minimal - - text: Console Commands - link: /reference/console-commands/ + - text: Browse Guides + link: /guides/wiring/ variant: minimal --- -import { Card, CardGrid, LinkCard, Aside } from '@astrojs/starlight/components'; +import { Card, CardGrid, LinkCard, Aside, Steps } 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 + + + + 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/) + + + 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 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:** 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 + + + + +1. **Clone and install** (from the `tui/` directory): + + ```bash + cd tui/ + uv sync + ``` + +2. **Run in demo mode:** + + ```bash + 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. -## Why "Birdcage"? - -The Carryout G2's white dome radome does look like a birdcage -- and in ham radio, satellites are called "birds." 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. - -## What is this? - -Winegard makes motorized satellite TV dishes -- the Trav'ler, Carryout, and their variants -- designed to automatically find DirecTV and DISH Network satellites from an RV rooftop. They have stepper motors for azimuth and elevation, firmware consoles accessible over RS-485 or RS-422, and enough mechanical range to track objects across most of the sky. - -Birdcage repurposes that hardware for **amateur radio satellite tracking**: pointing a dish at LEO and GEO satellites using orbital prediction software like Gpredict, controlled via the Hamlib `rotctld` protocol. - -Along the way, we've reverse-engineered the firmware console of the Carryout G2 (all 12 submenus, 100+ commands), mapped the K60 MCU's GPIO pins live over serial, built a BLE-to-RS422 wireless bridge, and discovered a built-in radio telescope mode. - -## Where to start - - - - What hardware you need, how to connect, and your first satellite track. - [Start here →](/getting-started/) - - - Task-oriented guides: wiring, calibration, search disabling, firmware probing, BLE bridge build. - [Browse guides →](/guides/wiring/) - - - Complete firmware command inventory, NVS settings, GPIO pin maps, hardware specs. - [See reference →](/reference/firmware-variants/) - - - Software architecture, hardware platform internals, reverse-engineering methodology. - [Deep dives →](/understanding/architecture/) - - - ## Supported hardware Five Winegard dish variants are documented, with varying levels of testing: @@ -80,8 +116,29 @@ The Carryout G2 has the most complete documentation — over 100 firmware comman +## 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/) + + + 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. It's a living section that grows as the project evolves. +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.