diff --git a/public/screenshots/tui-collage.png b/public/screenshots/tui-collage.png new file mode 100644 index 0000000..25bfe04 Binary files /dev/null and b/public/screenshots/tui-collage.png differ diff --git a/public/screenshots/tui-control.png b/public/screenshots/tui-control.png new file mode 100644 index 0000000..96c9be8 Binary files /dev/null and b/public/screenshots/tui-control.png differ diff --git a/public/screenshots/tui-dashboard.png b/public/screenshots/tui-dashboard.png new file mode 100644 index 0000000..bed8621 Binary files /dev/null and b/public/screenshots/tui-dashboard.png differ diff --git a/public/screenshots/tui-signal.png b/public/screenshots/tui-signal.png index efdfea1..301b586 100644 Binary files a/public/screenshots/tui-signal.png and b/public/screenshots/tui-signal.png differ diff --git a/public/screenshots/tui-system.png b/public/screenshots/tui-system.png index f637e48..9d43b2f 100644 Binary files a/public/screenshots/tui-system.png and b/public/screenshots/tui-system.png differ diff --git a/src/content/docs/guides/tui.mdx b/src/content/docs/guides/tui.mdx index 0f9b8b9..f9b0037 100644 --- a/src/content/docs/guides/tui.mdx +++ b/src/content/docs/guides/tui.mdx @@ -12,6 +12,8 @@ import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components'; Mission control for less than dinner for two. +![Birdcage TUI — all screens shown in demo mode](/screenshots/tui-collage.png) + Somewhere inside every Winegard Carryout G2 is a 2013-vintage NXP Cortex-M4 running firmware 02.02.48, driving two Allegro A3981 stepper motors and a Broadcom BCM4515 DVB-S2 tuner through 12 submenus and over 100 undocumented commands. In 2026, it takes commands from a Python TUI built on @@ -54,64 +56,63 @@ does something. You don't need a dish on the roof to try it. ## Five Screens -Navigate between screens with **F1**–**F5** keys or click the sidebar buttons. +Navigate between screens with **F1**–**F5** keys or click the tab bar at the top. The device status bar at the bottom persists across all screens — connection state, serial port, firmware version, and current menu prompt are always visible. -### F1 — Position +### F1 — Dashboard -![Birdcage TUI Position screen showing compass rose, AZ/EL readout, and sparkline history](/screenshots/tui-position.png) +![Birdcage TUI Dashboard screen showing action cards for dish operations](/screenshots/tui-dashboard.png) -The position screen is where you point the dish. A compass rose shows current azimuth -with a bearing indicator, while AZ and EL sparklines track movement history over time. -The numeric readout at top shows position to hundredths of a degree — the G2's stepper -resolution is 0.009° azimuth (40,000 steps/rev) and 0.014° elevation (24,960 steps/rev). +The launch pad. Four action cards — **Point Dish**, **Monitor Signal**, **Scan Sky**, and +**Stow** — each jump to the relevant screen with a single click. It's the screen you see +on connect, and the one you come back to when you're done adjusting. -The AZ and EL sparklines give you immediate visual feedback: flat lines mean the dish -is parked, slopes mean it's slewing, and the amplitude of the noise floor after arrival -tells you how much stepper backlash you're dealing with. +### F2 — Control -### F2 — Signal +![Birdcage TUI Control screen showing compass rose, step size selector, and manual controls](/screenshots/tui-control.png) + +Where you actually point the dish. Three modes across the top: **Manual**, **Presets**, and **Track**. + +In Manual mode, a compass rose shows current azimuth with a bearing indicator. AZ and EL +readouts update live — the G2's stepper resolution is 0.009° azimuth (40,000 steps/rev) +and 0.014° elevation (24,960 steps/rev). Arrow keys nudge the dish, with a step size +selector (0.1° to 10°) that multiplies each keypress. AZ and EL sparklines give immediate +visual feedback: flat lines mean the dish is parked, slopes mean it's slewing, and the noise +floor after arrival tells you how much stepper backlash you're dealing with. + +Below the sparklines, velocity controls let you tune motor speed on the fly — set AZ and EL +max velocity in °/s and hit Apply. The firmware stores these in STEP> as microsteps/sec, +but the TUI handles the conversion. Home AZ, Home EL, and E/R (engage/release motors) +round out the bottom toolbar. + +### F3 — Signal ![Birdcage TUI Signal screen showing RSSI gauge, DVB and ADC sparklines](/screenshots/tui-signal.png) Signal strength from two sources: the BCM4515 DVB tuner's RSSI (bounded, averaged) -and the raw ADC reading (single-shot). The gauge uses sub-character Unicode block elements -(▏▎▍▌▋▊▉█) for smooth visual resolution. Below the gauge, DVB RSSI and ADC RSSI -sparklines show signal trends over time — useful for peaking during manual dish adjustment. +and the raw ADC reading (single-shot). Three modes: **Monitor** (live gauges), **Sweep** +(automated peaking), and **Sky Map** (2D RSSI heatmap from `azscanwxp` scans). -The sample counter and iteration display at bottom track measurement throughput. On a -live dish with the LNA enabled (`lnbdc odu`), you'll see the noise floor sit around -RSSI 500 (ADC) or 230–490 (DVB, polarity-dependent). - -### F3 — Scan - -The scan screen wraps the firmware's `azscanwxp` command — Davidson's radio telescope -mode. Define an AZ×EL grid, set the step resolution, and watch the sky heatmap fill -in with RSSI-colored cells as the dish sweeps. Results export to CSV for post-processing -into proper sky maps. - - +In Monitor mode, the gauge uses sub-character Unicode block elements (▏▎▍▌▋▊▉█) for +smooth visual resolution. The Receiver panel alongside shows tuner frequency, symbol rate, +LNB voltage/polarity, lock status, and SNR. On a live dish with the LNA enabled +(`lnbdc odu`), the noise floor sits around RSSI 500 (ADC) or 230–490 (DVB, polarity-dependent). ### F4 — System -![Birdcage TUI System screen showing firmware ID, A3981 diagnostics, motor dynamics, and NVS table](/screenshots/tui-system.png) +![Birdcage TUI System screen showing firmware ID, A3981 diagnostics, and motor dynamics](/screenshots/tui-system.png) -The system dashboard. Top row shows the firmware identity banner: version 02.02.48, -K60 MCU at 96 MHz, antenna ID "12-IN G2". Below that, two side-by-side panels: +The system dashboard with three tabs: **Hardware**, **Motors**, and **NVS Config**. -- **A3981 Diagnostics** — fault pin status for both stepper drivers (AZ/EL DIAG: OK or FAULT), - plus step size mode (AUTO means the driver handles microstepping transitions automatically). -- **Motor Dynamics** — max velocity and acceleration for each axis. The G2 defaults to - 65.0°/s azimuth, 45.0°/s elevation, with 400.0°/s² acceleration — fast enough to track - LEO satellites at medium altitudes. +The Hardware tab shows the firmware identity banner — version 02.02.48, K60 MCU at 96 MHz, +antenna ID "12-IN G2" — and A3981 stepper driver diagnostics: fault pin status for both +drivers (AZ/EL DIAG: OK or FAULT), step size mode (AUTO means the driver handles +microstepping transitions automatically), and current control mode. -The NVS Table at the bottom is a scrollable browser of all 134 non-volatile storage values. -Current, saved, and default columns let you see what's been modified. The "Refresh NVS" -and "Export NVS JSON" buttons at the bottom do what you'd expect. +The NVS Config tab provides a scrollable browser of all 134 non-volatile storage values. +Current, saved, and default columns let you see what's been modified. Refresh and Export +buttons at the bottom do what you'd expect. ### F5 — Console