diff --git a/CLAUDE.md b/CLAUDE.md index 71bd93f..f75a260 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -44,13 +44,15 @@ Five known Winegard dish variants documented by Gabe Emerson (KL1FI) / saveitfor | **Motor submenu** | `mot` | `motor` | `odu` then `mot` | N/A (`target` + `g`) | `mot` | | **Motor control** | `a ` | `a ` | `a ` | `g ` only | `a ` | | **Search kill** | `os` -> `kill Search` | `ngsearch` -> `s` -> `q` | `os` -> `kill Search` | N/A | NVS 20 (permanent disable) | -| **Boot signal** | `NoGPS` | `NoGPS` or `No LNB Voltage` | undocumented | N/A | undocumented | +| **Boot signal** | `NoGPS` | `NoGPS` or `No LNB Voltage` | undocumented | N/A | `Boot Complete` then `Loc Startup: IDU NOT Present` | | **Min elevation** | 15 deg (firmware) | 15 deg (firmware) | 12 deg (firmware) | 22 deg (firmware-enforced) | 18 deg (firmware) | | **Max elevation** | 90 deg | 90 deg | 75 deg (hardware cap!) | 73 deg (firmware default, NVS 102 override) | 65 deg (firmware) | | **Position query** | `a` -> `AZ = / EL =` | `a` -> `AZ = / EL =` | `a` -> `AZ = / EL =` | raw ints / 100 | `a` -> floats | | **Tested model** | LG-2112 | LG-2112 | SK2DISH | 2003 Carryout | Carryout G2 | -| **HAL version** | 0.0.00 | 2.05.003 | unknown | 1.00.065 | unknown | -| **Prompt char** | `>` (likely) | `>` (likely) | undocumented | undocumented | `>` (confirmed) | +| **HAL version** | 0.0.00 | 2.05.003 | unknown | 1.00.065 | 02.02.48 | +| **Prompt char** | `>` (likely) | `>` (likely) | undocumented | undocumented | `TRK>` / `MOT>` / `NVS>` (confirmed) | +| **Position format** | `AZ = / EL =` | `AZ = / EL =` | `AZ = / EL =` | raw ints / 100 | `Angle[0] = / Angle[1] =` | +| **DVB tuner** | unknown | unknown | unknown | unknown | BCM4515 (Broadcom) | ### Key Variant Differences @@ -61,9 +63,13 @@ Five known Winegard dish variants documented by Gabe Emerson (KL1FI) / saveitfor - **NVS `d` command** dumps all NVS values. Confirmed on Pro and Carryout G2; likely available on all variants. - **Carryout DIP switches:** All switches to off (up) may disable search mode, but behavior varies by unit. - **Carryout G2 uses `a` not `g`:** Unlike the 2003 Carryout, the G2 uses standard `a ` motor addressing and the `mot` submenu — protocol-compatible with the Trav'ler family. -- **Carryout G2 is RS-422 full-duplex:** Separate TX/RX pairs at 115200 baud via RJ-12 6P6C, vs. RS-485 half-duplex at 57600 on the Trav'ler variants. Requires a USB-to-RS422 converter (5V TTL). +- **Carryout G2 is RS-422 full-duplex:** Separate TX/RX pairs at 115200 baud via RJ-12 6P6C, vs. RS-485 half-duplex at 57600 on the Trav'ler variants. Tested with DSD TECH SH-U11 USB-to-RS422 adapter (FTDI FT232R). **Polarity matters** — A/B (or +/-) labeling is not standardized; if you get garbled data at the correct baud rate, swap the +/- wires on the RX pair. TX pair polarity swap causes the dish to not receive commands (silent failure). +- **Carryout G2 position format differs from Trav'ler:** Position query `a` in `MOT>` submenu returns `Angle[0] = 180.00` / `Angle[1] = 45.00` — not the `AZ = / EL =` format used by HAL 0.0.00 and HAL 2.05. The `CarryoutG2Protocol` parser needs to handle this format. +- **Carryout G2 firmware version 02.02.48** confirmed (Copyright 2013 - Winegard Company). Bootloader version 1.01. MCU: Kinetis (NXP ARM Cortex-M). DVB tuner: BCM4515 (Broadcom). +- **Carryout G2 boot sequence:** Bootloader → SPI init → Motor init (System=12Inch, master=40000 steps, slave=24960 steps, ratio=1.602564) → DVB tuner init (BCM4515) → NVS load → EL home (stall detect, 2s timeout) → AZ home (stall detect, 8s timeout) → `Antenna Facing Front` → `TRK>` prompt (if tracker disabled) or search start. +- **Carryout G2 cable wrap:** Confirmed from homing output: `wrap_min:-42333 wrap_max:2333` (centidegrees). Total range ~446.66°. - **Carryout G2 has `h ` homing:** Explicit motor home-to-reference command. Not documented on other variants. -- **Carryout G2 has DVB/RSSI:** Signal strength measurement via `dvb` submenu (`lnbdc odu` to enable LNA, `rssi ` to sample). Used for sky scanning / RF imaging. +- **Carryout G2 has DVB/RSSI:** Signal strength measurement via `dvb` submenu (`lnbdc odu` to enable LNA, `rssi ` to sample). Used for sky scanning / RF imaging. Atmospheric baseline measured at boot: ~494 (18V) / ~499 (13V) wideband. ## Hardware Specs (SK-1000) @@ -136,14 +142,20 @@ The physical connector is an RJ-25 (6P6C) on the Trav'ler or RJ-12 (6P6C) on the **Carryout G2 pinout (RJ-12, clip away, per Davidson's wiring guide):** -| Pin | Wire Color | RS-422 Function | -|-----|-----------|-----------------| -| 1 | White | GND (PE) | -| 2 | Red | TX+ (TA) — computer→dish | -| 3 | Black | TX- (TB) — computer→dish | -| 4 | Yellow | RX+ (RA) — dish→computer | -| 5 | Green | RX- (RB) — dish→computer | -| 6 | Blue | Not connected | +| Pin | Wire Color (Davidson) | Wire Color (confirmed) | RS-422 Function | +|-----|----------------------|----------------------|-----------------| +| 1 | White | Orange/White | GND (PE) | +| 2 | Red | Orange | TX+ (TA) — computer→dish | +| 3 | Black | Green/White | TX- (TB) — computer→dish | +| 4 | Yellow | Blue | RX+ (RA) — dish→computer | +| 5 | Green | Blue/White | RX- (RB) — dish→computer | +| 6 | Blue | Green | Not connected | + +**Note:** Wire colors vary by cable manufacturer. The "confirmed" column is from a standard +6P6C flat cable tested 2026-02-12. Always verify with a multimeter before connecting. +**Polarity is critical:** swapping +/- on the RX pair produces garbled data at the correct +baud rate (systematic bit inversion, not random noise). Swapping +/- on the TX pair causes +silent failure (dish doesn't respond because it can't decode the inverted framing). **Adapter chain by variant:** @@ -151,6 +163,7 @@ The physical connector is an RJ-25 (6P6C) on the Trav'ler or RJ-12 (6P6C) on the |---------|---------|-----------| | Trav'ler (Gabe's setup) | USB→RS232→RS485 (DTECH) | Pins 2-3 only (half-duplex) | | Carryout G2 (Davidson) | USB→RS422 (5V TTL) | Pins 2-5 (full-duplex) | +| Carryout G2 (confirmed) | DSD TECH SH-U11 USB→RS422 (FTDI FT232R) | Pins 1-5 (full-duplex + GND) | | Carryout G2 (ESP32) | ESP32 UART2→RS422 module (DIYables) | Pins 2-5 (full-duplex) | ### RS-422 Module Notes (DIYables MAX490) @@ -205,12 +218,24 @@ stow — fold dish flat (caution: modified feeds may not survive) ### Known NVS Indices -| Index | Setting | -|-------|---------| -| 20 | Disable tracker procedure (FALSE/TRUE) | -| 102 | Max elevation | -| 125 | Search minimum elevation | -| 127 | Safe minimum elevation | +Full dump in `docs/g2-nvs-dump.md` (firmware 02.02.48, captured 2026-02-12). + +| Index | Setting | Default | Notes | +|-------|---------|---------|-------| +| 20 | Disable Tracker Proc? | FALSE | Set TRUE to prevent TV satellite search on boot | +| 38 | Sleep Mode Timer Secs | 420 | 7 minutes before sleep | +| 41 | Satellite Scan Velocity | 55.00 | °/s during TV search | +| 80 | AZ Max Vel | 65.00 | °/s azimuth max velocity | +| 81 | AZ Max Accel | 400.00 | °/s² azimuth max acceleration | +| 83 | AZ Steps/Rev | 40000 | Stepper steps per full rotation | +| 85 | EL Max Vel | 45.00 | °/s elevation max velocity | +| 88 | EL Steps/Rev | 24960 | Stepper steps per full EL rotation | +| 101 | Minimum Elevation Angle | 18.00 | Firmware floor (degrees) | +| 102 | Maximum Elevation Angle | 65.00 | Firmware ceiling (degrees) | +| 103 | Elevation Home Angle | 65.00 | EL position after homing | +| 112 | Disable Dipswitch? | FALSE | Override physical DIP switches | +| 113 | Dipswitch Value | 101 | DirecTV config (ignored when tracker disabled) | +| 128-133 | AZ/EL PID Gains | varies | Kp/Kv/Ki tuning parameters | ### Error Messages diff --git a/docs/g2-nvs-dump.md b/docs/g2-nvs-dump.md new file mode 100644 index 0000000..0858f09 --- /dev/null +++ b/docs/g2-nvs-dump.md @@ -0,0 +1,164 @@ +# Carryout G2 NVS Dump + +**Firmware:** Version 02.02.48 (Copyright 2013 - Winegard Company) +**Date:** 2026-02-12 +**Connection:** DSD TECH SH-U11 USB RS-422 @ 115200 8N1 + +## NVS Values + +``` +Num Name Current Saved Default +---- -------------------------- ---------- ---------- ---------- + 0) Log ID's 0x00000007 0x00000007 0x00000007 + 1) Log Device 0x00000001 0x00000001 0x00000001 + 2) Debug 2nd Console Port 0 0 0 + 3) Debug 2nd Packet Port 0 0 0 + 4) Debug Port Connection 0 0 0 + 16) Pitch Deadband 0.00 0.00 0.00 + 17) Roll Deadband 0.00 0.00 0.00 + 18) Yaw Deadband 0.00 0.00 0.00 + 20) Disable Tracker Proc? TRUE TRUE FALSE ← MODIFIED + 21) Tracker Proc Run Mode 0 0 0 + 22) Conical Alpha Az 200 200 200 + 23) Conical Alpha El 200 200 200 + 24) Conical Radius 1.00 1.00 1.00 + 25) Conical Count Max 20 20 20 + 26) Conical Test Drift +0 +0 +0 + 27) Circle RPM 120 120 120 + 28) Circle Pts/Rev 6 6 6 + 32) Conical Az Clamp 8.00 8.00 8.00 + 33) Conical El Clamp 8.00 8.00 8.00 + 35) Motor Pts/Rev 72 72 72 + 36) Circle Az Radius 1.00 1.00 1.00 + 37) Circle El Radius 1.00 1.00 1.00 + 38) Sleep Mode Timer Secs 420 420 420 + 40) Motor Type 0 0 0 + 41) Satellite Scan Velocity 55.00 55.00 55.00 + 48) Motor Spiral Velocity 55.00 55.00 55.00 + 49) Motor Gear Ratio 0x00000000 0x00000000 0x00000000 + 63) GPS Heading Threshold 1.00 1.00 1.00 + 64) GPS Moving Threshold 5.00 MPH 5.00 MPH 5.00 MPH + 66) Spiral Signal In A Row Min +3 +3 +3 + 67) Spiral Signal In A Row Max +20 +20 +20 + 68) Signal Odd to Even Offset +0 +0 +0 + 69) Signal Offset 80 80 80 + 70) Signal Baseline Angle 65.00 65.00 65.00 + 71) Signal Re-Peak Degrade Percent 25 25 25 + 72) Gyro Sensitivity +1110 +1110 +1110 + 73) Gyro Filter Size +1 +1 +1 + 74) Gyro Calib Readings 100 100 100 + 75) Gyro Mount Type 1 1 1 + 76) Gyro Velocity Offset 4 4 4 + 77) Gyro Max Accel 600 600 600 + 80) AZ Max Vel 65.00 65.00 65.00 + 81) AZ Max Accel 400.00 400.00 400.00 + 82) AZ Home Velocity 55.00 55.00 55.00 + 83) AZ Steps/Rev 40000 40000 40000 + 84) AZ Direction +1 +1 +1 + 85) EL Max Vel 45.00 45.00 45.00 + 86) EL Max Accel 400.00 400.00 400.00 + 87) EL Home Velocity 45.00 45.00 45.00 + 88) EL Steps/Rev 24960 24960 24960 + 89) EL Direction +1 +1 +1 + 95) AZ Low current limit 0x0000ff0c 0x0000ff0c 0x0000ff0c + 96) AZ High current limit 0x0000ff30 0x0000ff30 0x0000ff30 + 97) EL Low current limit 0x0000ff0c 0x0000ff0c 0x0000ff0c + 98) EL High current limit 0x0000ff40 0x0000ff40 0x0000ff40 +101) Minimum Elevation Angle 18.00 18.00 18.00 +102) Maximum Elevation Angle 65.00 65.00 65.00 +103) Elevation Home Angle 65.00 65.00 65.00 +106) Az Stall Detect 78 78 78 +107) El Stall Detect 75 75 75 +108) Az Stall Samples 100 100 100 +109) El Stall Samples 100 100 100 +110) EL Home Current Limit 0x0000ff28 0x0000ff28 0x0000ff28 +111) AZ Home Current Limit 0x0000ff40 0x0000ff40 0x0000ff40 +112) Disable Dipswitch? FALSE FALSE FALSE +113) Dipswitch Value 101 101 101 +114) Dipswitch Front/Rear Mount 0 0 0 +115) Mount Offset Angle +0 +0 +0 +118) Signal Use LNB Clamp FALSE FALSE FALSE +128) AZ PID Kp +600 +600 +600 +129) AZ PID Kv +60 +60 +60 +130) AZ PID Ki +1 +1 +1 +131) EL PID Kp +250 +250 +250 +132) EL PID Kv +50 +50 +50 +133) EL PID Ki +1 +1 +1 +136) AZ PWM Stall Cnt 6 6 6 +137) EL PWM Stall Cnt 5 5 5 +143) Tracking Number 0 0 0 +``` + +## Key Parameters for Satellite Tracking + +| NVS | Name | Value | Notes | +|-----|------|-------|-------| +| 20 | Disable Tracker Proc? | TRUE | Prevents TV satellite search on boot | +| 83 | AZ Steps/Rev | 40000 | Centidegrees per revolution (400.00°) | +| 88 | EL Steps/Rev | 24960 | ~249.60° per revolution | +| 80 | AZ Max Vel | 65.00 | °/s azimuth max velocity | +| 85 | EL Max Vel | 45.00 | °/s elevation max velocity | +| 101 | Min Elevation | 18.00 | Firmware floor (degrees) | +| 102 | Max Elevation | 65.00 | Firmware ceiling (degrees) | +| 103 | EL Home Angle | 65.00 | Where EL homes to on startup | +| 128-133 | PID Gains | varies | AZ/EL motor PID tuning parameters | + +## Boot Sequence Observed + +``` +Version 02.02.48 +Copyright 2013 - Winegard Company +Boot Complete + +Loc Startup: IDU NOT Present +app_dipswitch:101 +Primary Update: 10100 +Alternate Update: 11900 +Toggle Ability Update: 0 +Alternate2 Update: 0 +Sat Provider Update: 1 +DVB: id:0000, lon:101.00E +Tuner = WIDE +Signal offset = 80 +Signal baseline angle = 6500 +Signal Re-Peak Pct = 25 +NVS Status: 0 Sleep: 420 Dipswitch: 101 +Sleep: 420 NVS: 420 +NoGpsStartUp: 721 +STATIONARY MODE +Enabled LNB ODU 18V +GPS Not Found +``` + +## Homing Sequence + +After boot, the dish homes both motors (EL first, then AZ) using stall detection: + +``` +MotorHome:1 timeout:2000 ← EL motor homing +Home TwelInch El Velocity: 4500 +EL Stall Timeout +El Home Angle: 6500 + +MotorHome:0 timeout:8000 ← AZ motor homing +Home TwelInch Az +End MotorAzStall:part1 +Antenna Facing Front +home:0 wrap_pos:0 wrap_min:-42333 wrap_max:2333 +``` + +## Cable Wrap Limits + +From homing output: `wrap_min:-42333 wrap_max:2333` +- In centidegrees: -423.33° to +23.33° from home position +- Total range: 446.66° (~1.24 full rotations) + +## Satellite Configuration + +``` +DVB: id:0000, lon:101.00E ← DirecTV 101°W (stored as East longitude) +Primary Update: 10100 ← 101.00° in centidegrees +Alternate Update: 11900 ← 119.00° +Sat Provider Update: 1 ← Provider ID +Dipswitch Value: 101 ← DirecTV configuration +```