Summary
The Datasat AP20 is a professional cinema audio processor. This spec covers the Remote Command API for both serial (RS-232) and Ethernet (TCP) control. Commands are ASCII text prefixed with @ and terminated by <CR> (0x0D). Authentication is supported via a password-protected AUTH command.
Transport
protocols:
- serial
- tcp
addressing:
port: 14500
serial:
baud_rate: null # UNRESOLVED: baud rate user-configurable via System > Automation > Serial menu; no default value stated in source
data_bits: null # UNRESOLVED: not stated in source
parity: null # UNRESOLVED: not stated in source
stop_bits: null # UNRESOLVED: not stated in source
flow_control: null # UNRESOLVED: not stated in source
auth:
type: password
description: "AUTH command with NetCmd Password (operator) or Setup Password (setup). Inquiry commands (SYSTEM, IDENTIFY) operate without a password. AUTH must precede any password-protected command. Authorization valid for duration of TCP connection."
Traits
- powerable # UNRESOLVED: no explicit power command in source; trait not strongly supported
- routable # UNRESOLVED: no input routing commands in source
- queryable # inferred from query command examples (SYSTEM, IDENTIFY, HEALTH, BOARDINFO, SERIALNO, MAC, FADER, MUTED, MONITORLEVEL, MONITORMUTE)
- levelable # inferred from FADER and MONITORLEVEL command examples
Actions
- id: system_information
label: System Information
kind: query
command: "@SYSTEM\r"
params: []
description: "Returns software version, version date, and MAC address."
- id: identify
label: Identify
kind: query
command: "@IDENTIFY\r"
params: []
description: "Returns device model confirmation (AP20), IP, circuit, theater, screen info. Used in discovery."
- id: health_temperature
label: Health - Temperature
kind: query
command: "@HEALTH TEMPERATURE\r"
params: []
description: "Returns t1, t2, t3 Celsius temps for H331, H332, H335 boards."
- id: health_h331volts
label: Health - H331 Voltages
kind: query
command: "@HEALTH H331VOLTS\r"
params: []
description: "Returns vok, ref, 5v, +15v, -15v, -5V for H331 board."
- id: health_h332volts
label: Health - H332 Voltages
kind: query
command: "@HEALTH H332VOLTS\r"
params: []
description: "Returns vok, ref, 5v, +15v, -15v, -5V for H332 board. Returns NA if H332 not present."
- id: health_h335volts
label: Health - H335 Voltages
kind: query
command: "@HEALTH H335VOLTS\r"
params: []
description: "Returns vok, ref, 1.3v for H335 board."
- id: health_h336volts
label: Health - H336 Voltages
kind: query
command: "@HEALTH H336VOLTS\r"
params: []
description: "Returns vok, ref, +5V, +15V, -15V, 48V (mic phantom), vcpu for H336 board."
- id: health_h338volts
label: Health - H338 Voltages
kind: query
command: "@HEALTH H338VOLTS\r"
params: []
description: "Returns vok, ref, 5v, +10V, -10V for H338 board. Returns NA if H338 not present."
- id: board_info
label: Board Information
kind: query
command: "@BOARDINFO\r"
params: []
description: "Returns list of boards (H331, H332, H335, H337In, H337Out, H338, HDMI) with hardware revisions and firmware versions."
- id: auth
label: Authorization
kind: action
command: "@AUTH {password}\r"
params:
- name: password
type: string
description: Operator (NetCmd) or Setup password. Setup password takes precedence.
description: "Authenticates client for password-protected commands. Returns SETUP, OP, or SECERR."
- id: serial_number
label: Serial Number
kind: query
command: "@SERIALNO\r"
params: []
description: "Reads the unit serial number."
- id: mac_address
label: MAC Address
kind: query
command: "@MAC\r"
params: []
description: "Reads the network MAC address."
- id: format_selection
label: Format Selection
kind: action
command: "@FORMAT {name}\r"
params:
- name: name
type: string
description: Format name (must match exactly; spaces allowed). Omit to read current format.
description: "Set or read the current audio format."
- id: run_macro
label: Run Macro
kind: action
command: "@RUNMACRO {name}\r"
params:
- name: name
type: string
description: Macro name (must match exactly; spaces allowed).
description: "Executes a macro defined on the AP20. Returns OK or 'ERR no macro'."
- id: master_fader
label: Master Fader Level
kind: action
command: "@FADER {level}\r"
params:
- name: level
type: integer
description: Fader level in tenths (e.g. 70 = 7.0). Omit to read current value.
description: "Set or read master fader level."
- id: master_fader_mute
label: Master Fader Mute
kind: action
command: "@MUTED {value}\r"
params:
- name: value
type: integer
enum: [0, 1]
description: "1 to mute, 0 to unmute. Omit to read current value."
description: "Mute or unmute AP20 output."
- id: monitor_level
label: Monitor Level
kind: action
command: "@MONITORLEVEL {value}\r"
params:
- name: value
type: integer
description: Monitor level 0 (min) to 100 (max). Omit to read current value.
description: "Set or read monitor level."
- id: monitor_mute
label: Monitor Mute
kind: action
command: "@MONITORMUTE {value}\r"
params:
- name: value
type: integer
enum: [0, 1]
description: "0 to unmute, 1 to mute. Omit to read current value."
description: "Mute or unmute monitor output."
Feedbacks
- id: system_version
type: string
description: "Software version returned by SYSTEM query (VER line)."
- id: system_version_date
type: string
description: "Software version date returned by SYSTEM query (VERDATE line)."
- id: system_mac
type: string
description: "MAC address returned by SYSTEM query (MAC line)."
- id: identify_model
type: string
enum: [AP20, AP25]
description: "Model identifier from IDENTIFY response."
- id: identify_ip
type: string
description: "IP address from IDENTIFY response."
- id: identify_circuit
type: string
description: "Circuit info from IDENTIFY response."
- id: identify_theater
type: string
description: "Theater info from IDENTIFY response."
- id: identify_screen
type: string
description: "Screen info from IDENTIFY response."
- id: health_temperature
type: string
description: "Comma-separated t1,t2,t3 Celsius from HEALTH TEMPERATURE."
- id: master_fader_level
type: integer
description: "Current master fader level in tenths."
- id: master_fader_mute_state
type: integer
enum: [0, 1]
description: "Current mute state (1=muted, 0=unmuted)."
- id: monitor_level
type: integer
description: "Current monitor level (0-100)."
- id: monitor_mute_state
type: integer
enum: [0, 1]
description: "Current monitor mute state."
- id: auth_status
type: string
enum: [SETUP, OP, SECERR]
description: "Returned by AUTH command; SETUP/OP if authorized, SECERR on failure."
- id: secerr
type: string
enum: [SECERR]
description: "Returned when password-protected command is sent without prior successful AUTH."
Variables
# UNRESOLVED: source documents all settable parameters as discrete commands (FADER, MUTED, MONITORLEVEL, MONITORMUTE, FORMAT); no separate continuous-variable section. Section retained for structural completeness.
Events
# UNRESOLVED: no unsolicited notification mechanism documented in source.
Macros
- id: run_macro
description: "User-defined macros stored on the AP20 can be invoked via @RUNMACRO {name}. The macro definitions themselves are not part of this spec; only the trigger command is."
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings, interlock procedures, or power-on sequencing requirements stated in source.
Notes
All commands are ASCII text prefixed with @ and terminated by <CR> (0x0D). For TCP connections, the client connects to the AP20 IP at port 14500 and may send AUTH followed by the password before issuing restricted commands. Authorization is valid only for the duration of the TCP connection; re-authenticate per connection. For serial control, the baud rate is user-configurable via the on-device menu (System > Automation > Serial); the source does not state a default baud rate. Source document explicitly states "Serial Command Mode" must be set to AP20 in the same menu.
The source document is shared between AP20 and AP25 models. The input names the AP20 specifically, but many commands apply identically to the AP25.
Provenance
source_domains:
- datasatdigital.com
source_urls:
- https://www.datasatdigital.com/download/55/ap25/2762/tn-h413_rev-d_ap20-ap25-remote-command-api.pdf
retrieved_at: 2026-04-30T04:35:03.888Z
last_checked_at: 2026-06-02T21:41:20.509Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:41:20.509Z
matched_actions: 18
action_count: 18
confidence: medium
summary: "All 18 spec actions match source commands with correct wire-level tokens and parameters; transport values verified; complete bidirectional coverage. (10 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "this spec covers both AP20 and AP25; the model list above names only AP20 per device-name input."
- "baud rate user-configurable via System > Automation > Serial menu; no default value stated in source"
- "not stated in source"
- "no explicit power command in source; trait not strongly supported"
- "no input routing commands in source"
- "powerable trait removed pending source evidence; routable trait removed pending source evidence."
- "source documents all settable parameters as discrete commands (FADER, MUTED, MONITORLEVEL, MONITORMUTE, FORMAT); no separate continuous-variable section. Section retained for structural completeness."
- "no unsolicited notification mechanism documented in source."
- "no safety warnings, interlock procedures, or power-on sequencing requirements stated in source."
- "baud rate, data bits, parity, stop bits, flow control not stated in source. Firmware version compatibility not stated. Power on/off commands not present in source. Input routing commands not present in source."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0