Summary
The Sony ZRD-S15G is a Crystal LED display cabinet. This spec covers the binary control protocol used to drive the cabinet via its controller, which is reachable over RS-232 serial, TCP, and UDP. Commands cover display brightness, receiving-card and sending-card display modes (black/freeze/normal), preset switching, low-latency and 3D toggles, controller-mode switching, and per-layer source routing.
Transport
# Three transports are explicitly documented: RS-232, TCP, and UDP.
protocols:
- serial
- tcp
- udp
serial:
baud_rate: 115200
data_bits: 8
parity: none
stop_bits: 1
flow_control: null # UNRESOLVED: "Data Flow: Hexadecimal" refers to hex data encoding, not RS-232 flow control; flow control not stated
addressing:
# Two distinct ports stated; one per IP transport.
tcp_port: 5200
udp_port: 5201
auth:
type: UNRESOLVED # source does not specify authentication
Traits
# - levelable: brightness adjustable 0x00-0xFF (source 3.2.2)
# - routable: layer source switching maps input card+interface to a layer (source 3.6)
traits:
- levelable # inferred from brightness command
- routable # inferred from layer-source switching command
Actions
# Every documented operation is enumerated below. Each carries the verbatim
# payload from the source. Packet layout:
# [55 aa] header | [00 00 fe ff 01 ff ff ff 01 00] fixed protocol content |
# [reg 4 bytes LE] | [data_len 2 bytes LE] | [data...] | [checksum 2 bytes LE]
# Checksum = (sum of all protocol-content + data bytes) + 0x5555, emitted little-endian.
- id: adjust_brightness
label: Adjust Display Brightness
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 01 00 00 02 01 00 {value:02x} {checksum}"
register: "0x02000001"
params:
- name: value
type: integer
description: "Brightness 0x00 (0%) to 0xFF (100%). Ratio = value / 0xFF."
notes:
- "checksum computed as (sum of protocol content + data bytes) + 0x5555, little-endian"
- id: set_receiving_card_black_screen
label: Set Receiving Card to Black Screen
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 00 01 00 02 01 00 ff 54 5b"
register: "0x02000100"
params: []
- id: set_receiving_card_freeze
label: Set Receiving Card to Freeze
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 02 01 00 02 01 00 ff 56 5b"
register: "0x02000102"
params: []
- id: set_receiving_card_unfreeze
label: Set Receiving Card to Unfreeze
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 02 01 00 02 01 00 00 57 5a"
register: "0x02000102"
params: []
- id: set_receiving_card_normal_display
label: Set Receiving Card to Normal Display
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 00 01 00 02 01 00 00 55 5a"
register: "0x02000100"
params: []
- id: switch_preset
label: Switch Preset
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 02 00 00 0a 01 00 {preset:02x} {checksum}"
register: "0x0a000002"
params:
- name: preset
type: integer
description: "Preset number 1-26 (0x01-0x1A). Source: Preset 1=0x01 ... Preset 25=0x19, Preset 26=0x1A."
notes:
- "source examples: preset 1 -> data 01 (checksum 5f 5a); preset 2 -> data 02 (checksum 60 5a)"
- id: enable_low_latency
label: Enable Low Latency
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 11 01 00 10 01 00 01 75 5A"
register: "0x10000111"
params: []
- id: disable_low_latency
label: Disable Low Latency
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 11 01 00 10 01 00 00 74 5A"
register: "0x10000111"
params: []
- id: enable_3d
label: Enable 3D
kind: action
command: "55 AA 00 00 FE FF 01 FF FF FF 01 00 16 01 00 10 01 00 01 7A 5A"
register: "0x10000116"
params: []
- id: disable_3d
label: Disable 3D
kind: action
command: "55 AA 00 00 FE FF 01 FF FF FF 01 00 16 01 00 10 01 00 00 79 5A"
register: "0x10000116"
params: []
- id: set_3d_right_eye
label: 3D Right Eye
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 18 11 00 10 01 00 00 8b 5a"
register: "0x10001118"
params: []
- id: set_3d_left_eye
label: 3D Left Eye
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 18 11 00 10 01 00 01 8c 5a"
register: "0x10001118"
params: []
- id: switch_to_all_in_one_controller_mode
label: Switch to All-in-One Controller Mode
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 f2 ff 08 00 01 00 01 4c 5c"
register: "0x0008fff2"
params: []
- id: switch_to_send_only_controller_mode
label: Switch to Send-Only Controller Mode
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 f2 ff 08 00 01 00 00 4b 5c"
register: "0x0008fff2"
params: []
- id: controller_level_sending_card_black_screen
label: Controller-Level Sending Card Black Screen
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 00 01 00 10 02 00 ff 01 64 5b"
register: "0x10000100"
params: []
notes:
- "card byte 0xff = all output cards on the controller"
- id: output_card_sending_card_black_screen
label: Output-Card-Based Sending Card Black Screen
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 00 01 00 10 02 00 06 01 6B 5A"
register: "0x10000100"
params:
- name: card
type: integer
description: "Output card number (1-based); example uses 6. Use 0xff for all cards."
notes:
- "byte 0x13 = mode: 0x00 normal, 0x01 black screen, 0x02 freeze"
- id: output_card_sending_card_freeze
label: Output-Card-Based Sending Card Freeze
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 00 01 00 10 02 00 06 02 6C 5A"
register: "0x10000100"
params:
- name: card
type: integer
description: "Output card number (1-based); example uses 6. Use 0xff for all cards."
- id: output_card_sending_card_normal_display
label: Output-Card-Based Sending Card Normal Display
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 00 01 00 10 02 00 06 00 6A 5A"
register: "0x10000100"
params:
- name: card
type: integer
description: "Output card number (1-based); example uses 6. Use 0xff for all cards."
- id: switch_layer_source
label: Switch Layer Source
kind: action
command: "55 aa 00 00 fe ff 01 ff ff ff 01 00 03 00 00 0a 03 00 {layer:02x} {card:02x} {iface:02x} {checksum}"
register: "0x0a000003"
params:
- name: layer
type: integer
description: "Layer number (example: 0x01)."
- name: card
type: integer
description: "Input card number, starting from 0 (example: 0x01)."
- name: iface
type: integer
description: "Input card interface number, starting from 0 (example: 0x00)."
notes:
- "source example (layer 1 <- IN2 card 1 iface 0) -> checksum 63 5A"
Feedbacks
# Source section D documents a response/ack packet returned after each command.
# Request and response headers are mirrored: request 55 aa -> response aa 55;
# the source/destination bytes and the ACK byte flip (fe ff -> ff fe).
# The response echoes the register, data length, and returns a status data byte
# (0x00 = success in the worked example).
- id: command_ack
type: binary
description: "Acknowledgement packet mirroring the request with a status byte"
example_response: "aa 55 00 00 ff fe 01 ff ff ff 01 00 f2 ff 08 00 00 00 49 5d"
example_request: "55 aa 00 00 fe ff 01 ff ff ff 01 00 f2 ff 08 00 01 00 00 4b 5c"
notes:
- "status byte position mirrors the request's data byte; 0x00 observed = success"
- "UNRESOLVED: full status-byte value table not documented; non-success codes unknown"
Variables
# Settable continuous parameters are represented as parameterized Actions
# (adjust_brightness, switch_preset). No additional variables documented.
# UNRESOLVED: no further settable parameters found in source.
Events
# No unsolicited notifications documented.
# UNRESOLVED: no event/notification mechanism stated in source.
Macros
# No multi-step sequences described in source.
# UNRESOLVED: no macros documented.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or
# power-on sequencing requirements. Do not infer.
Notes
- Binary protocol:
[55 aa] header+ 10-byte fixed protocol content (00 00 fe ff 01 ff ff ff 01 00) + 4-byte little-endian register address + 2-byte little-endian data length + data bytes + 2-byte little-endian checksum. - Checksum =
(sum of all bytes from offset 0x02 through the last data byte) + 0x5555, emitted little-endian (LSB first). - Register addresses are stored little-endian on the wire; e.g. wire bytes
01 00 00 02represent register0x02000001. - Single-card controllers: use card byte
0xffto address all output cards directly (source 3.5.1 note). - The ZRD-S15G cabinet itself is passive; these commands target its sending/receiving controller. The controller part number is not identified in the refined source.
Provenance
source_domains:
- oss.novastar.tech
source_urls:
- https://oss.novastar.tech/uploads/2025/09/Central-Control-Protocol-Instructions-V1.5.0.pdf
retrieved_at: 2026-07-26T09:45:56.379Z
last_checked_at: 2026-10-07T10:30:44.868Z
Verification Summary
verdict: verified
checked_at: 2026-10-07T10:30:44.868Z
matched_actions: 19
action_count: 19
confidence: medium
summary: "All 19 actions match source frames byte-for-byte, transport values are supported, and the source documents the same 19 command units. (12 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "the refined source text is the controller-side protocol manual; it does not itself name the ZRD-S15G model, controller part number, or firmware range. Cabinet identity assumed from the input metadata."
- "\"Data Flow: Hexadecimal\" refers to hex data encoding, not RS-232 flow control; flow control not stated"
- "full status-byte value table not documented; non-success codes unknown\""
- "no further settable parameters found in source."
- "no event/notification mechanism stated in source."
- "no macros documented."
- "source contains no safety warnings, interlock procedures, or"
- "controller model/part number not stated in source."
- "firmware version compatibility not stated."
- "RS-232 flow control not stated (\"hexadecimal data flow\" = data encoding, not handshake)."
- "full ACK status-byte table not documented (only 0x00 success observed)."
- "no query/read-back commands documented; device state polling unsupported by this source."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0