Summary
D-BOX Motion Engine remote-control protocol for HEMC, HaptiSync Hub, and Motion Engine (Windows PC) products. Spec covers RS-232, UDP, and TCP/IP control of motion platforms — motion intensity, vibration level, mute, experience mode, capture device selection, and queryable platform/media state. Commands use STX/ETX-framed 5-character mnemonics with RS-separated parameters.
Transport
protocols:
- tcp
- udp
- serial
addressing:
tcp_port: 61555
udp_port: 61556
serial:
baud_rate: 19200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
electrical_interface: EIA-232
connector: DB-9
cable: null-modem
auth:
type: none # inferred: no auth procedure in source
framing:
start_of_block: "STX (0x02)"
end_of_block: "ETX (0x03)"
record_separator: "RS (0x1E)"
empty_record_value: "EM (0x19)"
enquiry: "ENQ (0x05)"
request_separator: "GS (0x1D)"
negative_ack: "NAK (0x15)"
target_prefix: "ASCII digit between STX and mnemonic; 0 = unit itself, 1..N = motion platform; defaults to 0 if omitted"
wake_on_lan:
supported: true
notes: "Ethernet only (not Wi-Fi); standard Magic Packet: 6 bytes 0xFF followed by 16 repetitions of the unit's 48-bit MAC, total 102 bytes."
Traits
- powerable # inferred from WSTOP shutdown + Wake-on-LAN power-on
- queryable # inferred from R-prefixed query commands (RPCNT, RFILM, RMOTL, etc.)
- levelable # inferred from motion intensity (WMOTL) and vibration level (WVIBL) commands
- mutable # inferred from WMUTE mute command
Actions
- id: set_motion_intensity
label: Set Motion Intensity Level
kind: action
command: "<STX>#WMOTL<RS>{level}<ETX>"
description: Changes the motion intensity level of the targeted platform.
params:
- name: target
type: integer
description: Target platform number (0 = unit itself, 1..N = motion platform). Substituted for '#' in command.
- name: level
type: number
unit: dB
min: -20
max: 0
description: Motion intensity in decibels. Valid examples "0", "-5.5", "-20".
- id: set_vibration_level
label: Set Vibration Level
kind: action
command: "<STX>#WVIBL<RS>{level}<ETX>"
description: Changes the vibration level of the targeted platform.
params:
- name: target
type: integer
description: Target platform number. Substituted for '#'.
- name: level
type: number
unit: dB
min: -20
max: 0
description: Vibration level in decibels. Valid examples "0", "-5.5", "-20".
- id: set_mute
label: Set Mute
kind: action
command: "<STX>#WMUTE<RS>{state}<ETX>"
description: Activates or deactivates the mute function of the targeted platform.
params:
- name: target
type: integer
description: Target platform number. Substituted for '#'.
- name: state
type: enum
values: [0, 1]
description: "0 = mute deactivated, 1 = mute activated"
- id: set_unit_name
label: Set Unit Name
kind: action
command: "<STX>WNAME<RS>{name}<ETX>"
description: Sets the name of the unit.
params:
- name: name
type: string
description: Name of the unit.
- id: set_motion_delay
label: Set Motion Delay
kind: action
command: "<STX>WDLAY<RS>{delay}<ETX>"
description: Sets the motion delay in ms.
params:
- name: delay
type: integer
unit: ms
description: Motion delay in milliseconds.
- id: set_recognition_tolerance
label: Set Recognition Tolerance
kind: action
command: "<STX>WTOLR<RS>{tolerance}<ETX>"
description: Sets the recognition tolerance in seconds.
params:
- name: tolerance
type: number
unit: seconds
description: Recognition tolerance in seconds.
- id: shutdown_unit
label: Shutdown Unit
kind: action
command: "<STX>WSTOP<ETX>"
description: Shuts down the unit.
params: []
- id: set_capture_device
label: Set Capture Device
kind: action
command: "<STX>WCAPD<RS>{mode}<RS>{device_id}<ETX>"
description: Sets the capture device.
params:
- name: mode
type: enum
values: [0, 1, 2]
description: "0 = Manual (use device_id), 1 = OS Default, 2 = USB Preferred"
- name: device_id
type: string
description: "Capture device identification (from RCAPD response) when mode=0; <EM> (empty record, 0x19) for other modes."
- id: set_experience_mode
label: Set Experience Mode
kind: action
command: "<STX>WEXPM<RS>{mode}<ETX>"
description: Requests to change the experience mode.
params:
- name: mode
type: enum
values: [0, 1, 2, 3]
description: "0 = D-BOX Coded Video, 1 = D-BOX Coded Gaming, 2 = Adaptive Audio, 3 = Adaptive Gaming"
- id: wake_on_lan
label: Wake on LAN
kind: action
command: "MAGIC_PACKET(6x 0xFF + 16x MAC)"
description: Powers on the unit via standard Wake-on-LAN Magic Packet over Ethernet. Unit must have been powered at least once without losing power. Not supported over Wi-Fi.
params:
- name: mac_address
type: string
description: 48-bit MAC address of the unit, repeated 16 times after the 6-byte 0xFF preamble (102-byte payload).
- id: query_platform_count
label: Query Platform Count
kind: query
command: "<STX>RPCNT<ETX>"
description: Requests the number of motion platforms connected to the unit.
params: []
response: "<platform count><ETX>"
- id: query_media_status
label: Query Media Status
kind: query
command: "<STX>RFILM<ETX>"
description: Requests the current media status of the unit (source LED, motion code LED, media title, timecode, duration).
params: []
response: "<source_status><RS><source_status_desc><RS><motion_code_status><RS><motion_code_status_desc><RS><media_title><RS><timecode_seconds><RS><duration_seconds><ETX>"
- id: query_motion_intensity
label: Query Motion Intensity Level
kind: query
command: "<STX>#RMOTL<ETX>"
description: Requests the motion intensity level of the targeted platform.
params:
- name: target
type: integer
description: Target platform number. Substituted for '#'.
response: "<level><ETX> (dB, -20..0)"
- id: query_vibration_level
label: Query Vibration Level
kind: query
command: "<STX>#RVIBL<ETX>"
description: Requests the vibration level of the targeted motion platform.
params:
- name: target
type: integer
description: Target platform number. Substituted for '#'.
response: "<vibration_level><ETX> (dB, -20..0)"
- id: query_mute
label: Query Mute State
kind: query
command: "<STX>#RMUTE<ETX>"
description: Requests the mute setting of the targeted platform.
params:
- name: target
type: integer
description: Target platform number. Substituted for '#'.
response: "<mute><ETX> (1 = deactivated, 0 = activated - per source)"
- id: query_film_count
label: Query Film Count
kind: query
command: "<STX>RFLNB<RS>{filter}<ETX>"
description: Requests the number of films in the database starting with the specified character. Parameter defaults to '*' (all titles) when absent.
params:
- name: filter
type: string
description: "'*' = all titles, '#' = titles beginning with a number, 'A'..'Z' = titles beginning with that letter"
response: "<count><ETX>"
- id: query_unit_name
label: Query Unit Name
kind: query
command: "<STX>RNAME<ETX>"
description: Requests the name of the unit.
params: []
response: "<name><ETX>"
- id: query_motion_delay
label: Query Motion Delay
kind: query
command: "<STX>RDLAY<ETX>"
description: Requests the motion delay in ms.
params: []
response: "<delay><ETX>"
- id: query_recognition_tolerance
label: Query Recognition Tolerance
kind: query
command: "<STX>RTOLR<ETX>"
description: Requests the recognition tolerance in seconds.
params: []
response: "<tolerance><ETX>"
- id: query_capture_devices
label: Query Capture Devices
kind: query
command: "<STX>RCAPD<ETX>"
description: Requests the list of available capture devices (name, description, identification, interface type, use, availability).
params: []
response: "<name><RS><description><RS><id><RS><interface_type><RS><use><RS><availability><ETX> (repeated per device)"
- id: query_experience_mode
label: Query Experience Mode
kind: query
command: "<STX>REXPM<ETX>"
description: Requests the experience mode, mode state, and status code.
params: []
response: "<mode><RS><state><RS><status_code><ETX>"
Feedbacks
- id: platform_count
type: integer
description: Number of motion platforms connected to the unit (from RPCNT).
- id: source_status_led
type: enum
values: [0, 1, 2, 3]
description: "Source status LED from RFILM: 0=Off, 1=Green, 2=Yellow, 3=Red"
- id: source_status_description
type: string
description: Human-readable source status description (from RFILM Parameter B).
- id: motion_code_status_led
type: enum
values: [0, 1, 2, 3]
description: "Motion code status LED from RFILM: 0=Off, 1=Green, 2=Yellow, 3=Red"
- id: motion_code_status_description
type: string
description: Human-readable motion code status description (from RFILM Parameter D).
- id: media_title
type: string
description: Current media title (blank if no media detected).
- id: media_timecode_seconds
type: integer
unit: seconds
description: Current media timecode in seconds (0 if no media detected).
- id: media_duration_seconds
type: integer
unit: seconds
description: Total media duration in seconds (0 if no media detected).
- id: motion_intensity_level
type: number
unit: dB
min: -20
max: 0
description: Motion intensity level of the targeted platform (from RMOTL).
- id: vibration_level
type: number
unit: dB
min: -20
max: 0
description: Vibration level of the targeted platform (from RVIBL).
- id: mute_state
type: enum
values: [0, 1]
description: "Mute state of the targeted platform (from RMUTE). Per source: 1 = deactivated, 0 = activated."
- id: film_count
type: integer
description: Number of films in the database matching the RFLNB filter.
- id: unit_name
type: string
description: Name of the unit (from RNAME).
- id: motion_delay_ms
type: integer
unit: ms
description: Motion delay in milliseconds (from RDLAY).
- id: recognition_tolerance_seconds
type: number
unit: seconds
description: Recognition tolerance in seconds (from RTOLR).
- id: capture_device_interface_type
type: enum
values: [0, 1]
description: "Capture device interface type (from RCAPD Parameter D): 0 = Internal, 1 = External (e.g. USB)"
- id: capture_device_use
type: enum
values: [0, 1]
description: "Capture device use (from RCAPD Parameter E): 0 = Not in use, 1 = In use (only 1 device can be used at any given time)"
- id: capture_device_availability
type: enum
values: [0, 1]
description: "Capture device availability (from RCAPD Parameter F): 0 = Not available (e.g. disconnected), 1 = Available"
- id: experience_mode
type: enum
values: [0, 1, 2, 3]
description: "Experience mode (from REXPM Parameter A): 0 = D-BOX Coded Video, 1 = D-BOX Coded Gaming, 2 = Adaptive Audio, 3 = Adaptive Gaming"
- id: experience_mode_state
type: enum
values: [0, 1, 2]
description: "Mode state (from REXPM Parameter B): 0 = On (functional), 1 = Off (not functional), 2 = Transitioning"
- id: experience_mode_status_code
type: enum
values: [0, 100, 101, 102, 103, 104, 200]
description: "Experience mode status code (from REXPM Parameter C): 0 = Ok, 100 = Mode initialization failure, 101 = Motion initialization failure, 102 = D-BOX HaptiSync Agent not connected, 103 = D-BOX HaptiSync Agent response timeout, 104 = Unknown experience mode, 200 = Exception"
- id: nak_response
type: signal
description: "Negative acknowledge (NAK 0x15) returned when command mnemonic is unrecognized, target unavailable, or parameters invalid. A malformed command receives no response at all."
Variables
- id: motion_intensity
type: number
unit: dB
min: -20
max: 0
read: query_motion_intensity
write: set_motion_intensity
description: Per-platform motion intensity level.
- id: vibration
type: number
unit: dB
min: -20
max: 0
read: query_vibration_level
write: set_vibration_level
description: Per-platform vibration level.
- id: mute
type: enum
values: [0, 1]
read: query_mute
write: set_mute
description: Per-platform mute state.
- id: unit_name
type: string
read: query_unit_name
write: set_unit_name
description: Name of the unit.
- id: motion_delay
type: integer
unit: ms
read: query_motion_delay
write: set_motion_delay
description: Motion delay applied by the unit.
- id: recognition_tolerance
type: number
unit: seconds
read: query_recognition_tolerance
write: set_recognition_tolerance
description: Recognition tolerance applied by the unit.
- id: experience_mode
type: enum
values: [0, 1, 2, 3]
read: query_experience_mode
write: set_experience_mode
description: Current experience mode (Coded Video / Coded Gaming / Adaptive Audio / Adaptive Gaming).
- id: capture_device
type: composite
write: set_capture_device
read: query_capture_devices
description: Selected capture device and capture mode (Manual / OS Default / USB Preferred).
Events
# UNRESOLVED: source documents request/response semantics only - no unsolicited
# push events are described.
Macros
# UNRESOLVED: no multi-step macro sequences described in source.
Safety
confirmation_required_for:
- shutdown_unit # WSTOP shuts down the unit; recommended to confirm before issuing.
interlocks: []
# UNRESOLVED: source does not describe motion-platform safety interlocks,
# power-on sequencing requirements, or fault-recovery procedures beyond the
# REXPM status codes.
Notes
- Source document title: "Motion Engine Remote Control Communication Protocol" — covers HEMC, HaptiSync Hub, and Motion Engine (Windows PC). Mapping to the specific "Digital Satellite" SKU is asserted by the operator, not by the source document.
- Command framing uses non-printable ASCII control characters: STX (0x02), ETX (0x03), RS (0x1E), GS (0x1D), EM (0x19), ENQ (0x05), NAK (0x15). Implementations must emit these as raw bytes, not as the literal
<STX>etc. shown in thecommand:fields. - Target prefix: a single ASCII digit immediately after STX selects the destination (0 = unit itself, 1..N = motion platform). Omitted target defaults to 0. The
#placeholder in command templates represents this digit. - Adding
<ENQ>(0x05) before<ETX>causes the response to include the original request, separated from the response payload by<GS>(0x1D). - A well-formed but unrecognized mnemonic returns a single
<NAK>(0x15). A malformed command (bad framing / missing separators) receives no response at all — clients should implement a timeout. - RS-232 connector is DB-9 EIA-232 with the same pinout as a PC; connection to a PC requires a null-modem cable. Pins 1, 4, 6, 7, 8, 9 are unused.
- TCP and UDP carry the same command set as RS-232 on ports 61555 (TCP) and 61556 (UDP).
- Wake-on-LAN is only available over Ethernet, not Wi-Fi, and requires the unit to have been powered at least once without losing power.
RMUTEresponse semantics in the source read "The mute value is 1 when the platform is deactivated and 0 when it is activated" — this is the inverse of theWMUTEparameter convention; transcribed verbatim from source.
Provenance
source_domains:
- support.d-box.com
source_urls:
- "https://support.d-box.com/hubfs/198-914-0016-EN6%20Motion%20Engine_Remote%20Protocol%20(RS-232_TCP_UDP).pdf"
- "https://support.d-box.com/hubfs/198-914-0016-EN6%20Motion%20Engine_Remote%20Protocol%20%28RS-232_TCP_UDP%29.pdf"
- "https://support.d-box.com/hubfs/129-975-0001-EN7_D-BOX%20TCP_IP%20Monitoring%20Service%20Communication%20API.pdf"
- https://support.d-box.com/en/knowledge/d-box-haptisync-api
- https://support.d-box.com/en/knowledge/welcome-to-our-knowledge-base
retrieved_at: 2026-06-01T23:19:44.867Z
last_checked_at: 2026-06-02T21:41:22.017Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:41:22.017Z
matched_actions: 21
action_count: 21
confidence: medium
summary: "All 21 spec actions matched to source command mnemonics; all transport parameters verified against source; complete coverage. (8 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "firmware version compatibility not stated in source"
- "source document covers the HEMC / HaptiSync Hub / Motion Engine product family; mapping to the specific \"Digital Satellite\" SKU is not stated in source."
- "source documents request/response semantics only - no unsolicited"
- "no multi-step macro sequences described in source."
- "source does not describe motion-platform safety interlocks,"
- "maximum number of motion platforms N supported per unit is not stated in source."
- "command response timing / inter-command delay requirements not stated in source."
- "behavior when ENQ is combined with an unrecognized mnemonic not stated explicitly."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0