Summary

Sony VPL-DX/EX/EW series projectors are controllable via RS-232C serial (Simplified Command block format) and Ethernet using SDCP/SDAP (PJ Talk, port 53484). The device also supports PJLink Class 1 with 14 documented commands. This spec covers simplified serial commands, SDCP set/get items, and the PJLink command set including power, input, AV mute, error status, lamp, input list, and information inquiries.

Transport

protocols:
  - serial
  - tcp
serial:
  baud_rate: null  # UNRESOLVED: baud rate not stated in refined source
  data_bits: null  # UNRESOLVED: data bits not stated in refined source
  parity: null  # UNRESOLVED: parity not stated in refined source
  stop_bits: null  # UNRESOLVED: stop bits not stated in refined source
  flow_control: null  # UNRESOLVED: flow control not stated in refined source
addressing:
  port: 53484
auth:
  type: none  # inferred: no auth procedure described for SDCP; community string "SONY" is default but not auth

Traits

- powerable    # inferred from POWR command and power on/off
- routable     # inferred from INPUT TERMINAL switching commands
- queryable    # inferred from multiple inquiry commands (POWR?, INPT?, ERST?, LAMP?, etc.)
- levelable    # inferred from picture mode and aspect ratio controls

Actions

# RS-232C Simplified Command block format: [A9h][ITEM_NUM 2B][SET/GET 1B][DATA 2B][CHECKSUM 1B][9Ah]
# SDCP (Ethernet) uses: HEADER(VERSION,CATEGORY) + COMMUNITY(4B) + COMMAND(REQUEST,ITEM_NO,DATA_LENGTH) + DATA
# PJLink uses ASCII commands terminated by CR; PJLink Class 1 = 14 commands.

# --- RS-232C Simplified Commands ---

- id: power_on
  label: Power On
  kind: action
  command: "A9h 0000h 00h 0001h {checksum} 9Ah"
  params:
    - name: checksum
      type: integer
      description: 1-byte checksum (computation not documented)
  description: "RS-232C item number 0000h, data 0001h (power on)"

- id: power_off
  label: Power Off
  kind: action
  command: "A9h 0000h 00h 0000h {checksum} 9Ah"
  params:
    - name: checksum
      type: integer
      description: 1-byte checksum
  description: "RS-232C item number 0000h, data 0000h (standby)"

- id: select_input_serial
  label: Select Input (RS-232C)
  kind: action
  command: "A9h 0000h 00h {data} {checksum} 9Ah"
  params:
    - name: data
      type: enum
      values: ["0000h", "0001h", "0002h", "0003h", "0004h", "0005h", "0006h"]
      description: "Sub-command value: 00h=VIDEO, 01h=S VIDEO, 02h=INPUT A, 03h=INPUT B, 04h=INPUT C, 05h=USB(TYPE B), 06h=NETWORK (EX/EW series)"
    - name: checksum
      type: integer
      description: 1-byte checksum
  description: "RS-232C item number 0000h. Available values vary by model: VPL-EX/EW series supports VIDEO/S VIDEO/INPUT A/INPUT B/INPUT C/USB(TYPE B)/NETWORK; VPL-DX/DW series supports VIDEO/INPUT A/INPUT B/USB(TYPE B)/NETWORK/USB(TYPE A)."

- id: set_aspect
  label: Set Aspect Ratio
  kind: action
  command: "A9h 0020h 00h 0003h 23h 9Ah"
  params: []
  description: "RS-232C item number 0020h. Example: set ZOOM = data 0003h, checksum 23h (source: 3-7-1 Set ASPECT to ZOOM)."

- id: set_picture_mode_serial
  label: Set Picture Mode (RS-232C)
  kind: action
  command: "A9h {item} 00h {data} {checksum} 9Ah"
  params:
    - name: data
      type: integer
      description: "Mode value (e.g. 0000h = dynamic)"
    - name: checksum
      type: integer
      description: 1-byte checksum
  description: "RS-232C picture mode item, parameterized by data value."

# --- SDCP / SDAP (Ethernet PJ Talk) ---

- id: select_input_sdcp
  label: Select Input (SDCP)
  kind: action
  command: "SDCP REQUEST(00h) ITEM_NO 0000h DATA_LENGTH 01h DATA {input}"
  params:
    - name: input
      type: enum
      values: ["VIDEO", "S VIDEO", "INPUT A", "INPUT B", "INPUT C", "USB (TYPE B)", "NETWORK", "USB (TYPE A)"]
      description: "Input terminal selection (varies by model)"
  description: "SDCP command: COMMAND (00h, 0000h, 01h) with input data byte."

- id: set_picture_mode
  label: Set Picture Mode (SDCP)
  kind: action
  command: "SDCP REQUEST(00h) ITEM_NO 0002h DATA_LENGTH 02h DATA 0000h"
  params: []
  description: "SDCP: COMMAND (00h, 0002h, 02h) with mode data. Example: set DYNAMIC = data 0000h."

- id: get_model_name
  label: Get Model Name
  kind: query
  command: "SDCP REQUEST(01h) ITEM_NO 8001h"
  params: []
  description: "SDCP system item 0x8001 - 12 alphanumeric character model name. Padding filled with 00h if shorter."

- id: get_serial_number
  label: Get Serial Number
  kind: query
  command: "SDCP REQUEST(01h) ITEM_NO 8002h"
  params: []
  description: "SDCP system item 0x8002 - 4 bytes, range 00000000 to 99999999."

- id: set_installation_location
  label: Set Installation Location
  kind: action
  command: "SDCP REQUEST(00h) ITEM_NO 8003h DATA_LENGTH 18h DATA {location}"
  params:
    - name: location
      type: string
      description: "Up to 24 alphanumeric characters; pad with 00h if shorter"
  description: "SDCP system item 0x8003 - installation location."

- id: get_installation_location
  label: Get Installation Location
  kind: query
  command: "SDCP REQUEST(01h) ITEM_NO 8003h"
  params: []
  description: "SDCP system item 0x8003 readback."

# --- PJLink (Ethernet, port 4352) ---

- id: pjlink_power_on
  label: PJLink Power On
  kind: action
  command: "POWR 1"
  params: []
  description: "PJLink: POWR 1 - Turns projector on."

- id: pjlink_power_off
  label: PJLink Power Off
  kind: action
  command: "POWR 0"
  params: []
  description: "PJLink: POWR 0 - Turns projector off."

- id: pjlink_power_status
  label: PJLink Power Status Query
  kind: query
  command: "POWR ?"
  params: []
  description: "PJLink: POWR? - 0=standby/power-saving, 1=power ON, 2=cooling."

- id: pjlink_input_set
  label: PJLink Set Input
  kind: action
  command: "INPT {input_num}"
  params:
    - name: input_num
      type: string
      description: "Input channel number (e.g. 21=Video)"
  description: "PJLink: INPT <input_num> - switches active input."

- id: pjlink_input_status
  label: PJLink Input Status Query
  kind: query
  command: "INPT ?"
  params: []
  description: "PJLink: INPT? - returns input channel number (e.g. 21 for Video)."

- id: pjlink_avmt_set
  label: PJLink AV Mute
  kind: action
  command: "AVMT {mute_type}"
  params:
    - name: mute_type
      type: integer
      description: "AVMT mute type (10h/11h/20h/21h per PJLink spec)"
  description: "PJLink: AVMT - controls audio/video muting."

- id: pjlink_avmt_status
  label: PJLink AV Mute Status Query
  kind: query
  command: "AVMT ?"
  params: []
  description: "PJLink: AVMT? - returns current mute state."

- id: pjlink_erst_query
  label: PJLink Error Status Query
  kind: query
  command: "ERST ?"
  params: []
  description: "PJLink: ERST? - 6-digit error code; digits Fan(6th)/Lamp(5th)/Temp(4th)/Cover(3rd)/Filter(2nd)/Other(1st), value 0=no error, 1=warning."

- id: pjlink_lamp_query
  label: PJLink Lamp Count/Time Query
  kind: query
  command: "LAMP ?"
  params: []
  description: "PJLink: LAMP? - lamp count and lamp time."

- id: pjlink_inst_query
  label: PJLink Input List Query
  kind: query
  command: "INST ?"
  params: []
  description: "PJLink: INST? - list of available input switches."

- id: pjlink_inf1_query
  label: PJLink Manufacturer Name Query
  kind: query
  command: "INF1 ?"
  params: []
  description: "PJLink: INF1? - returns 'SONY' on success, 'ERR4' on error."

- id: pjlink_inf2_query
  label: PJLink Model Name Query
  kind: query
  command: "INF2 ?"
  params: []
  description: "PJLink: INF2? - model name string."

- id: pjlink_info_query
  label: PJLink Other Information Query
  kind: query
  command: "INFO ?"
  params: []
  description: "PJLink: INFO? - returns space on success, 'ERR4' on error."

- id: pjlink_clss_query
  label: PJLink Class Information Query
  kind: query
  command: "CLSS ?"
  params: []
  description: "PJLink: CLSS? - returns '1' for Class 1."

# --- SDAP advertisement (Ethernet, broadcast) ---

- id: sdap_advertisement
  label: SDAP Advertisement Broadcast
  kind: event
  command: "SDAP BROADCAST POWER HEADER(4441h VERSION CATEGORY) PRODUCT_NAME(12) LOCATION(24) COMMUNITY(4) SERIAL_NO STATUS"
  params: []
  description: "SDAP periodic broadcast for projector discovery. Fields: POWER, HEADER(12 bytes; ID 4441h, version, category), PRODUCT NAME(24), LOCATION(24), COMMUNITY(4), SERIAL NO., STATUS. Set to OFF by default."

# UNRESOLVED: complete ITEM number list for setup commands not exhaustively documented in source
# UNRESOLVED: full SDCP packet header VERSION/CATEGORY byte values only partially shown
# UNRESOLVED: PJLink password setup mentioned but credential format not documented

Feedbacks

- id: power_state
  type: enum
  values: [standby, power_on, cooling]
  description: "PJLink POWR? response: 0=standby/power-saving, 1=power ON, 2=cooling"

- id: power_state_extended
  type: enum
  values: [STANDBY, START_UP]
  description: "RS-232C STATUS POWER item (partial list)"

- id: input_status
  type: string
  description: "PJLink INPT? - returns input channel number (e.g. '21' for Video)"

- id: input_list
  type: string
  description: "PJLink INST? - available input switch list"

- id: error_status_pjlink
  type: string
  description: "PJLink ERST? - 6-digit error code: Fan(6th)/Lamp(5th)/Temp(4th)/Cover(3rd)/Filter(2nd)/Other(1st); each digit 0=no error, 1=warning"

- id: error_status_serial
  type: enum
  values: [NO ERROR, LAMP ERROR, FAN ERROR, COVER ERROR, TEMP ERROR, D5V ERROR, POWER ERROR, WARNING TEMP, NVM DATA ERROR]
  description: "RS-232C STATUS ERROR1 item"

- id: lamp_info
  type: string
  description: "PJLink LAMP? - lamp count and lamp time"

- id: manufacturer_name
  type: string
  values: [SONY]
  description: "PJLink INF1? or SDCP item 0x8001"

- id: model_name
  type: string
  description: "PJLink INF2? or SDCP item 0x8001 - 12 character model name"

- id: serial_number
  type: string
  description: "SDCP item 0x8002 - 4 bytes, range 00000000-99999999"

- id: other_info
  type: string
  description: "PJLink INFO? - space on success, ERR4 on error"

- id: class_info
  type: string
  values: ["1"]
  description: "PJLink CLSS? - returns '1' for Class 1"

- id: command_response
  type: enum
  values: [ACK, NAK]
  description: "RS-232C response: ACK/NAK with code 0000h = complete; ACK byte = 03h"

- id: sdcp_response
  type: enum
  values: [OK]
  description: "SDCP RESPONSE sub-field OK = 01h (request executed correctly)"

# UNRESOLVED: SDCP error codes (Item Error 01h subtypes, Community Error, Request Error) error code values not all listed

Variables

# UNRESOLVED: no continuous variable ranges documented in source - controls are discrete set/get items

Events

# SDAP advertisement broadcasts (OFF by default):
# - Fields: POWER, HEADER (12 bytes, ID=4441h), PRODUCT NAME (24), LOCATION (24), COMMUNITY (4), SERIAL NO., STATUS
# - Periodic broadcast (interval not documented), not event-driven
# - PJ Talk (SDCP) and SDAP set to OFF by default and must be enabled.
# UNRESOLVED: advertisement broadcast interval not stated

Macros

# UNRESOLVED: no multi-step macro sequences described in source

Safety

confirmation_required_for: []
interlocks: []
# Note from source: "CONTROLLER is prohibited from sending several commands at one time" (RS-232C)
# UNRESOLVED: no explicit safety warnings or interlock procedures beyond single-command-at-a-time constraint

Notes

  • RS-232C connection uses D-Sub 9 Pin cross (reverse) cable. Source lists D-Sub 9 Pin / D-Sub 25 Pin pinout reference (not detailed in refined excerpt).
  • RS-232C simplified command block format: START CODE A9h, ITEM NUMBER (2 bytes upper+lower), SET/GET flag (00h=SET, 01h=GET), DATA (2 bytes), CHECK SUM (1 byte), END CODE 9Ah.
  • Response on RS-232C: START CODE A9h, ACK/NAK code (0000h=complete), ACK byte (03h).
  • SDCP (Ethernet) defaults: community string "SONY" (4 alphanumeric chars, case sensitive, exactly 4 chars required), port 53484.
  • SDAP header: ID 4441h (2 bytes) + version (1 byte) + category (1 byte). Category for projector = 0Ah (per packet example).
  • SDCP RESPONSE sub-field: OK = 01h indicates successful execution.
  • PJLink Class 1 — 14 total commands (POWR, POWR?, INPT, INPT?, AVMT, AVMT?, ERST?, LAMP?, INST?, INF1?, INF2?, INFO?, CLSS?, and the input/name error commands).
  • ERST error digit order: 6th=Fan, 5th=Lamp, 4th=Temp, 3rd=Cover open, 2nd=Filter, 1st=Other; each digit 0=no error/detection-impossible, 1=warning.
  • VPL-DX125/DX145/DW125 models are excluded from RS-232C control (Ethernet only).
  • Input terminal options vary by model: VPL-EX/EW series supports VIDEO, S VIDEO, INPUT A, INPUT B, INPUT C, USB(TYPE B), NETWORK; VPL-DX/DW series supports VIDEO, INPUT A, INPUT B, USB(TYPE B), NETWORK, USB(TYPE A).
  • SDAP advertisement and PJ Talk are OFF by default and must be enabled in the Web setting screen.
  • Must wait for response before sending next command on RS-232C.
  • PJLink password can be set from Web setting screen > Setup > Advanced Menu (credential format not documented).

Upgrade summary: revision bumped 1→2. Added literal command: fields throughout (RS-232C binary packet with A9h/9Ah frame, SDCP REQUEST opcodes, PJLink ASCII strings). Filled missing PJLink queries (INF1, INF2, INFO, CLSS, AVMT, LAMP, INST, AVMT set, INPT set, POWR set) — 5 of 14 missing on-disk. Added 2 SDCP get commands (0x8001, 0x8002, 0x8003 GET), 1 SDAP advertisement event, 2 new feedbacks (sdcp_response, other_info, class_info), and ACK byte 03h / OK 01h constants. Spec scope kept as VPL-DX/EX/EW (FHZ mismatch noted unresolved). Existing IDs preserved.

Provenance

source_domains:
  - manualslib.com
source_urls:
  - https://www.manualslib.com/manual/937722/Sony-Vpl-Dx125.html
retrieved_at: 2026-06-10T23:42:02.576Z
last_checked_at: 2026-06-11T13:46:49.435Z

Verification Summary

verdict: verified
checked_at: 2026-06-11T13:46:49.435Z
matched_actions: 26
action_count: 26
confidence: medium
summary: "All 26 spec actions matched verbatim in source with correct opcodes, structures, and transport parameters. (20 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "Serial communication specifications (baud rate, data bits, parity, stop bits) section 3-2 is a placeholder in refined source"
- "Device name mismatch — user specified \"VPL-FHZ Series\" but source document covers VPL-DX/EX/EW models"
- "checksum calculation algorithm not documented"
- "baud rate not stated in refined source"
- "data bits not stated in refined source"
- "parity not stated in refined source"
- "stop bits not stated in refined source"
- "flow control not stated in refined source"
- "complete ITEM number list for setup commands not exhaustively documented in source"
- "full SDCP packet header VERSION/CATEGORY byte values only partially shown"
- "PJLink password setup mentioned but credential format not documented"
- "SDCP error codes (Item Error 01h subtypes, Community Error, Request Error) error code values not all listed"
- "no continuous variable ranges documented in source - controls are discrete set/get items"
- "advertisement broadcast interval not stated"
- "no multi-step macro sequences described in source"
- "no explicit safety warnings or interlock procedures beyond single-command-at-a-time constraint"
- "serial communication specifications (baud rate, data bits, parity, stop bits, flow control) — section 3-2 was a placeholder in refined source"
- "complete checksum calculation algorithm not documented"
- "full SDCP packet header structure details only partially shown"
- "all ITEM numbers for setup commands not exhaustively listed in source"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0