Skip to main content

Datasat AV Processor

Datasat AP/RS-series immersive audio processors (AP20, AP25, and the older RS20i) are controlled over Datasat's ASCII IP-control protocol — short text commands, each prefixed with @ and terminated by a carriage return, sent to the processor over TCP. GEM drives the cinema-processor controls an integrator commissioning a luxury home theatre needs: power, master volume, mute, input selection, the monitor (booth) output, and the full decoder / post-processing surface — Dolby Surround and Pro Logic II, DTS Neural:X / Neo:X, Auro-3D, TrueHD dynamic-range control, pink-noise calibration, EQ-preset and processor-macro recall.

This driver models the processor as a single main-zone device. It does not create a control zone of its own and it is not a matrix or controller — instead you point an AV zone's Volume Device at it so the room's volume slider and mute indicator ride the processor. See "Linking to an AV zone" below.

What's controlled

  • Main-zone power on / off
  • Master volume — absolute set as a 0100 percentage, plus up/down steps in 2.0 dB increments
  • Mute on / off / toggle (the processor has a native toggle)
  • Input selection from Datasat's fixed input list (AUDIO, BLURAY, DCINEMA, HOUSE, QUAD 1QUAD 4, QUAD MAIN)
  • Monitor (booth-monitor) output level and mute
  • Decoder / post-processing modes: Dolby Surround, Pro Logic II (mode, centre width, dimension, panorama), DTS Neural:X, DTS Neo:X (with LFE), Auro-3D (listening mode, preset, strength), TrueHD dynamic-range mode, Dolby Surround centre-spread
  • DTS:X dialogue boost (level and up/down)
  • EQ-preset recall and processor-macro recall (with read-back of the processor's stored input, macro, and EQ name lists)
  • Pink-noise calibration sequences, a pulse (trigger) output, and the front-panel screensaver
  • Live status polling — power, volume, mute, input, and the current video resolution and audio stream are refreshed on a timer (default every 10 seconds)

Prerequisites

  • A Datasat AP20 / AP25 / RS20i with IP control enabled in the processor's network / control menu, reachable on the LAN.
  • The TCP control port the processor is configured to listen on. Note it from the processor menu — GEM does not assume one (the AP20/AP25 example below uses 23).
  • A stable IP for the processor — assign a static IP or a DHCP reservation so the address never moves.

Setup

  1. On the Datasat processor, enable IP control and note the IP address and TCP port from its network menu.
  2. In GEM, open Devices, add a device, and choose the Datasat AV Processor driver.
  3. Set Processor IP Address to the unit's address and TCP Port to the port from the processor menu.
  4. (Optional) Set Status Poll Interval (ms) — how often GEM re-reads power/volume/mute/input from the processor. It defaults to 10000 (10 s); the minimum is 2000.
  5. (Optional) Set Max Volume (%) — a soft ceiling on volume_up stepping. See "Volume scaling" below. It defaults to 100.
  6. Save. On connect, GEM opens the control session and begins the status poll.
  7. (Optional but recommended) Run the get_input_names, get_macro_names, and get_eq_names commands once so GEM reads back the labels you configured on the processor. Re-run them any time you rename inputs, macros, or EQ presets on the unit.

Linking to an AV zone

The processor feeds volume and mute into an AV zone rather than appearing as its own controllable zone:

  1. Open AV Zones and edit (or create) the zone for the room the processor serves.
  2. Set the Volume Device field to this Datasat device.
  3. Save. From then on, whenever the processor reports a new volume or mute state, GEM mirrors it onto that AV zone's volume slider and mute indicator — and the zone's volume control drives the processor.
note

Selecting an input on the processor is a device command, not an AV source change. The processor's active input is tracked separately from GEM's AV source routing — choosing the room's source on a touchpanel does not, by itself, change the processor's input unless you wire that input select into the source's on-macro.

Volume scaling

Datasat reports and accepts volume on the wire in tenths of a decibel, over the range 0 (0 dB, maximum) to 700 (−70 dB, the quiet floor). GEM presents this to you as a friendlier 0–100 percentage100 = 0 dB (loudest), 0 = −70 dB (silence) — and converts in both directions, so everywhere in the UI (the AV zone slider, the volume command, the volume status attribute) you work in 0100.

The up/down step commands move the processor's own volume by 2.0 dB each press (@VOLUME +20 / @VOLUME -20). Because a 2 dB step and a 1-percentage-point step aren't the same size, the slider may momentarily read slightly off after a step — the status poll re-reads the true level from the processor a beat later and the slider settles to the actual value.

caution

Max Volume (%) on this driver is a soft ceiling: it only stops GEM's own tracked percentage from climbing past the limit while you hold volume_up. It does not reject an out-of-range absolute volume command, and it does not hard-limit the processor itself — the periodic poll always re-reads the processor's real level. Treat it as a nicety on repeated step-ups, not a hardware safety interlock. If you need a true hard limit, enforce it on the processor.

Attributes

Device — required

AttributeTypeDescription
ipstringProcessor LAN IP address.
portintTCP control port configured on the processor.

Device — optional

AttributeTypeDefaultDescription
status_intervalint10000Status poll interval in milliseconds (minimum 2000).
max_volumeint100Soft ceiling (1–100) on volume_up stepping — see "Volume scaling".

State attributes (read-only, auto-populated)

As the processor reports state — from command read-backs and the periodic poll — the driver keeps these attributes on the device current. They are status you read (in widgets, conditions, or macros), not values you set by hand:

  • power_stateon / off
  • volume — 0–100 percentage
  • mute_stateon / off
  • input — current input
  • monitor_level — booth-monitor level
  • monitor_mute_state — booth-monitor mute (on / off)
  • video_stream — current input video resolution
  • audio_stream — current decoded audio stream / format
  • decoderpost — active post-processing mode
  • dpl2mode — active Pro Logic II mode
  • noiseseq — active pink-noise sequence
  • eq — active EQ preset
  • inputnames, macronames, eqnames — the processor's stored label lists, populated when you run get_input_names / get_macro_names / get_eq_names

Commands

The driver declares the command surface below. Commands whose name starts with get_ are status queries; the rest are actions. Arguments you supply are shown in the Arg column; the Sends column is the literal string sent to the processor.

Power, mute

CommandArgSendsNotes
power_on@POWER 1Power the processor on.
power_off@POWER 0Power off.
mute_on@MUTED 1Mute.
mute_off@MUTED 0Unmute.
mute_toggle@MUTED +Toggle mute (native).

Volume, monitor

CommandArgSendsNotes
volumevolume@VOLUME [volume]Absolute volume as 0100; translated to tenths-dB on the wire.
volume_up@VOLUME +20Step up 2.0 dB.
volume_down@VOLUME -20Step down 2.0 dB.
monitor_levellevel@MONITORLEVEL [level]Set the booth-monitor output level.
monitor_mute_on@MONITORMUTE 1Mute the monitor output.
monitor_mute_off@MONITORMUTE 0Unmute the monitor output.

After any volume or mute command the driver re-queries the processor about a second later, so the cached state — and the linked AV zone — stays in sync with what the unit actually did.

Input

CommandArgSendsNotes
inputinput@INPUT [input]One of AUDIO, BLURAY, DCINEMA, HOUSE, QUAD 1, QUAD 2, QUAD 3, QUAD 4, QUAD MAIN.

Decoder / surround processing

CommandArgSendsOptions
post_processing_modemode@DECODERPOST [mode]off, dts_neo_x, dolby_plii, dolby_pliiz, auro_3d, dolby_surround, dts_neural_x, stereo_surround
pro_logic_two_modemode@DPL2MODE [mode]pro_logic, music, movie, dolby_digital_ex
pro_logic_two_music_center_widthwidth@DPL2CW [width]07
pro_logic_two_music_dimensiondimension@DPL2DIM [dimension]-77
pro_logic_two_panoramapanorama@DPL2PANO [panorama]low, mid, high
neo_x_modemode@NEOXMODE [mode]cinema, music, game
neo_x_lfe_enable / neo_x_lfe_disable@NEOXLFE 1 / 0Neo:X LFE on/off.
dolby_surround_center_spread_enable / _disable@DSUCENTERSPREAD 1 / 0Dolby Surround centre-spread.

Auro-3D

CommandArgSendsOptions
auro_3d_listening_modemode@AUROLM [mode]native, stereo, surround, auro_3d
auro_3d_presetpreset@AUROPRESET [preset]small, medium, large, speech
auro_3d_strengthstrength@AUROSTRENGTH [strength]116

Dolby TrueHD / DTS:X detail

CommandArgSendsNotes
dolby_drc_modemode@TRUEHDDRC [mode]TrueHD dynamic-range compression: off, auto, on.
dts_x_dialog_boost_levellevel@DTSXDIALOG [level]06.
dts_x_dialog_boost_up / _down@DTSXDIALOG + / -Step the DTS:X dialogue boost.

EQ, macros, calibration, utility

CommandArgSendsNotes
eq_presetpreset@EQSET [preset]Recall an EQ preset — run get_eq_names for the available list.
run_macromacro@RUNMACRO [macro]Run a processor macro — run get_macro_names for the list.
pink_noisestate@NOISESEQ [state]Calibration pink noise: off, sequence, manual, channel_step.
pulse_outputoutput@PULSE [output]Pulse a processor control/trigger output.
screensaver_on / screensaver_off@SCR ON / @SCR OFFFront-panel screensaver.
loginpassword@AUTH [password]Only needed if the processor is configured with a control password (most installs are not).

Status queries

Numeric and text read-backs are available on demand: get_volume, get_mute, get_input, get_video_resolution, get_audio_stream, get_decoder_channel_count, get_decoder_stream, get_monitor_level, get_monitor_mute, get_input_names, get_macro_names, get_eq_names, get_identity, get_model, get_serial_number, get_mac_address, get_system_info, and get_video_protection. See Commands for how a device's command list is surfaced in the admin UI.

Known limitations

  • Single device, not multi-zone. The Datasat processor is modelled as one main-zone device. It does not create a GEM control zone of its own — bind it as an AV zone's Volume Device.
  • Max Volume is a soft ceiling, not a hardware limit. It bounds only GEM's tracked percentage while stepping up; it does not cap an absolute volume command or the processor's own front-panel volume. See "Volume scaling".
  • No native power toggle. The driver exposes explicit power_on and power_off; there is no single power-toggle command.
  • Input labels are read on demand. Custom input, macro, and EQ names are populated only when you run get_input_names / get_macro_names / get_eq_names; re-run them after renaming any of these on the processor.

Troubleshooting

SymptomCheck
No connectionConfirm IP control is enabled on the processor and the TCP Port matches its network menu. Verify the Processor IP Address and that the port isn't blocked by a VLAN or firewall.
Volume jumps to silence on the first commandDatasat reads volume in tenths of a dB; a raw passthrough that sent the wrong unit can be interpreted as a deep cut. Drive volume with the volume command (0100), not a raw wire value.
Inputs show as numbers instead of namesRun get_input_names — processors that store custom labels return them via this command.
Connection drops every few minutesSome firmwares idle-disconnect. Lower Status Poll Interval (ms) toward 5000 so polling keeps the socket alive.

See also

  • AV Zones — set this processor as a zone's Volume Device.
  • AV Sources — how room sources route, and where an input-select macro would live.
  • Devices — adding and configuring the device.
  • Commands — viewing and running a device's command list.