# ACU Controller Protocol Documentation ## Overview This document describes the TCP/IP communication protocol used by the Intellian Marine Satellite Antenna Control Unit (ACU) controller software. The protocol is referred to as "UIF" (User Interface) protocol internally. ## Protocol Structure ### Message Format ``` {XX param1 param2 ... paramN}C ``` - **Start delimiter**: `{` (ASCII 123 / 0x7B) - **Command code**: 2 ASCII characters (XX) - **Parameters**: Space-separated integer values - **End delimiter**: `}` (ASCII 125 / 0x7D) - **Checksum**: Single character appended after closing brace ### Buffer Size - Maximum buffer size: 240 bytes - Maximum message size: 80 bytes ### Checksum Calculation The checksum is a single ASCII character appended after the closing brace `}`. It is calculated over the message content from `{` to `}` inclusive. **C# Implementation** (from ARMSUtility.dll): ```csharp public static char UIF_CheckSum(StringBuilder sb, int length) { int num = 0; for (int index = 0; index < length; ++index) num = (num + sb[index] - 32) % 95; return (char)(num + 32); } ``` **Algorithm**: 1. Initialize `num = 0` 2. For each character in the message (from `{` to `}` inclusive): - `num = (num + char_value - 32) % 95` 3. Return `(char)(num + 32)` as the checksum character **Key difference**: The subtraction of 32 happens BEFORE adding to `num`, and the modulo is applied to the entire running sum. **Python Implementation**: ```python def uif_checksum(message: str) -> str: """Calculate UIF checksum for message (including braces).""" num = 0 for char in message: num = (num + ord(char) - 32) % 95 return chr(num + 32) ``` **Example**: ``` Message: {QV} Characters: '{' (123), 'Q' (81), 'V' (86), '}' (125) Calculation: num = 0 num = (0 + 123 - 32) % 95 = 91 % 95 = 91 num = (91 + 81 - 32) % 95 = 140 % 95 = 45 num = (45 + 86 - 32) % 95 = 99 % 95 = 4 num = (4 + 125 - 32) % 95 = 97 % 95 = 2 checksum = chr(2 + 32) = chr(34) = '"' Final message: {QV}" ``` **Message Parsing** (from ARMSUtility.Data.ReadUIFData): - Start character (stc): `{` (0x7B) - End character (enc): `}` (0x7D) - Parser looks for `{`, collects bytes until `}`, then reads one more byte as checksum - Checksum is validated by comparing received checksum with calculated checksum --- ## Command Input Parameters This section details what parameters to send with each command TO the ACU. ### Operation Commands (No Parameters) | ID | Code | Command | Parameters | Description | |----|------|---------|------------|-------------| | 0 | `OR` | UIF_OP_RESTART | None | Restart antenna system | | 1 | `OS` | UIF_OP_SETUP | None | Enter setup mode | | 4 | `QV` | UIF_REQUEST_SIGNAL_LEVEL | None | Request signal level | | 5 | `QS` | UIF_REQUEST_ANT_STATUS | None | Request antenna status | | 7 | `QP` | UIF_REQUEST_ANT_POS | None | Request AZ/EL position | | 10 | `QG` | UIF_REQUEST_VOLTAGE | None | Request voltage readings | **Example**: `{OR}checksum` - Restart the antenna --- ### Satellite Selection Commands #### Select Satellite (`LT` - ID 2) **Format**: `{LT index sub_cmd}checksum` | Index | Field | Description | Values | |-------|-------|-------------|--------| | 0 | Satellite Index | Satellite to select | 1-100 (1-based) | | 1 | Sub-command | Action type | 0=Select, 1=Save | **Example**: `{LT 3 0}` - Select satellite #3 --- #### Set Tracking Satellite (`ST` - ID 3) **Format**: `{ST index}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | Satellite Index | Satellite to track (1-based) | --- ### GPS Commands #### Set GPS Position (`SG` - ID 13) **Format**: `{SG longitude ew latitude ns}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Longitude | Longitude value | x100 (0-18000) | | 1 | E/W | East/West flag | 0=East, 1=West | | 2 | Latitude | Latitude value | x100 (0-9000) | | 3 | N/S | North/South flag | 2=South, 3=North | **Example**: `{SG 12750 0 3550 3}` = 127.50°E, 35.50°N **Validation**: - Longitude: 0.00° to 180.00° (0-18000) - Latitude: 0.00° to 90.00° (0-9000) --- #### Set Heading (`GS` - ID 88) **Format**: `{GS sub_cmd value unused}checksum` | Sub-cmd | Field | Description | Encoding | |---------|-------|-------------|----------| | 1 | Heading | Ship heading | x100 (0-35999) | | 2 | Device | Heading device type | See device types | | 7 | Baudrate | NMEA baudrate index | 0-n | **Set Heading Example**: `{GS 1 18050 0}` = Set heading to 180.50° **Set Device Example**: `{GS 2 1 0}` = Set device to NMEA --- ### Antenna Movement Commands #### Go To Position (`GO` - ID 29) **Format**: `{GO azimuth elevation}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Azimuth | Target azimuth | x100 signed | | 1 | Elevation | Target elevation | x100 signed | **Example**: `{GO 18050 4525}` = Go to AZ 180.50°, EL 45.25° --- #### Move Step (`MO` - ID 30) **Format**: `{MO direction step_size}checksum` | Index | Field | Description | Values | |-------|-------|-------------|--------| | 0 | Direction | Movement direction | 0-5 | | 1 | Step Size | Movement amount | x100 | **Direction Values**: | Value | Direction | Description | |-------|-----------|-------------| | 0 | EL Up | Elevation increase | | 1 | EL Down | Elevation decrease | | 2 | AZ CW | Azimuth clockwise | | 3 | AZ CCW | Azimuth counter-clockwise | | 4 | Skew - | Skew negative | | 5 | Skew + | Skew positive | **Example**: `{MO 0 100}` = Move elevation up 1.00° --- #### Move Skew (`MS` - ID 31) **Format**: `{MS direction step_size}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | Direction | 4=negative, 5=positive | | 1 | Step Size | Movement in x100 | --- ### Power Control Commands #### Set LNB Power (`SW` - ID 26) **Format**: `{SW mode}checksum` | Index | Field | Description | Values | |-------|-------|-------------|--------| | 0 | Mode | LNB power mode | 0-3 | **Power Modes**: | Value | Voltage | Tone | Description | |-------|---------|------|-------------| | 0 | 13V | Off | Vertical, Low band | | 1 | 18V | Off | Horizontal, Low band | | 2 | 13V | 22kHz | Vertical, High band | | 3 | 18V | 22kHz | Horizontal, High band | --- #### Set DiSEqC (`SQ` - ID 27) **Format**: `{SQ mode}checksum` | Index | Field | Description | Values | |-------|-------|-------------|--------| | 0 | Mode | DiSEqC mode | 0=Off, 1=Band, 2=Satellite | --- ### Skew/Polarization Commands #### Calibrate Skew (`CK` - ID 28) **Format**: `{CK mode}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | Mode | Calibration mode (0=normal) | --- #### Set Skew Offset (`KO` - ID 15) **Format**: `{KO offset_al offset_bl offset_ah offset_bh offset_c}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Offset A-Low | Ku Linear A, Low band | x10 signed | | 1 | Offset B-Low | Ku Linear B, Low band | x10 signed | | 2 | Offset A-High | Ku Linear A, High band | x10 signed | | 3 | Offset B-High | Ku Linear B, High band | x10 signed | | 4 | Offset C | C-band offset | x10 signed | --- ### Local Frequency Commands #### Set Local Frequency (`SL` - ID 16) **Format**: `{SL freq_low freq_high}checksum` | Index | Field | Description | Unit | |-------|-------|-------------|------| | 0 | Freq Low | LO for low band | MHz | | 1 | Freq High | LO for high band | MHz | **Common LNB Configurations**: | Type | Low | High | |------|-----|------| | Universal | 9750 | 10600 | | Americas | 10500 | 11250 | | Single | same | same | --- ### Satellite Configuration Commands #### Edit Satellite Info (`EI` - ID 18) **Format**: `{EI index longitude ew nid_vl nid_hl nid_vh nid_hh name1 name2}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Index | Satellite index | 0-99 | | 1 | Longitude | Orbital position | x100 | | 2 | E/W | Direction | 0=East, 1=West | | 3 | NID V-Low | Network ID (V, Low) | Hex | | 4 | NID H-Low | Network ID (H, Low) | Hex | | 5 | NID V-High | Network ID (V, High) | Hex | | 6 | NID H-High | Network ID (H, High) | Hex | | 7 | Name 1 | Chars 1-4 | Packed string | | 8 | Name 2 | Chars 5-8 | Packed string | --- #### Edit Tracking Info (`ET` - ID 20) **Format**: `{ET index freq_vl freq_hl freq_vh freq_hh sym_vl sym_hl sym_vh sym_hh verify power}checksum` | Index | Field | Description | Unit | |-------|-------|-------------|------| | 0 | Index | Satellite index | - | | 1-4 | Frequencies | V-Low, H-Low, V-High, H-High | MHz | | 5-8 | Symbols | Symbol rates per band/pol | kSym/s | | 9 | Verify | Verification type | 0-5 | | 10 | Power | LNB voltage control | 0-3 | --- #### Set Satellite Pair (`SP` - ID 17) **Format**: `{SP pair_a pair_b pair_a_diseqc pair_b_diseqc pair_c}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | Pair A Normal | Satellite A index | | 1 | Pair B Normal | Satellite B index | | 2 | Pair A DiSEqC | Satellite A (DiSEqC mode) | | 3 | Pair B DiSEqC | Satellite B (DiSEqC mode) | | 4 | Pair C Normal | Satellite C (triple mode) | --- ### Block Zone Commands #### Set Block Zone (`BK` - ID 92) **Format**: `{BK zone_index active az_start az_end el_limit}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Zone Index | Zone number | 0-4 | | 1 | Active | Enable/disable | 0=Off, 1=On | | 2 | AZ Start | Start azimuth | x100 | | 3 | AZ End | End azimuth | x100 | | 4 | EL Limit | Elevation threshold | x100 | **Example**: `{BK 0 1 9000 18000 3000}` = Zone 0, active, AZ 90°-180°, EL<30° --- ### Diagnosis Commands #### Request Diagnosis (`QD` - ID 8) **Format**: `{QD mode test_id}checksum` | Index | Field | Description | Values | |-------|-------|-------------|--------| | 0 | Mode | Diagnosis mode | 0=All off, 1=All on, 2=Select | | 1 | Test ID | Specific test | 101-116 | **Test IDs**: | ID | Component | |----|-----------| | 101 | Communication | | 102 | AZ Motor | | 103 | EL Motor | | 104 | CL Motor | | 105 | AZ Encoder | | 106 | CL Encoder | | 107 | Gyro | | 108 | Tilt Sensor | | 109 | Sensor Box | | 110 | LNB | | 111 | Skew | | 112 | Sub-reflector | | 113 | Antenna Power | | 114 | ACU Power | | 115 | Receiver | | 116 | Home Sensor | --- ### Information Request Commands #### Request Antenna Info (`QI` - ID 6) **Format**: `{QI type}checksum` | Index | Field | Description | Values | |-------|-------|-------------|--------| | 0 | Info Type | Information type | 0=Basic, 6=All | --- #### Request All Info (`QA` - ID 123) **Format**: `{QA type}checksum` | Index | Field | Description | Values | |-------|-------|-------------|--------| | 0 | Type | Request type | 6=Full dump | **Note**: This triggers a stream of multiple response messages (NN, NS, NW, Nn, NG, Ni, NL, NI, NT, etc.) --- ### Factory/Default Commands #### Set Default (`SD` - ID 11) **Format**: `{SD mode}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | Mode | Reset type (1=full factory reset) | --- #### Set Default Without Offset (`Sd` - ID 12) **Format**: `{Sd mode}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | Mode | Reset type (preserves calibration offsets) | --- ### Modem Commands #### Modem Protocol (`MP` - ID 90) **Format**: `{MP sub_cmd p1 p2 p3 p4 p5 p6}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | Sub-command | Protocol type | | 1-6 | Data | Protocol-specific parameters | --- ### BUC Control Commands #### BUC Interface (`BC` - ID 124) **Format**: `{BC sub_cmd p1 p2 p3 p4 p5 p6 p7 p8 p9}checksum` | Sub-cmd | Command | Parameters | |---------|---------|------------| | 0 | Get Info | None | | 1 | TX On/Off | p1=0/1 | | 2 | Attenuation | p1=level | | 3 | Power | p1=state | | 100 | Path Select | p1=path | | 101 | BUC Type | p1=manufacturer | --- ### Stabilizer Commands #### Stabilizer Job (`BJ` - ID 80) **Format**: `{BJ sub_cmd p1 p2 p3}checksum` | Sub-cmd | Mode | Description | |---------|------|-------------| | 0 | Idle | Stop stabilization | | 1 | Init EL | Go to initial elevation | | 2 | Home AZ | Go to home azimuth | | 3-5 | Search | Search phases 1-3 | | 6 | Stabilize | Active stabilization | | 7 | Go Sat | Go to satellite position | | 8 | Go Abs | Go to absolute position | | 15 | Diagnosis | Run diagnostics | | 16 | Unwrap | AZ unwrap operation | --- ### Tracking Parameter Commands #### Set Tracking Parameters (`Vt` - ID 95) **Format**: `{Vt sub_cmd p1 p2 p3 p4 p5 p6 p7 p8 p9}checksum` | Sub-cmd | Function | Parameters | |---------|----------|------------| | 5 | Search Params | wait_time, step, range[6] | | 8 | Bow Offset | enable, mode, offset | | 9 | Conical Range | az_range, el_range | --- ## Command Quick Reference Table | ID | Code | Command | Params | Description | |----|------|---------|--------|-------------| | 0 | `OR` | Restart | 0 | Restart system | | 1 | `OS` | Setup | 0 | Enter setup mode | | 2 | `LT` | Select Sat | 2 | index, sub_cmd | | 3 | `ST` | Set Track | 1 | index | | 4 | `QV` | Req Signal | 0 | Request signal level | | 5 | `QS` | Req Status | 0 | Request status | | 6 | `QI` | Req Info | 1 | type | | 7 | `QP` | Req Pos | 0 | Request position | | 8 | `QD` | Req Diag | 2 | mode, test_id | | 10 | `QG` | Req Voltage | 0 | Request voltages | | 11 | `SD` | Set Default | 1 | mode | | 13 | `SG` | Set GPS | 4 | lon, ew, lat, ns | | 15 | `KO` | Set Skew | 5 | offsets[5] | | 16 | `SL` | Set LO Freq | 2 | freq_low, freq_high | | 17 | `SP` | Set Pair | 5 | pair indices | | 18 | `EI` | Edit Sat | 9 | sat info fields | | 20 | `ET` | Edit Track | 11 | tracking fields | | 26 | `SW` | Set Power | 1 | mode | | 27 | `SQ` | Set DiSEqC | 1 | mode | | 28 | `CK` | Cal Skew | 1 | mode | | 29 | `GO` | Goto Pos | 2 | az, el | | 30 | `MO` | Move Step | 2 | direction, step | | 31 | `MS` | Move Skew | 2 | direction, step | | 88 | `GS` | Gyro Set | 3 | sub_cmd, value, unused | | 92 | `BK` | Block Zone | 5 | zone config | | 123 | `QA` | Req All | 1 | type (6=full) | | 124 | `BC` | BUC Ctrl | 10 | sub_cmd + data | --- ## Command Reference ### Operation Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_OP_RESTART | `OR` | 0 | Restart the antenna system | | UIF_OP_SETUP | `OS` | 0 | Enter setup mode | | UIF_OPERATION_COMMAND | `OC` | 3 | General operation command | ### Query/Request Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_REQUEST_SIGNAL_LEVEL | `QV` | 0 | Request current signal level | | UIF_REQUEST_ANT_STATUS | `QS` | 0 | Request antenna status | | UIF_REQUEST_ANT_INFO | `QI` | 1 | Request antenna information | | UIF_REQUEST_ANT_POS | `QP` | 0 | Request antenna position (AZ/EL) | | UIF_REQUEST_DIAGNOSIS | `QD` | 2 | Request diagnostic information | | UIF_REQUEST_PATTERN | `QT` | 2 | Request pattern data | | UIF_REQUEST_VOLTAGE | `QG` | 0 | Request voltage readings | | UIF_REQUEST_ANT_INFO_ALL | `QA` | 1 | Request all antenna information | ### Skew/Polarization Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SET_SKEW_ANGLE | `SK` | 0 | Set skew angle | | UIF_SET_SKEW_OFFSET | `KO` | 5 | Set skew offset values | | UIF_SET_SKEW_OFFSET_TABLE | `KT` | 13 | Set skew offset lookup table | | UIF_SEND_CUR_SKEW_ANGLE | `TK` | 1 | Report current skew angle | | UIF_SEND_SKEW_ANGLES | `NK` | 3 | Report skew angles | | UIF_SKEW_DATA | `sk` | 6 | Skew data information | ### Frequency and LNB Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SET_LOCAL_FREQUENCY | `SL` | 2 | Set LNB local oscillator frequency | | UIF_SEND_LOCAL_FREQUENCY | `NL` | 3 | Report local frequency settings | | UIF_MULTIPLE_LOCAL_FREQUENCY | `Vl` | 5 | Configure multiple local frequencies | #### LNB Local Frequency Constants (MHz) - Ku-band Low: 9750 - Ku-band High: 10600 - C-band: 5150 - Ka-band options: 16750, 16800, 17400, 18250 ### Antenna Parameter Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SET_ANT_PARAMETER | `SA` | 3 | Set antenna parameters | | UIF_SET_ANTENNA_PARAMETER | `Sa` | 3 | Set antenna parameters (alternate) | | UIF_SET_CONTROL_PARAMETER | `SC` | 7 | Set control loop parameters | | UIF_SET_ANT_FLAG | `FG` | 3 | Set antenna flags | | UIF_SEND_ANT_PARAMETER | `NR` | 3 | Report antenna parameters | | UIF_SEND_CONTROL_PARAMETER | `NC` | 7 | Report control parameters | | UIF_SEND_ANTENNA_PARAMETER | `Np` | 3 | Report antenna parameters | | UIF_SEND_ANT_FLAG | `NF` | 3 | Report antenna flags | ### Signal Detection Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_FIND_SYMBOL | `FS` | 2 | Find DVB symbol | | UIF_FIND_OFFSET | `FO` | 2 | Find signal offset | | UIF_FIND_NOISE_LEVEL | `FN` | 2 | Find noise floor level | | UIF_SEND_SYMBOL | `SS` | 1 | Report symbol detection result | | UIF_SEND_OFFSET | `SO` | 2 | Report offset values | | UIF_SEND_NOISE_LEVEL | `SN` | 3 | Report noise level | ### Power and DiSEqC Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SET_POWER | `SW` | 1 | Set LNB power (0=off, 1=on) | | UIF_SET_DISEQC | `SQ` | 1 | Set DiSEqC mode | | UIF_SEND_POWER | `Nw` | 2 | Report power status | | UIF_SEND_DISEQC | `NQ` | 1 | Report DiSEqC status | | UIF_DISEQC_12 | `Di` | 3 | DiSEqC 1.2 commands | #### DiSEqC Modes - 0: Not used - 1: Band switching - 2: Satellite switching ### Status Response Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SEND_NUM_SAT | `NN` | 1 | Report number of satellites in database | | UIF_SEND_SELECT_TR_SAT | `NS` | 1 | Report selected tracking satellite | | UIF_SEND_SIGNAL_LEVEL | `NV` | 1 | Report signal level (0-800 scale) | | UIF_SEND_AGC_LOCK | `Nv` | 2 | Report AGC and lock status | | UIF_SEND_ANT_STATUS | `NA` | 1 | Report antenna status | | UIF_SEND_ANT_INFORMATION | `Ni` | 6 | Report antenna information | | UIF_SEND_ANT_POS | `AP` | 2 | Report antenna position | | UIF_SEND_AXIS_RANGE | `AX` | 4 | Report axis range limits | #### Antenna Status Values | Value | Status | |-------|--------| | -1 | Unknown | | 0 | Setup Mode | | 1 | Searching | | 2 | Tracking | | 3 | Unwrap | | 4 | Initialize | | 5 | Diagnosis | | 6 | ACU Initialize | | 7 | Sleep Mode | | 8 | Search Phase 1 | | 9 | Search Phase 2 | | 10 | Search Phase 3 | | 11 | Block Zone | | 12 | Communication Error | | 13 | Pointing | ### Version and Identity Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SEND_SW_VERSION | `NW` | 3 | Report software version | | UIF_SEND_PRODUCT_NAME | `Nn` | 6 | Report product name | | UIF_SET_PRODUCT_NAME | `Sn` | 6 | Set product name | | UIF_SET_SERIAL_NO | `TS` | 4 | Set serial number | | UIF_SEND_SERIAL_NO | `EN` | 4 | Report serial number | | UIF_SEND_NID | `ID` | 1 | Report Network ID | | UIF_SEND_SW_UNICODE | `SU` | 5 | Report software version (Unicode) | ### Satellite Information Response Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SEND_SAT_INFO | `NI` | 9 | Report satellite information | | UIF_SEND_SAT_INFO_SPARE | `Nu` | 9 | Report spare satellite info | | UIF_SEND_TR_INFO | `NT` | 11 | Report tracking information | | UIF_SEND_TR_INFO_SPARE | `NU` | 11 | Report spare tracking info | | UIF_SEND_PAIR_SAT | `NP` | 5 | Report satellite pair settings | ### Tracking Parameter Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_TRACKING_PARAMETER | `Vt` | 10 | Ku-band tracking parameters | | UIF_TRACKING_PARAMETER_C | `Ct` | 10 | C-band tracking parameters | | UIF_TRACKING_PARAMETER_C_KU | `CT` | 7 | Combined C/Ku tracking parameters | | UIF_TRACKING_PARAMETER_SCAN_OFFSET | `CS` | 7 | Scan offset tracking parameters | | UIF_TRACKING_PARAMETER_KA | `vt` | 10 | Ka-band tracking parameters | ### DVB/NBD Information Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SAT_DVB_INFO | `Vd` | 10 | DVB satellite info (Ku-band) | | UIF_SAT_DVB_INFO_C | `Cd` | 10 | DVB satellite info (C-band) | | UIF_SAT_DVB_INFO_LONG | `vD` | 13 | Extended DVB info (Ku-band) | | UIF_SAT_DVB_INFO_LONG_C | `cD` | 13 | Extended DVB info (C-band) | | UIF_SAT_DVB_INFO_MEO | `VM` | 12 | DVB info for MEO satellites | | UIF_SAT_DVB_INFO_EXT | `VE` | 12 | Extended DVB information | | UIF_NBD_INFO | `Vn` | 8 | Narrow Band Detection info | | UIF_NBD_INFO_C | `Cn` | 8 | NBD info (C-band) | | UIF_SAT_INFO_C_KU | `CI` | 8 | Combined C/Ku satellite info | ### Gyro/Sensor Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_GYRO_REQUEST | `GR` | 2 | Request gyro data | | UIF_GYRO_SEND | `GN` | 7 | Send gyro data | | UIF_GYRO_SET | `GS` | 3 | Set gyro parameters | | UIF_SENSOR_DATA | `sd` | 9 | Sensor data response | #### Gyro Sub-Commands - 0: Gyro status - 1: Heading data - 2: Heading device type - 3: Compass information - 4: NMEA input device - 5: NMEA output sentence - 6: All gyro data - 7: NMEA baudrate ### Stabilizer Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_STAB_JOB_COMMAND | `BJ` | 4 | Stabilizer job command | | UIF_STAB_SET_STATUS | `BS` | 3 | Set stabilizer status | | UIF_STAB_SET_PARAMETER | `BP` | 10 | Set stabilizer parameters | | UIF_STAB_SET_TARGET_OFFSET | `BT` | 3 | Set stabilizer target offset | #### Stabilizer Work Modes | Value | Mode | |-------|------| | 0 | Idle | | 1 | Go to initial EL position | | 2 | Go to home AZ position | | 3-5 | Search phases 1-3 | | 6 | Stabilization | | 7 | Go to satellite position | | 8 | Go to absolute position | | 9 | Velocity control | | 10 | Check sensor box | | 11 | Check tilt bias | | 15 | Diagnosis | | 16 | Unwrap | ### PCU (Power Control Unit) Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_PCU_JOB_COMMAND | `CJ` | 4 | PCU job command | | UIF_PCU_SET_PARAMETER | `CP` | 2 | Set PCU parameter | ### Modem Interface Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_MODEM_REQUEST | `MR` | 2 | Request modem data | | UIF_MODEM_PROTOCOL | `MP` | 7 | Configure modem protocol | | UIF_SEND_MODEM_TX_ENABLE | `TX` | 1 | Report TX enable status | #### Supported Modem Types - 0: User-defined - 1: iDirect Console - 2: iDirect OpenAMIP - 3: Comtech Console - 4: Comtech ROSS - 5: Hughes - 6: SatLink Serial - 7: SatLink VACP - 8: Gilat - 9: iPSTAR - 10: G5 - 11: Newtec AMIP ### TX Block Zone Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_BLOCK_ZONE | `BK` | 5 | Configure TX block zone | #### Block Zone Parameters 1. Zone index (0-4) 2. Active flag (0=disabled, 1=enabled) 3. Azimuth start angle (x100) 4. Azimuth end angle (x100) 5. Elevation threshold (x100) ### BUC (Block Up Converter) Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_BUC_INTERFACE | `BC` | 10 | BUC interface commands | #### BUC Sub-Commands | Value | Command | |-------|---------| | 0 | Get BUC info | | 1 | TX on/off | | 2 | Attenuation setting | | 3 | Power control | | 4 | Version info | | 5 | Status | | 6 | Temperature | | 100 | Path selection | | 101 | BUC type | #### Supported BUC Manufacturers - 0: Codan - 1: NJRC - 2: Comtech - 3: Terrasat - 4: Teledyne - 5: Mission Microwave - 10: L-band HPA ### Diagnostic Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SEND_DIAGNOSIS | `ND` | 2 | Report diagnosis result | | UIF_DIAGNOSIS_RESULT | `DD` | 10 | Full diagnosis result | | UIF_DIAGNOSIS | `dt` | 10 | Diagnosis data | #### Diagnosis Test IDs | ID | Test | |----|------| | 101 | Communication | | 102 | Motor AZ | | 103 | Motor EL | | 104 | Motor CL (Cross-level) | | 105 | Encoder AZ | | 106 | Encoder CL | | 107 | Gyro sensor | | 108 | Tilt sensor | | 109 | Sensor box | | 110 | LNB | | 111 | Skew | | 112 | Sub-reflector | | 113 | Antenna power | | 114 | ACU power | | 115 | Receiver | | 116 | Home sensor | #### Diagnosis Results - 0: Failed - 1: Passed - 2: Testing - 3: Skipped - 4: Ready - 5: Clear ### Backup/Restore Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_BACKUP_RESTORE | `BR` | 2 | Initiate backup or restore | | UIF_LOAD_LIBRARY | `LL` | 10 | Load satellite library | ### System Configuration Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SYSTEM_TYPE | `Vs` | 2 | Set/report system type | | UIF_ACU_SETTINGS | `AS` | 5 | ACU settings | | UIF_SYSTEM_INFORMATION | `SI` | 12 | System information | | UIF_SATELLITE_INFORMATION | `si` | 16 | Satellite system information | | UIF_MANUFACTURE_INFO | `mi` | 5 | Manufacturing information | ### Elevation Offset Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SET_EL_OFFSET | `TL` | 3 | Set elevation offset | | UIF_SEND_EL_OFFSET | `DL` | 1 | Report elevation offset | ### Miscellaneous Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SET_DEFAULT | `SD` | 1 | Reset to factory defaults | | UIF_SET_DEFAULT_WITHOUT_OFFSET | `Sd` | 1 | Reset without offset values | | UIF_COMMAND_ACK | `AC` | 1 | Command acknowledgment | | UIF_SEND_ETC | `TC` | 2 | Send miscellaneous data | | UIF_SEND_ETC_2 | `TD` | 5 | Send additional misc data | | UIF_SEND_VOLTAGE | `VL` | 3 | Report voltage levels | | UIF_SEND_PATTERN | `PT` | 7 | Report pattern data | | UIF_SEND_MESSAGE | `ME` | 7 | Send text message | | UIF_POL_CHANGE | `PC` | 2 | Polarity change command | | UIF_BAND_SW_OFFSET | `BO` | 2 | Band switch offset | | UIF_SEND_WD | `WD` | 6 | Watchdog/WBD data | ### MIM (Mediator Interface Module) Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SET_MIM | `SM` | 9 | Configure MIM settings | ### PC Connection Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_PC_CONNECT_MONITOR | `PM` | 3 | PC connection monitoring | ### Bootloader Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_GOTO_BOOTLOADER | `GB` | 1 | Enter bootloader mode | | UIF_BOOT_STATUS | `BD` | 3 | Boot status information | ### USB Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_USB_COMMAND | `US` | 10 | USB interface commands | ### Log and History Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SEND_OPEATION | `LO` | 7 | Send operation log | | UIF_SEND_HISTORY | `MH` | 10 | Send history data | | UIF_SEND_MESSAGE_LOG | `ML` | 10 | Send message log | ### Internal Protocol Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_INTERNAL_PROTOCOL | `YS` | 10 | Internal protocol data | ### Remote/Messaging Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_REMOTE_COMMAND | `RC` | 20 | Remote command interface | | UIF_MESSENGER_MSG | `MM` | 20 | Messenger message | ### Ethernet Switch Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_ETSW_SETTING | `ES` | 7 | Ethernet switch settings | #### Network Setting Parameters - 0: IP Address - 1: Netmask - 2: Gateway - 3: DNS - 4: Save and reboot - 5: TCP Port - 6: UDP Port ### Communication Manager Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_CM_INTERFACE | `CM` | 6 | Communication manager interface | #### CM GPIO Control Targets - 0: Power on - 1: Reset - 2: TX Mute - 3: Key line - 4: Power status - 5: RX Lock - 6: Key line setting ### Wideband Detector (WBD) Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_WBD_COMMAND | `WB` | 7 | Wideband detector commands | #### WBD Sub-Commands | Value | Command | |-------|---------| | 0 | Power status | | 1 | LNA power | | 2 | HPA power | | 3 | RF Switch 1 | | 4 | RF Switch 2 | | 100 | WBD status | | 101 | WBD frequency | | 102 | WBD signal level | | 200 | HPA status | | 201 | HPA TX level | | 300 | RF Switch status | | 301 | RF Switch path | | 400 | Operation status | | 401 | Operation mode | ### Test and Aging Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_AGING_TEST | `AT` | 10 | Aging test commands | | UIF_BOARD_TEST_COMMAND | `bt` | 4 | Board test commands | ### User Settings Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_USER_SET | `us` | 5 | User settings | | UIF_BACKGROUND_UPGRADE | `bu` | 5 | Background firmware upgrade | ### Variable Level Detection Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_VARIABLE_LEVEL_COMMAND | `VD` | 8 | Variable level detection | ### ASI (Antenna System Interface) Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_ASI_INFORMATION | `ai` | 9 | ASI information | ### Cross-Polarization Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_SEND_X_POL | `XP` | 7 | Cross-polarization tracking data | ### Beam Information Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_BEAM_INFO | `BI` | 15 | Antenna beam information | ### Component Control Commands | Command | Code | Parameters | Description | |---------|------|------------|-------------| | UIF_COMPONENT_CONTROL | `Cc` | 8 | Component control commands | --- ## Data Encoding ### Angle Encoding Angles are encoded as integers multiplied by 100: - 127.50 degrees = 12750 - -45.25 degrees = -4525 ### String Encoding Strings are encoded as packed integers using 4 bytes per integer: ``` characters[0] + (characters[1] << 8) + (characters[2] << 16) + (characters[3] << 24) ``` ### Signal Level Signal level is reported on an inverted 0-800 scale: - Raw value 0 = Signal level 800 (maximum) - Raw value 800 = Signal level 0 (minimum) - Display value = 800 - raw_value --- ## TX Enable Status Bits The TX enable status is a bitmask: | Bit | Value | Description | |-----|-------|-------------| | 0 | 0x01 | Tuner lock | | 1 | 0x02 | TX enable total | | 2 | 0x04 | TX enable mode | | 3 | 0x08 | TX enable blockage | | 4 | 0x10 | TX enable pointing | | 5 | 0x20 | Modem lock | | 6 | 0x40 | LNB rotate | --- ## System Band Types | Value | Band | |-------|------| | 0 | Ku-band | | 1 | C-band | | 2 | C or Ku (switchable) | | 3 | C and Ku (dual) | | 4 | Ka-band | | 5 | C/Ku/Ka (triple) | | 6 | Ku or Ka | | 7 | L-band | | 8 | C or Ka | --- ## Satellite Orbit Types | Value | Type | |-------|------| | 8 | GEO (Geostationary) | | 16 | MEO (Medium Earth Orbit) | | 24 | GEO + MEO | --- ## Product Types ### VSAT Antenna Sizes | Value | Model | |-------|-------| | 0 | V110 | | 1 | V130 | | 2 | V60 | | 3 | V80 | | 4 | V240 | | 5 | V100GX | | 6 | V60GX | | 7 | V70 | | 8 | V65 | | 9 | V85 | | 10 | V150 | ### Fly-Away Antenna Types | Value | Model | |-------|-------| | 30 | FA-60 | | 31 | FA-85 | | 32 | FA-100 | | 33 | FA-60 GX | | 34 | FA-85 GX | | 35 | FA-100 GX | --- ## Example Commands ### Request Signal Level ``` {QV}C ``` ### Set GPS Position (127.5E, 35.0N) ``` {SG 12750 0 3500 0}C ``` ### Select Satellite Index 3 ``` {LT 3 0}C ``` ### Move Antenna Up ``` {MO 0 0}C ``` ### Configure Block Zone 1 (AZ 90-180, EL < 45) ``` {BK 0 1 9000 18000 4500}C ``` ### Request Antenna Status ``` {QS}C ``` --- ## Command/Response Architecture ### How Request Commands Work Most "request" commands (like `QA`, `QV`, `QS`) do NOT have a dedicated response format. Instead, they trigger the ACU to send back one or more **standard response messages**. **Example - `QA` (UIF_REQUEST_ANT_INFO_ALL)**: When you send `{QA 6}checksum`, the ACU responds by sending a **stream of multiple messages**: ``` ← {NN 15}checksum (Number of satellites) ← {NS 3}checksum (Selected satellite index) ← {NW 156 4 201}checksum (Software version) ← {Nn ...}checksum (Product name) ← {NG 12750 0 3500 3}chk (GPS position) ← {Ni 2 650 3 18050 4520 -150}chk (Antenna information) ← {NL 9750 0 1}checksum (Local frequency) ← {NI 0 12750 0 ...}chk (Satellite 1 info) ← {NI 1 9500 1 ...}chk (Satellite 2 info) ← {NT 0 11700 11700 ...}chk (Tracking info 1) ... (more satellite data) ``` ### Internal Command ID Mapping When a response is received, the 2-character code is mapped to an internal command ID, which routes to the appropriate handler: | ID | Code | Response Type | Handler Function | |----|------|---------------|------------------| | 36 | `NN` | Satellite count | `SetSatelliteNumber()` | | 37 | `NS` | Selected satellite | `SetSelectTRSat()` | | 38 | `NV` | Signal level | `SetSignalLevel()` | | 39 | `Nv` | AGC/Lock status | `SetAGCLock()` | | 40 | `NA` | Antenna status | `SetAntStatus()` | | 41 | `Ni` | Antenna information | `SetAntennaInformation()` | | 42 | `NW` | Software version | `SetSWVersion()` | | 43 | `Nn` | Product name | `SetProductName()` | | 44 | `NG` | GPS coordinates | `SetGPS()` | | 45 | `NL` | Local frequency | `SetLocalFrequency()` | | 46 | `NP` | Satellite pair | `SetPairTRSat()` | | 47 | `NI` | Satellite info | `SetSatelliteInfo()` | | 48 | `Nu` | Satellite info (spare) | `SetSatelliteInfo_spare()` | | 49 | `NT` | Tracking info | `SetTrInfo()` | | 50 | `NU` | Tracking info (spare) | `SetTrInfoSPARE()` | | 51 | `NR` | Antenna parameters | `SetAntParameter()` | | 52 | `NC` | Control parameters | `SetControlParameter()` | | 53 | `Np` | Antenna parameters (alt) | `SetAntennaParameter()` | | 54 | `NF` | Antenna flags | `SetAntFlag()` | | 55 | `ND` | Diagnosis result | `SetDiagnosisResult()` | | 56 | `Nw` | LNB power status | `SetLNBPower()` | | 57 | `VL` | Voltage readings | `SetVoltage()` | | 58 | `NQ` | DiSEqC status | `SetDiSEqC()` | | 59 | `ID` | Network ID | `SetNID()` | | 61 | `AP` | Antenna position | `SetAntennaPosition()` | | 63 | `NK` | Skew angles | `SetSkewAngles()` | | 66 | `TC` | ETC/misc data | `SetETC()` | | 82 | `Vd` | DVB satellite info | `SetSatelliteInfoDVB()` | | 85 | `Vt` | Tracking parameters | `SetTrackingParameter()` | | 92 | `GN` | Gyro/heading data | `SetHeading2()` | | 108 | `Cd` | DVB info (C-band) | `SetSatelliteInfoDVB_C()` | | 118 | `vD` | DVB info (long format) | `SetSatInfoDVBLong()` | | 123 | `QA` | Info request ACK | Sets `_isGetQAInformationALL` flag | --- ## Response Data Field Specifications This section details the meaning of each parameter in responses sent FROM the dish/ACU TO the controlling software. --- ### Signal Level Response (`NV` - ID 38) **Format**: `{NV signal_level}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Signal Level | Raw signal strength | 0-800 inverted scale | **Decoding**: `display_value = 800 - param[0]` Higher display values indicate stronger signal. --- ### AGC Lock Response (`Nv` - ID 39) **Format**: `{Nv signal_level lock_status}checksum` | Index | Field | Description | Values | |-------|-------|-------------|--------| | 0 | Signal Level | Raw signal strength | 0-800 inverted scale | | 1 | Lock Status | Tuner lock indicator | 0=Unlocked, 1=Locked | --- ### Antenna Status Response (`NA` - ID 40) **Format**: `{NA status}checksum` | Index | Field | Description | Values | |-------|-------|-------------|--------| | 0 | Status | Antenna operational state | See table below | **Antenna Status Values**: | Value | Status | Description | |-------|--------|-------------| | -1 | Unknown | Communication not established | | 0 | Setup | Manual setup mode | | 1 | Searching | Searching for satellite | | 2 | Tracking | Locked and tracking satellite | | 3 | Unwrap | Azimuth unwrap in progress | | 4 | Initialize | Antenna initializing | | 5 | Diagnosis | Running self-test | | 6 | ACU Initialize | ACU booting | | 7 | Sleep | Low power mode | | 8 | Search Phase 1 | Initial search pattern | | 9 | Search Phase 2 | Fine search pattern | | 10 | Search Phase 3 | Final acquisition | | 11 | Block Zone | In TX blocked area | | 12 | Comm Error | Communication failure | | 13 | Pointing | Manual pointing mode | --- ### Antenna Information Response (`Ni` - ID 41) **Format**: `{Ni status signal tx_enable rel_az elevation pol}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Status | Antenna status | See status table above | | 1 | Signal Level | Current signal | 0-800 inverted (display = 800 - value) | | 2 | TX Enable | TX enable bitmask | See bitmask below | | 3 | Relative AZ | Azimuth from bow | x100 signed (18050 = 180.50°) | | 4 | Elevation | Elevation angle | x100 signed (4525 = 45.25°) | | 5 | Polarization | Skew/pol angle | x100 signed | **TX Enable Bitmask** (param[2]): | Bit | Mask | Field | Meaning when set | |-----|------|-------|------------------| | 0 | 0x01 | Tuner Lock | DVB tuner has lock | | 1 | 0x02 | TX Enable Total | Overall TX permitted | | 2 | 0x04 | TX Enable Mode | Mode allows TX | | 3 | 0x08 | TX Enable Blockage | Not in block zone | | 4 | 0x10 | TX Enable Pointing | On-target pointing | | 5 | 0x20 | Modem Lock | Modem has lock | | 6 | 0x40 | LNB Rotate | Skew rotation complete | --- ### Software Version Response (`NW` - ID 42) **Format**: `{NW ant_version product_type acu_version}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Antenna Version | Antenna PCU firmware | x100 (156 = v1.56) | | 1 | Product Type | Antenna model ID | See Product Types | | 2 | ACU Version | ACU firmware version | x100 (201 = v2.01) | --- ### Product Name Response (`Nn` - ID 43) **Format**: `{Nn name1 name2 name3 name4 name5 info_type}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0-4 | Name Parts | Product name chars | Packed 4 chars/int | | 5 | Info Type | Source identifier | 0=ACU, 2=Antenna | **String Decoding** (per integer parameter): ```python def decode_packed_string(params): result = "" for param in params: result += chr(param & 0xFF) result += chr((param >> 8) & 0xFF) result += chr((param >> 16) & 0xFF) result += chr((param >> 24) & 0xFF) return result.rstrip('\x00') ``` --- ### GPS Response (`NG` - ID 44) **Format**: `{NG longitude ew_flag latitude ns_flag}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Longitude | Longitude value | x100 (12750 = 127.50°) | | 1 | E/W Flag | East/West indicator | 0=East, 1=West | | 2 | Latitude | Latitude value | x100 (3550 = 35.50°) | | 3 | N/S Flag | North/South indicator | 2=South, 3=North | **Example**: `{NG 12750 0 3550 3}` = 127.50°E, 35.50°N --- ### Local Frequency Response (`NL` - ID 45) **Format**: `{NL freq_low freq_high active}checksum` | Index | Field | Description | Values | |-------|-------|-------------|--------| | 0 | Frequency Low | LNB LO frequency (13V/0kHz) | MHz (9750, 10600, etc.) | | 1 | Frequency High | LNB LO frequency (18V/22kHz) | MHz | | 2 | Active | Currently selected | 0=Low, 1=High | **LNB Mode Detection**: - 9750 + 10600: Universal LNB - 10500 + 11250: Americas LNB - Same values: Single-band LNB --- ### Satellite Pair Response (`NP` - ID 46) **Format**: `{NP pair_a_normal pair_b_normal pair_a_diseqc pair_b_diseqc pair_c_normal}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | Pair A Normal | Satellite A index (normal mode) | | 1 | Pair B Normal | Satellite B index (normal mode) | | 2 | Pair A DiSEqC | Satellite A index (DiSEqC mode) | | 3 | Pair B DiSEqC | Satellite B index (DiSEqC mode) | | 4 | Pair C Normal | Satellite C index (triple mode) | --- ### Satellite Info Response (`NI` - ID 47) **Format**: `{NI index longitude ew nid_vl nid_hl nid_vh nid_hh name1 name2}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Index | Satellite index | 0-based (0=current) | | 1 | Longitude | Orbital position | x100 format | | 2 | E/W Flag | Direction | 0=East, 1=West | | 3 | NID V-Low | Network ID (Vertical, Low band) | Hex value | | 4 | NID H-Low | Network ID (Horizontal, Low band) | Hex value | | 5 | NID V-High | Network ID (Vertical, High band) | Hex value | | 6 | NID H-High | Network ID (Horizontal, High band) | Hex value | | 7 | Name 1 | Satellite name chars 1-4 | Packed string | | 8 | Name 2 | Satellite name chars 5-8 | Packed string | --- ### Tracking Info Response (`NT` - ID 49) **Format**: `{NT index freq_vl freq_hl freq_vh freq_hh sym_vl sym_hl sym_vh sym_hh verify power}checksum` | Index | Field | Description | Unit | |-------|-------|-------------|------| | 0 | Index | Satellite index | - | | 1 | Freq V-Low | Frequency (Vertical, Low band) | MHz | | 2 | Freq H-Low | Frequency (Horizontal, Low band) | MHz | | 3 | Freq V-High | Frequency (Vertical, High band) | MHz | | 4 | Freq H-High | Frequency (Horizontal, High band) | MHz | | 5 | Symbol V-Low | Symbol rate (V-Low) | kSym/s | | 6 | Symbol H-Low | Symbol rate (H-Low) | kSym/s | | 7 | Symbol V-High | Symbol rate (V-High) | kSym/s | | 8 | Symbol H-High | Symbol rate (H-High) | kSym/s | | 9 | Verify Type | DVB verification method | See verify types | | 10 | Power Change | LNB voltage control | 0-3 | --- ### Diagnosis Response (`ND` - ID 55) **Format**: `{ND test_id result}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | Test ID | Diagnosis test identifier | | 1 | Result | Test result code | **Test IDs**: | ID | Test Component | |----|----------------| | 101 | Communication link | | 102 | Azimuth motor | | 103 | Elevation motor | | 104 | Cross-level motor | | 105 | Azimuth encoder | | 106 | Cross-level encoder | | 107 | Gyro sensor | | 108 | Tilt sensor | | 109 | Sensor box | | 110 | LNB | | 111 | Skew motor | | 112 | Sub-reflector | | 113 | Antenna power | | 114 | ACU power | | 115 | DVB receiver | | 116 | Home sensor | **Result Codes**: | Value | Meaning | |-------|---------| | 0 | Failed | | 1 | Passed | | 2 | Testing (in progress) | | 3 | Skipped | | 4 | Ready | | 5 | Clear | --- ### LNB Power Response (`Nw` - ID 56) **Format**: `{Nw power_state mode}checksum` | Index | Field | Description | Values | |-------|-------|-------------|--------| | 0 | Power State | LNB power on/off | 0=Off, 1=On | | 1 | Mode | Voltage/tone mode | 0-3 | **LNB Power Modes**: | Value | Voltage | Tone | Display | |-------|---------|------|---------| | 0 | 13V | 0kHz | "13V + 0kHz" | | 1 | 18V | 0kHz | "18V + 0kHz" | | 2 | 13V | 22kHz | "13V + 22kHz" | | 3 | 18V | 22kHz | "18V + 22kHz" | --- ### Voltage Response (`VL` - ID 57) **Format**: `{VL ant_voltage acu_voltage buc_voltage}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Antenna Voltage | Antenna DC supply | x10 (120 = 12.0V) | | 1 | ACU Voltage | ACU DC supply | x10 | | 2 | BUC Voltage | BUC supply (if present) | x10, 0=N/A | --- ### DiSEqC Status Response (`NQ` - ID 58) **Format**: `{NQ mode}checksum` | Index | Field | Description | Values | |-------|-------|-------------|--------| | 0 | Mode | DiSEqC operating mode | 0=Off, 1=Band, 2=Satellite | --- ### Network ID Response (`ID` - ID 59) **Format**: `{ID nid}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | NID | Current received Network ID | --- ### Antenna Position Response (`AP` - ID 61) **Format**: `{AP azimuth elevation}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Azimuth | Relative azimuth from bow | x100 signed | | 1 | Elevation | Elevation angle | x100 signed | **Example**: `{AP 18050 4525}` = AZ 180.50°, EL 45.25° --- ### Skew Angles Response (`NK` - ID 63) **Format**: `{NK sub_cmd skew_angle skew_offset}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Sub-command | Band/polarization selector | 0-4 | | 1 | Skew Angle | Calculated skew | x100 signed | | 2 | Skew Offset | User offset | x10 signed | **Sub-command Values**: | Value | Band/Polarization | |-------|-------------------| | 0 | Ku-band Linear A (Low) | | 1 | Ku-band Linear B (Low) | | 2 | Ku-band Linear A (High) | | 3 | Ku-band Linear B (High) | | 4 | C-band | --- ### ETC Response (`TC` - ID 66) **Format**: `{TC sub_cmd value}checksum` | Sub-cmd | Value | Description | |---------|-------|-------------| | 2 | position | Search stop azimuth position | | 3 | position | Search stop elevation position | | 9 | level | Noise level measurement | | 11 | 0/1 | Ready to receive flag | | 13 | 100 | Factory default flag | | 15 | 0/1 | Bluetooth enabled | | 50 | value | Quick search result | | 80 | 0/1 | GPS valid flag | | 200 | offset | Signal offset calibration | | 202 | 0/1 | Skew exists (B-model) | --- ### ETC Extended Response (`TD` - ID 67/68) **Format**: `{TD sub_cmd p1 p2 p3 p4}checksum` Multi-purpose response with sub-command routing. --- ### Serial Number Response (`EN` - ID 73) **Format**: `{EN sn1 sn2 sn3 sn4}checksum` | Index | Field | Description | |-------|-------|-------------| | 0-3 | Serial Parts | Serial number packed | 4 chars per int | --- ### Elevation Offset Response (`DL` - ID 75) **Format**: `{DL offset}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Offset | Elevation offset | x100 signed | --- ### Heading Response (`GN` - ID 87) **Format**: `{GN sub_cmd p1 p2 p3 p4 p5 p6}checksum` **Sub-command 0** (Gyro Status): | Index | Field | Description | |-------|-------|-------------| | 1 | Device Type | Heading device type | | 2 | Heading | Current heading (x100) | | 3 | Connected | Connection status (0/1) | **Sub-command 1** (Heading Only): | Index | Field | Description | |-------|-------|-------------| | 1 | Heading | Current heading (x100) | **Sub-command 2** (Device Type): | Index | Field | Description | |-------|-------|-------------| | 1 | Device Type | See heading device table | **Sub-command 7** (NMEA Baudrate): | Index | Field | Description | |-------|-------|-------------| | 1 | Baudrate | NMEA port baudrate | **Heading Device Types**: | Value | Device | |-------|--------| | 0 | None | | 1 | NMEA 0183 | | 2 | Synchro 1:1 | | 3 | Synchro 36:1 | | 4 | Synchro 90:1 | | 5 | Synchro 360:1 | | 6 | NMEA Rough | | 7 | Ground Test | | 8 | NMEA 2000 | --- ### Modem Protocol Response (`MP` - ID 90) **Format**: `{MP sub_cmd p1 p2 p3 p4 p5 p6}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | Sub-command | Protocol type/query | | 1-6 | Data | Protocol-specific data | --- ### Block Zone Response (`BK` - ID 92) **Format**: `{BK zone_index active az_start az_end el_threshold}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Zone Index | Block zone number | 0-4 | | 1 | Active | Zone enabled | 0=Off, 1=On | | 2 | AZ Start | Start azimuth | x100 | | 3 | AZ End | End azimuth | x100 | | 4 | EL Threshold | Elevation limit | x100 | **TX Blocking Logic**: TX is inhibited when: - Antenna AZ is between AZ Start and AZ End, AND - Antenna EL is below EL Threshold --- ### GPS Extended Response (`Vg` - ID 93) **Format**: `{Vg longitude ew latitude ns}checksum` Same format as `NG` but with extended precision. --- ### Multiple Local Frequency Response (`Vl` - ID 94) **Format**: `{Vl sub_cmd freq_13_0 freq_18_0 freq_13_22 freq_18_22}checksum` | Index | Field | Description | Unit | |-------|-------|-------------|------| | 0 | Sub-command | Always 0 | - | | 1 | Freq 13V+0kHz | LO for 13V, 0kHz | MHz | | 2 | Freq 18V+0kHz | LO for 18V, 0kHz | MHz | | 3 | Freq 13V+22kHz | LO for 13V, 22kHz | MHz | | 4 | Freq 18V+22kHz | LO for 18V, 22kHz | MHz | --- ### Tracking Parameter Response (`Vt` - ID 95) **Format**: `{Vt sub_cmd p1 p2 p3 p4 p5 p6 p7 p8 p9}checksum` | Sub-cmd | Description | |---------|-------------| | 0 | Tracking status | | 5 | Search parameters | | 7 | Sensor bias values | | 8 | Bow position offset | | 9 | Conical scan range | | 13 | MEO search parameters | | 14 | Ku-band conical range | | 15 | Ka-band conical range | --- ### NBD Info Response (`Vn` - ID 96) **Format**: `{Vn index freq bandwidth rx_local tx_local rx_pol tx_pol tracking_type}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | Index | Satellite index (0=current) | | 1 | Frequency | NBD center frequency (MHz) | | 2 | Bandwidth | NBD bandwidth (kHz) | | 3 | RX Local | Receive LO frequency (MHz) | | 4 | TX Local | Transmit LO frequency (MHz) | | 5 | RX Pol | Receive polarization | | 6 | TX Pol | Transmit polarization | | 7 | Tracking Type | Tracking method | **Band Detection from RX Local**: - < 8000 MHz: C-band - >= 16750 MHz: Ka-band - Otherwise: Ku-band --- ### System Type Response (`Vs` - ID 97) **Format**: `{Vs system_type antenna_type}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | System Type | System configuration | | 1 | Antenna Type | Antenna band type | --- ### DVB Satellite Info Response (`Vd` - ID 98) **Format**: `{Vd index longitude freq symbol nid verify power name1 name2 skew_offset}checksum` | Index | Field | Description | Encoding | |-------|-------|-------------|----------| | 0 | Index | Satellite index (0=current) | Integer | | 1 | Longitude | Orbital position | x100 signed (-=West) | | 2 | Frequency | DVB tracking frequency | MHz | | 3 | Symbol Rate | DVB symbol rate | kSym/s | | 4 | NID | Network ID for verification | Hex | | 5 | Verify Type | Verification method | 0-5 | | 6 | Power Change | LNB voltage switch | 0=13V, 1=18V | | 7 | Name 1 | Satellite name (chars 1-4) | Packed | | 8 | Name 2 | Satellite name (chars 5-8) | Packed | | 9 | Skew Offset | Polarization skew offset | x100 | **Verification Types**: | Value | Method | Description | |-------|--------|-------------| | 0 | AGC | Signal level only | | 1 | DVB Lock | Tuner lock required | | 2 | DVB Decode | NID must match | | 3 | DSS Decode | DSS format decode | | 4 | DVB+AGC | Lock + signal level | | 5 | NBD | Narrow band detection | --- ### GPS Date/Time Response (`GD` - ID 113) **Format**: `{GD year month day hour minute second}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | Year | GPS year | | 1 | Month | GPS month (1-12) | | 2 | Day | GPS day (1-31) | | 3 | Hour | GPS hour (0-23) | | 4 | Minute | GPS minute (0-59) | | 5 | Second | GPS second (0-59) | --- ### History Response (`MH` - ID 116) **Format**: `{MH p0 p1 p2 p3 p4 p5 p6 p7 p8 p9}checksum` Historical data log entry. --- ### DVB Info Long Response (`vD` - ID 118) **Format**: `{vD index longitude freq symbol nid verify power skew name1 name2 name3 name4}checksum` | Index | Field | Description | |-------|-------|-------------| | 0 | Index | Satellite index | | 1 | Longitude | Orbital position (x100, signed) | | 2 | Frequency | DVB frequency (MHz) | | 3 | Symbol Rate | Symbol rate (kSym/s) | | 4 | NID | Network ID | | 5 | Verify Type | Verification method | | 6 | Power Change | LNB voltage | | 7 | Skew Offset | Skew offset (x100) | | 8-11 | Name | Satellite name (16 chars) | --- ### BUC Interface Response (`BC` - ID 124) **Format**: `{BC sub_cmd p1 p2 p3 p4 p5 p6 p7 p8 p9}checksum` | Sub-cmd | Description | Fields | |---------|-------------|--------| | 0 | BUC Info | General BUC information | | 1 | TX Status | TX on/off state | | 2 | Attenuation | TX attenuation level | | 3 | Power | BUC power status | | 4 | Version | BUC firmware version | | 5 | Status | BUC operational status | | 6 | Temperature | BUC temperature | | 100 | Path | Signal path selection | | 101 | Type | BUC manufacturer type | --- ### Ethernet Settings Response (`ES` - ID 125) **Format**: `{ES sub_cmd p1 p2 p3 p4 p5 p6}checksum` | Sub-cmd | Description | |---------|-------------| | 0 | IP Address | | 1 | Netmask | | 2 | Gateway | | 3 | DNS | | 5 | TCP Port | | 6 | UDP Port | | 20 | SNR Value | --- ### System Information Response (`SI` - ID 128) **Format**: `{SI p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11}checksum` Comprehensive system information including antenna type, band configuration, and capabilities. --- ### Software Unicode Response (`SU` - ID 129) **Format**: `{SU v1 v2 v3 v4 v5}checksum` Unicode-encoded software version string. --- ### Communication Manager Response (`CM` - ID 130) **Format**: `{CM sub_cmd p1 p2 p3 p4 p5}checksum` BUC keyline and GPIO control responses. --- ### WBD Command Response (`WB` - ID 136) **Format**: `{WB sub_cmd p1 p2 p3 p4 p5 p6}checksum` | Sub-cmd | Description | |---------|-------------| | 0 | Power status | | 1 | LNA power | | 2 | HPA power | | 100 | WBD status | | 101 | WBD frequency | | 102 | WBD signal level | | 200 | HPA status | | 300 | RF switch status | | 400 | Operation status | --- ### Satellite Information Response (`si` - ID 139) **Format**: `{si p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15}checksum` Extended 16-parameter satellite system information. --- ### GPS Information Response (`gp` - ID 140) **Format**: `{gp p0 p1 p2 p3 p4 p5 p6 p7}checksum` Comprehensive GPS data including position, speed, and fix quality. --- ### Skew Data Response (`sk` - ID 141) **Format**: `{sk sub_cmd angle offset p3 p4 p5}checksum` Skew motor position and offset data. --- ### Sensor Data Response (`sd` - ID 143) **Format**: `{sd p0 p1 p2 p3 p4 p5 p6 p7 p8}checksum` Raw sensor readings including gyro, accelerometer, and tilt. --- ### Cross-Pol Response (`XP` - ID 149) **Format**: `{XP p0 p1 p2 p3 p4 p5 p6}checksum` Cross-polarization tracking data. --- ### Beam Info Response (`BI` - ID 150) **Format**: `{BI p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14}checksum` Antenna beam pattern and pointing information --- ## Notes 1. All numeric parameters are signed integers unless otherwise specified 2. The checksum character is calculated by the ARMSUtility library 3. Commands marked with "true" in the protocol definition support acknowledgment 4. Response commands (starting with 'N') are sent by the ACU to the controlling software 5. The default TCP port is typically 5000 or 5001 6. Maximum of 100 satellites can be stored in the database 7. When param[0]=0 for satellite info commands, it refers to the currently active satellite 8. String fields are null-padded; trim trailing nulls and spaces when parsing --- ## Version Information - Protocol Version: UIF v1.6.5.3 - Supported Antenna Platforms: V-Series, T-Series, I-Series, GX-Series, FA-Series - Manufacturer: Intellian Technologies