Summary

Sony VPH-D50Q/D50QM and VPH-G70Q/G70QM/G70QMG CRT projectors controlled via RS-232C/RS-422A serial binary protocol. External controller sends command blocks; projector responds with return data. Supports power control, input routing, picture adjustment, color/brightness uniformity, geometry correction, SIRCS remote emulation, and active memory read/write.

Transport

protocols:
  - serial
serial:
  baud_rate: 38400
  data_bits: 8
  parity: even
  stop_bits: 1
  flow_control: none  # UNRESOLVED: flow control not stated; RS-422A 4-wire assumed
  connector: "9-pin D-subminiature female (D-9S)"
auth:
  type: none  # inferred: no auth procedure in source

Traits

traits:
  - powerable    # power on/off via CMD1=13 CMD2=0A and CMD2=50
  - queryable    # extensive status sense commands CMD1=11
  - routable     # input channel select CMD1=13 CMD2=71
  - levelable    # picture control (contrast, brightness, hue, sharpness, color)

Actions

# Command frame: A5 01 00 01 00 01 03 00 01 00 01 {CMD1} {CMD2} {CMD3} {size} 00 {size} {data} {checksum} 5A
# CMD3=10 for CRT projectors (VPH-G70/D50). Command field below shows CMD1 CMD2 CMD3 bytes only.
# Full frame structure documented in source section 2-2. Byte interval within frame <= 4ms.
# Must wait for return data (CMD1=10) before sending next command.

# --- STATUS SENSE (CMD1=11) - queries ---

- id: device_type_request
  label: Device Type Request
  kind: query
  command: "11 00 10"
  params: []

- id: err_request
  label: Error Request
  kind: query
  command: "11 08 10"
  params: []

- id: power_status_sense
  label: Power Status Sense
  kind: query
  command: "11 10 10"
  params: []
  note: "CMD2=10 collision: source's first CMD1=10,11 table assigns 11 10 to POWER STATUS SENSE, while the later STATUS SENSE (CMD1=11) table assigns the same 11 10 to POWER SAVING STATUS SENSE. Differentiation mechanism is unclear from source."

- id: power_saving_status_sense
  label: Power Saving Status Sense
  kind: query
  command: "11 10 10"
  params: []
  note: "CMD2=10 collision: source's later STATUS SENSE (CMD1=11) table lists POWER SAVING STATUS SENSE at 11 10, but the earlier CMD1=10,11 table lists POWER STATUS SENSE at the same hex. Source distinguishes 00=OFF, 01=ON."

- id: set_mode_status_sense
  label: Set Mode Status Sense
  kind: query
  command: "11 0D 10"
  params: []

- id: pole_status_sense
  label: Pole Status Sense
  kind: query
  command: "11 0E 10"
  params: []

- id: all_white_mode_status_sense
  label: All White Mode Status Sense
  kind: query
  command: "11 0F 10"
  params: []

- id: picture_muting_status_sense
  label: Picture Muting Status Sense
  kind: query
  command: "11 11 10"
  params: []

- id: protection_status_sense
  label: Protection Status Sense
  kind: query
  command: "11 17 10"
  params: []

- id: fh_too_high_status_sense
  label: FH Too High Status Sense
  kind: query
  command: "11 18 10"
  params: []

- id: over_correction_status_sense
  label: Over Correction Status Sense
  kind: query
  command: "11 19 10"
  params: []

- id: comm_target_device_index_sense
  label: Comm Target Device Index Sense
  kind: query
  command: "11 1A 10"
  params: []

- id: nvm_imem_entry_load_from_sense
  label: NVM IMEM Entry Load From Sense
  kind: query
  command: "11 1B 10"
  params: []

- id: signal_stabilized_sense
  label: Signal Stabilized Sense
  kind: query
  command: "11 1C 10"
  params: []

- id: signal_act_sense
  label: Signal Act Sense
  kind: query
  command: "11 1D 10"
  params: []

- id: software_ver_request
  label: Software Version Request
  kind: query
  command: "11 20 10"
  params: []

- id: power_saving_act_sense
  label: Power Saving Act Sense
  kind: query
  command: "11 2B 10"
  params: []

- id: all_white_act_sense
  label: All White Act Sense
  kind: query
  command: "11 2C 10"
  params: []

- id: pic_orbiting_sense
  label: Picture Orbiting Sense
  kind: query
  command: "11 30 10"
  params: []

- id: crt_active_time_sense
  label: CRT Active Time Sense
  kind: query
  command: "11 31 10"
  params: []

- id: input_status_signal_sense
  label: Input Status Sense (Signal)
  kind: query
  command: "11 40 10"
  params: []

- id: channel_switcher_sense
  label: Channel Switcher Sense
  kind: query
  command: "11 43 10"
  params: []

- id: fh_fv_sync_sense
  label: fH/fV/Sync Sense
  kind: query
  command: "11 49 10"
  params: []

- id: power_direct_status_sense
  label: Power Direct Status Sense
  kind: query
  command: "11 50 10"
  params: []

- id: power_on_delay_status_sense
  label: Power On Delay Status Sense
  kind: query
  command: "11 51 10"
  params: []

- id: bnc_old_switcher_status_sense
  label: 5BNC Old Switcher Status Sense
  kind: query
  command: "11 52 10"
  params: []

- id: auto_background_status_sense
  label: Auto Background Status Sense
  kind: query
  command: "11 55 10"
  params: []

- id: abl_link_status_sense
  label: ABL Link Status Sense
  kind: query
  command: "11 56 10"
  params: []

- id: ir_in_status_sense
  label: IR In Status Sense
  kind: query
  command: "11 57 10"
  params: []

- id: osd_language_status_sense
  label: OSD Language Status Sense
  kind: query
  command: "11 60 10"
  params: []

- id: osd_show_status_sense
  label: OSD Show Status Sense
  kind: query
  command: "11 61 10"
  params: []

- id: input_status_settings_sense
  label: Input Status Sense (Settings)
  kind: query
  command: "11 70 10"
  params: []

- id: video_setting_sense
  label: Video Setting Sense
  kind: query
  command: "11 74 10"
  params: []

- id: input_a_setting_sense
  label: Input A Setting Sense
  kind: query
  command: "11 78 10"
  params: []

- id: input_b_setting_sense
  label: Input B Setting Sense
  kind: query
  command: "11 7C 10"
  params: []

- id: old_switcher_all_setting_sense
  label: Old Switcher All Setting Sense
  kind: query
  command: "11 80 10"
  params: []

- id: old_switcher_setting_sense
  label: Old Switcher Setting Sense
  kind: query
  command: "11 81 10"
  params: []

- id: screen_type_sense
  label: Screen Type Sense
  kind: query
  command: "11 88 10"
  params: []

- id: color_uniformity_setting_sense
  label: Color Uniformity Setting Sense
  kind: query
  command: "11 89 10"
  params: []

- id: brightness_uniformity_setting_sense
  label: Brightness Uniformity Setting Sense
  kind: query
  command: "11 8A 10"
  params: []

- id: color_temp_setting_sense
  label: Color Temperature Setting Sense
  kind: query
  command: "11 20 10"
  params: []
  note: "CMD2=20 collision with software_ver_request; source lists as separate row in settings table. May be differentiated by data payload."

- id: d_picture_setting_sense
  label: D Picture Setting Sense
  kind: query
  command: "11 20 10"
  params: []
  note: "CMD2=20 collision; see color_temp_setting_sense note."

- id: vshift_setting_sense
  label: V.Shift Setting Sense
  kind: query
  command: "11 20 10"
  params: []
  note: "CMD2=20 collision; see color_temp_setting_sense note."

- id: ntsc_setup_sense
  label: NTSC Setup Sense
  kind: query
  command: "11 20 10"
  params: []
  note: "CMD2=20 collision; see color_temp_setting_sense note."

- id: component_video_memory_setting_sense
  label: Component Setting / Video Memory Setting Sense
  kind: query
  command: "11 F1 10"
  params: []

# --- SYSTEM SELECT (CMD1=13) - actions ---

- id: power_request
  label: Power Request
  kind: action
  command: "13 0A 10 {power}"
  params:
    - name: power
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ON

- id: set_mode_act_select
  label: Set Mode Act Select
  kind: action
  command: "13 0D 10 {mode}"
  params:
    - name: mode
      type: enum
      values:
        - "00"  # USER
        - "01"  # SERVICE

- id: pole_status_select
  label: Pole Status Select
  kind: action
  command: "13 0E 10 {pole}"
  params:
    - name: pole
      type: enum
      values:
        - "00"  # NORMAL
        - "01"  # HINV
        - "02"  # VINV
        - "03"  # HVINV

- id: picture_muting_status_select
  label: Picture Muting Status Select
  kind: action
  command: "13 11 10 {muting}"
  params:
    - name: muting
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ON

- id: all_white_mode_all_write
  label: All White Mode All Write
  kind: action
  command: "13 40 10"
  params: []

- id: all_white_mode_onoff_select
  label: All White Mode On/Off Select
  kind: action
  command: "13 41 10 {state}"
  params:
    - name: state
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ON

- id: all_white_mode_time_write
  label: All White Mode Time Write
  kind: action
  command: "13 42 10 {minutes}"
  params:
    - name: minutes
      type: integer
      description: "Duration in minutes (1 byte, * 1 Min)"

- id: pic_orbiting_all_write
  label: Picture Orbiting All Write
  kind: action
  command: "13 43 10"
  params: []

- id: pic_orbiting_onoff_select
  label: Picture Orbiting On/Off Select
  kind: action
  command: "13 44 10 {state}"
  params:
    - name: state
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ON

- id: pic_orbiting_time_write
  label: Picture Orbiting Time Write
  kind: action
  command: "13 45 10 {minutes}"
  params:
    - name: minutes
      type: integer
      description: "Duration in minutes (1 byte, * 1 Min)"

- id: power_saving_all_select
  label: Power Saving All Select
  kind: action
  command: "13 49 10"
  params: []

- id: power_saving_onoff_select
  label: Power Saving On/Off Select
  kind: action
  command: "13 4A 10 {state}"
  params:
    - name: state
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ON

- id: power_saving_time_write
  label: Power Saving Time Write
  kind: action
  command: "13 4B 10 {minutes}"
  params:
    - name: minutes
      type: integer
      description: "Duration in minutes (1 byte, * 1 Min)"

- id: power_direct_select
  label: Power Direct Select
  kind: action
  command: "13 50 10 {power}"
  params:
    - name: power
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ON

- id: power_on_delay_status_select
  label: Power On Delay Status Select
  kind: action
  command: "13 51 10 {state}"
  params:
    - name: state
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ON

- id: bnc_old_switcher_status_select
  label: 5BNC Old Switcher Status Select
  kind: action
  command: "13 52 10 {state}"
  params:
    - name: state
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ON

- id: auto_background_select
  label: Auto Background Select
  kind: action
  command: "13 55 10 {state}"
  params:
    - name: state
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ON

- id: abl_link_status_select
  label: ABL Link Status Select
  kind: action
  command: "13 56 10 {state}"
  params:
    - name: state
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ON

- id: ir_in_status_select
  label: IR In Status Select
  kind: action
  command: "13 57 10 {mode}"
  params:
    - name: mode
      type: enum
      values:
        - "00"  # FRONT+REAR
        - "01"  # FRONT
        - "02"  # REAR

- id: osd_language_select
  label: OSD Language Select
  kind: action
  command: "13 60 10 {language}"
  params:
    - name: language
      type: enum
      values:
        - "00"  # ENGLISH
        - "01"  # FRENCH
        - "02"  # GERMAN
        - "03"  # ITALIAN
        - "04"  # SPANISH
        - "05"  # JAPANESE
        - "06"  # CHINESE

- id: osd_show_select
  label: OSD Show Select
  kind: action
  command: "13 61 10 {mode}"
  params:
    - name: mode
      type: enum
      values:
        - "00"  # ON
        - "01"  # NORMAL OFF
        - "02"  # ALL OFF

- id: input_all_select
  label: Input All Select
  kind: action
  command: "13 70 10"
  params: []

- id: input_channel_select
  label: Input Channel Select
  kind: action
  command: "13 71 10 {channel}"
  params:
    - name: channel
      type: enum
      values:
        - "00"  # VIDEO
        - "01"  # INPUT A
        - "02"  # INPUT B
        - "03"  # OLD SWITCHER

- id: old_switcher_channel_select
  label: Old Switcher Channel Select
  kind: action
  command: "13 72 10 {channel}"
  params:
    - name: channel
      type: integer
      description: "00-07=Switcher1-1 to 1-8, 10-17=Switcher2-1 to 2-8, 20=OTHER"

- id: video_all_select
  label: Video All Select
  kind: action
  command: "13 74 10"
  params: []

- id: video_signal_select
  label: Video Signal Select
  kind: action
  command: "13 75 10 {signal}"
  params:
    - name: signal
      type: enum
      values:
        - "10"  # VIDEO (CVBS)
        - "11"  # S-VIDEO

- id: video_col_sys_select
  label: Video Color System Select
  kind: action
  command: "13 76 10 {system}"
  params:
    - name: system
      type: enum
      values:
        - "00"  # AUTO
        - "07"  # NTSC
        - "19"  # PAL
        - "1D"  # SECAM
        - "05"  # NTSC443
        - "2B"  # PAL-M

- id: video_idtv_use_select
  label: Video IDTV Use Select
  kind: action
  command: "13 77 10 {use}"
  params:
    - name: use
      type: enum
      values:
        - "00"  # NOT USE
        - "01"  # USE

- id: input_a_all_select
  label: Input A All Select
  kind: action
  command: "13 78 10"
  params: []

- id: input_a_signal_select
  label: Input A Signal Select
  kind: action
  command: "13 79 10 {signal}"
  params:
    - name: signal
      type: enum
      values:
        - "10"  # VIDEO
        - "11"  # S-VIDEO
        - "20"  # RGB
        - "30"  # COMPONENT
        - "40"  # HDTV YPbPr
        - "41"  # HDTV GBR

- id: input_a_col_sys_select
  label: Input A Color System Select
  kind: action
  command: "13 7A 10 {system}"
  params:
    - name: system
      type: enum
      values:
        - "00"  # AUTO
        - "07"  # NTSC
        - "19"  # PAL
        - "1D"  # SECAM
        - "05"  # NTSC443
        - "2B"  # PAL-M

- id: input_a_idtv_use_select
  label: Input A IDTV Use Select
  kind: action
  command: "13 7B 10 {use}"
  params:
    - name: use
      type: enum
      values:
        - "00"  # NOT USE
        - "01"  # USE

- id: input_b_all_select
  label: Input B All Select
  kind: action
  command: "13 7C 10"
  params: []

- id: input_b_signal_select
  label: Input B Signal Select
  kind: action
  command: "13 7D 10 {signal}"
  params:
    - name: signal
      type: enum
      values:
        - "10"  # VIDEO
        - "11"  # S-VIDEO
        - "20"  # RGB
        - "30"  # COMPONENT
        - "40"  # HDTV YPbPr
        - "41"  # HDTV GBR

- id: input_b_col_sys_select
  label: Input B Color System Select
  kind: action
  command: "13 7E 10 {system}"
  params:
    - name: system
      type: enum
      values:
        - "00"  # AUTO
        - "07"  # NTSC
        - "19"  # PAL
        - "1D"  # SECAM
        - "05"  # NTSC443
        - "2B"  # PAL-M

- id: input_b_idtv_use_select
  label: Input B IDTV Use Select
  kind: action
  command: "13 7F 10 {use}"
  params:
    - name: use
      type: enum
      values:
        - "00"  # NOT USE
        - "01"  # USE

- id: old_switcher_all_select
  label: Old Switcher All Select
  kind: action
  command: "13 80 10"
  params: []

- id: old_switcher_colsys_idtv_select
  label: Old Switcher Colsys IDTV Select
  kind: action
  command: "13 81 10"
  params: []

- id: old_switcher_col_sys_select
  label: Old Switcher Color System Select
  kind: action
  command: "13 82 10 {system}"
  params:
    - name: system
      type: enum
      values:
        - "00"  # AUTO
        - "07"  # NTSC
        - "19"  # PAL
        - "1D"  # SECAM
        - "05"  # NTSC443
        - "2B"  # PAL-M

- id: old_switcher_idtv_use_select
  label: Old Switcher IDTV Use Select
  kind: action
  command: "13 83 10 {use}"
  params:
    - name: use
      type: enum
      values:
        - "00"  # NOT USE
        - "01"  # USE

- id: screen_type_select
  label: Screen Type Select
  kind: action
  command: "13 88 10 {type}"
  params:
    - name: type
      type: enum
      values:
        - "00"  # S1
        - "01"  # S2

- id: color_uniformity_setting_select
  label: Color Uniformity Setting Select
  kind: action
  command: "13 89 10 {setting}"
  params:
    - name: setting
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ADJUST
        - "02"  # PRESET S1
        - "03"  # PRESET S2
        - "04"  # PRESET S3

- id: brightness_uniformity_setting_select
  label: Brightness Uniformity Setting Select
  kind: action
  command: "13 8A 10 {setting}"
  params:
    - name: setting
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ADJUST
        - "02"  # PRESET S1
        - "03"  # PRESET S2
        - "04"  # PRESET S3

- id: color_temp_select
  label: Color Temperature Select
  kind: action
  command: "13 20 10 {temp}"
  params:
    - name: temp
      type: enum
      values:
        - "00"  # 9300K
        - "01"  # 6500K
        - "02"  # 5400K
        - "03"  # 3200K
        - "04"  # PRESET
  note: "CMD2=20 collision with other settings commands; may be differentiated by data payload."

- id: d_picture_select
  label: D Picture Select
  kind: action
  command: "13 20 10 {state}"
  params:
    - name: state
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ON
  note: "CMD2=20 collision; see color_temp_select note."

- id: vshift_select
  label: V.Shift Select
  kind: action
  command: "13 20 10 {mode}"
  params:
    - name: mode
      type: enum
      values:
        - "00"  # WIDE
        - "01"  # NARROW
  note: "CMD2=20 collision; see color_temp_select note."

- id: ntsc_setup_select
  label: NTSC Setup Select
  kind: action
  command: "13 20 10 {setup}"
  params:
    - name: setup
      type: enum
      values:
        - "00"  # 0%
        - "01"  # 7.5%
  note: "CMD2=20 collision; see color_temp_select note."

- id: component_video_memory_select
  label: Component Setting / Video Memory Select
  kind: action
  command: "13 F1 10"
  params: []

- id: clamp_select
  label: Clamp Select
  kind: action
  command: "13 F2 10 {clamp}"
  params:
    - name: clamp
      type: enum
      values:
        - "00"  # AUTO
        - "01"  # SONG
        - "02"  # HC
        - "03"  # HP
        - "04"  # TRILEVELS

- id: sync_select
  label: Sync Select
  kind: action
  command: "13 F3 10 {sync}"
  params:
    - name: sync
      type: enum
      values:
        - "00"  # AUTO
        - "01"  # INTERNAL
        - "02"  # EXTERNAL
        - "03"  # EXTERNAL HV

- id: sync_osc_shift_setting_select
  label: Sync OSC Shift Setting Select
  kind: action
  command: "13 F5 10 {shift}"
  params:
    - name: shift
      type: enum
      values:
        - "00"  # 1
        - "01"  # 2

# --- INTERNAL TEST SIGNAL (CMD1=15) ---

- id: osc_int_onoff_status_sense
  label: OSC Int On/Off Status Sense
  kind: query
  command: "15 01 10"
  params: []

- id: osc_internal_status_sense
  label: OSC Internal Status Sense
  kind: query
  command: "15 10 10"
  params: []
  note: "CMD2=10 collision with osc_int_onoff_select."

- id: osc_int_onoff_select
  label: OSC Int On/Off Select
  kind: action
  command: "15 10 10 {state}"
  params:
    - name: state
      type: enum
      values:
        - "00"  # OFF
        - "01"  # ON
  note: "CMD2=10 collision with osc_internal_status_sense; source lists as separate rows."

- id: osc_internal_select
  label: OSC Internal Select
  kind: action
  command: "15 20 10 {pattern}"
  params:
    - name: pattern
      type: integer
      description: "Test pattern 0-7 (1-8)"

# --- SIRCS CODE DIRECT (CMD1=16) ---

- id: sircs_code_direct
  label: SIRCS Code Direct
  kind: action
  command: "16 20 10 {sircs_code} {repeat}"
  params:
    - name: sircs_code
      type: integer
      description: "SIRCS code value 0x00-0xFF; high nibble=row group, low nibble=function"
    - name: repeat
      type: enum
      values:
        - "00"  # ONE SHOT (press once)
        - "01"  # REPEAT (hold pressing)
  note: "Minimum 180ms interval between consecutive SIRCS commands. Error codes: 04=SIZE ERROR, 05=SELECT ERROR, 07=SIRCS BUSY ERROR."

# --- ACTIVE MEMORY READ (CMD1=30) - queries ---

- id: color_uniformity_data_read
  label: Color Uniformity Data Read
  kind: query
  command: "30 08 10"
  params: []

- id: cxa1839_00h_data_read
  label: CXA1839 00H Data Read
  kind: query
  command: "30 10 10"
  params: []
  note: "CMD2=10 collision with brightness_uniformity_read."

- id: brightness_uniformity_read
  label: Brightness Uniformity Read / Direct Read
  kind: query
  command: "30 10 10"
  params: []
  note: "CMD2=10 collision with cxa1839_00h_data_read; source lists as separate row."

- id: cxa1839_05h_data_read
  label: CXA1839 05H Data Read
  kind: query
  command: "30 20 10"
  params: []
  note: "CMD2=20 collision with picture_control_data_read."

- id: picture_control_data_read
  label: Picture Control Data Read
  kind: query
  command: "30 20 10"
  params: []
  note: "CMD2=20 collision with cxa1839_05h_data_read; source lists as separate row."

- id: cxa1839_08h_data_read
  label: CXA1839 08H Data Read
  kind: query
  command: "30 27 10"
  params: []

- id: rgb_size_data_read
  label: RGB Size Data Read
  kind: query
  command: "30 52 10"
  params: []

- id: rgb_shift_data_read
  label: RGB Shift Data Read
  kind: query
  command: "30 54 10"
  params: []

- id: blanking_data_read
  label: Blanking Data Read
  kind: query
  command: "30 56 10"
  params: []

- id: cent_data_read
  label: Centering Data Read
  kind: query
  command: "30 58 10"
  params: []

# --- ACTIVE MEMORY WRITE (CMD1=32) - actions ---

- id: color_uniformity_data_all_write
  label: Color Uniformity Data All Write
  kind: action
  command: "32 08 10"
  params: []

- id: color_uniformity_data_rgb_write
  label: Color Uniformity Data R/G/B Write
  kind: action
  command: "32 09 10"
  params:
    - name: color
      type: enum
      values:
        - "00"  # R
        - "01"  # G
        - "02"  # B

- id: brightness_uniformity_data_all_write
  label: Brightness Uniformity Data All Write
  kind: action
  command: "32 0A 10"
  params: []

- id: brightness_uniformity_data_lrtb_write
  label: Brightness Uniformity Data LR/TB Write
  kind: action
  command: "32 0B 10"
  params: []

- id: cxa1839_00h_data_write
  label: CXA1839 00H Data Write
  kind: action
  command: "32 10 10"
  params: []

- id: cxa1839_05h_data_write
  label: CXA1839 05H Data Write
  kind: action
  command: "32 21 10"
  params: []

- id: cxa1839_08h_data_write
  label: CXA1839 08H Data Write
  kind: action
  command: "32 29 10"
  params: []

- id: format_write
  label: Format Write
  kind: action
  command: "32 20 10"
  params:
    - name: format
      type: enum
      values:
        - "00"  # ORDINARY
        - "01"  # RGB
        - "02"  # COMP

- id: picture_control_data_all_write
  label: Picture Control Data All Write
  kind: action
  command: "32 52 10"
  params: []

- id: picture_control_data_write
  label: Picture Control Data Write
  kind: action
  command: "32 53 10"
  params:
    - name: picture_type
      type: enum
      values:
        - "00"  # CONTRAST
        - "01"  # BRIGHTNESS
        - "02"  # HUE
        - "03"  # SHARPNESS
        - "04"  # COLOR

- id: rgb_size_data_all_write
  label: RGB Size Data All Write
  kind: action
  command: "32 54 10"
  params: []

- id: rgb_size_data_hv_write
  label: RGB Size Data H/V Write
  kind: action
  command: "32 55 10"
  params:
    - name: size_type
      type: enum
      values:
        - "00"  # H COARSE
        - "01"  # H FINE
        - "02"  # V COARSE
        - "03"  # V FINE

- id: rgb_shift_data_all_write
  label: RGB Shift Data All Write
  kind: action
  command: "32 56 10"
  params: []

- id: rgb_shift_data_hv_write
  label: RGB Shift Data H/V Write
  kind: action
  command: "32 57 10"
  params:
    - name: shift_type
      type: enum
      values:
        - "00"  # H COARSE
        - "01"  # H FINE
        - "02"  # V

- id: blanking_data_all_write
  label: Blanking Data All Write
  kind: action
  command: "32 58 10"
  params: []

- id: blanking_data_write
  label: Blanking Data Write
  kind: action
  command: "32 59 10"
  params:
    - name: position
      type: enum
      values:
        - "00"  # LEFT
        - "01"  # RIGHT
        - "02"  # TOP
        - "03"  # BOTTOM
    - name: blanking_type
      type: enum
      values:
        - "00"  # H COARSE
        - "01"  # H FINE SERVICEMAN
        - "02"  # H FINE
        - "09"  # H COARSE INVERT
        - "0A"  # H FINE SERVICEMAN INVERT
        - "0B"  # H FINE INVERT
        - "12"  # V COARSE
        - "13"  # V FINE SERVICEMAN
        - "14"  # V FINE

- id: cent_data_all_write
  label: Centering Data All Write
  kind: action
  command: "32 60 10"
  params: []

- id: cent_data_write
  label: Centering Data Write
  kind: action
  command: "32 61 10"
  params: []

Feedbacks

- id: return_ack
  type: enum
  values: [ack]
  description: "Return Data ACK (CMD1=10, CMD2=10)"

- id: return_ack_with_data
  type: string
  description: "Return Data ACK with data payload (CMD1=10, CMD2=20)"

- id: return_nak
  type: enum
  values: [nak]
  description: "Return Data NAK (CMD1=10, CMD2=11). Indicates communication error or unrecognized command."

- id: error_data_set
  type: object
  description: "Error data set response (CMD1=10, CMD2=F0). Contains serial code (32-bit), power BCD, comm MCU error BCD, OSD MCU error BCD, regi MCU error BCD."
  fields:
    - name: serial_code
      type: string
      description: "4-byte serial code"
    - name: power_error
      type: integer
      description: "Power status BCD (00-99)"
    - name: comm_mcu_error
      type: integer
      description: "Comm MCU error BCD (00-99)"
    - name: osd_mcu_error
      type: integer
      description: "OSD MCU error BCD (00-99)"
    - name: regi_mcu_error
      type: integer
      description: "Regi MCU error BCD (00-99)"

- id: error_code
  type: enum
  values:
    - "00"  # UNDEFINED COMMAND
    - "01"  # PROJECTOR HEAD IS NOT POWER ON
    - "02"  # ANY PROTECT IS ON
    - "03"  # SIZE ERROR
    - "04"  # SELECT ERROR
    - "05"  # RANGE OVER
    - "06"  # SIRCS BUSY
    - "07"  # DATA NOT STABILIZED
    - "08"  # CHECK SUM ERROR
    - "10"  # FRAMING ERROR
    - "20"  # PARITY ERROR
    - "30"  # OVER ERROR
    - "40"  # OTHER ERROR
  description: "Error codes returned in NAK or error responses"

- id: set_mode_status
  type: enum
  values: ["00", "01", "02"]
  description: "00=USER, 01=SERVICE, 02=FACTORY"

- id: pole_status
  type: enum
  values: ["00", "01", "02", "03"]
  description: "00=NORMAL, 01=HINV, 02=VINV, 03=HVINV"

- id: power_status
  type: enum
  values: ["00", "01"]
  description: "00=OFF, 01=ON"

- id: input_status
  type: enum
  values: ["00", "01", "02", "03"]
  description: "00=VIDEO, 01=INPUT A, 02=INPUT B, 03=OLD SWITCHER"

- id: signal_stabilized
  type: enum
  values: ["00", "01"]
  description: "00=INSTABILITY, 01=STABILITY"

- id: signal_req
  type: enum
  values: ["10", "11", "20", "30", "40", "41", "50", "52"]
  description: "10=VIDEO CVBS, 11=VIDEO YC, 20=RGB, 30=COMP, 40=HDTV YPbPr, 41=HDTV GBR, 50=IDTV, 52=IDTV NTSC"

- id: col_sys_status
  type: enum
  values: ["00", "07", "19", "1D", "05", "2B", "02", "10"]
  description: "00=INVALID, 07=NTSC, 19=PAL, 1D=SECAM, 05=NTSC443, 2B=PAL-M, 02=BW60, 10=BW50"

- id: screen_type_status
  type: enum
  values: ["00", "01"]
  description: "00=S1, 01=S2"

- id: color_temp_status
  type: enum
  values: ["00", "01", "02", "03", "04"]
  description: "00=9300K, 01=6500K, 02=5400K, 03=3200K, 04=PRESET"

- id: osd_language_status
  type: enum
  values: ["00", "01", "02", "03", "04", "05", "06"]
  description: "00=ENGLISH, 01=FRENCH, 02=GERMAN, 03=ITALIAN, 04=SPANISH, 05=JAPANESE, 06=CHINESE"

- id: osc_int_onoff_status
  type: enum
  values: ["00", "01"]
  description: "00=OFF, 01=ON"

- id: osc_internal_pattern
  type: integer
  description: "Test pattern number 0-7 (1-8)"

- id: component_format_status
  type: enum
  values: ["00", "01"]
  description: "Component format (returned by 13 F1 / 11 F1): 00=SMPTE/EBU-N10, 01=BETACAM 7.5"

- id: video_memory_status
  type: enum
  values: ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A"]
  description: "Video memory slot (returned by 13 F1 / 11 F1): 00=OFF, 01-0A=1-10"

- id: slot_no_status
  type: enum
  values: ["00", "01", "02", "03", "04", "05", "06", "07"]
  description: "Slot number (returned by 11 F1): 00-07=1-8"

Variables

# UNRESOLVED: active memory write data fields (convergence, geometry, uniformity adjustments)
# are structured multi-byte payloads whose exact byte mapping is not fully specified in the
# source. The source provides parameter type enums but not the complete byte-level data layout
# for each write operation. These would need device-level testing or additional Sony internal
# documentation to map accurately.

Events

# Source describes no unsolicited notifications. All communication is request-response.
# Projector only sends return data after receiving a command from the controller.

Macros

# UNRESOLVED: no macro sequences described in source

Safety

confirmation_required_for: []
interlocks:
  - description: "Controller must not send next command until return data received from projector"
  - description: "Data transmitted while 7-SEG LED indicates '10' (signal not stable) is not recognized"
  - description: "DATA WRITE commands in USER mode may cause displayed picture to disappear"
# UNRESOLVED: projector protection/fault behavior when PROTECT is ON (error code 02) not fully detailed

Notes

  • Binary serial protocol. Command frame: A5 {receiver_idx} {sender_idx} {CMD1} {CMD2} {CMD3=10} {data_size} 00 {data_size} {data} {checksum} 5A
  • Default indexes: receiver=01/00/01/00/01 (peripheral/group/device), sender=03/00/01/00/01 (controller)
  • CMD3 fixed at 10 hex for CRT projectors (VPH-G70/D50)
  • Checksum: XOR of bytes B1 through Bn (excluding start A5 and end 5A)
  • Byte transfer interval within a command block must not exceed 4 ms
  • SYSTEM SELECT and ACTIVE MEMORY WRITE commands take ~800 ms for return data
  • SIRCS DIRECT commands require >= 180 ms interval between consecutive transmissions
  • Factory default baud rate is 38400 bps; configurable via projector OSD service menu
  • Connector: 9-pin D-subminiature female (RS-422A on projector side)
  • Several CMD2 values appear in multiple command table rows with different functions (notably CMD2=20 and CMD2=10 under CMD1=11 and CMD1=13). Differentiation mechanism is unclear from source documentation — may involve data payload context or sub-command bytes.
  • ROM version query supports: 03=ALL MCU, 04=MAIN MCU, 05=REGI MCU, 06=OSD MCU, 07=COMM MCU

Provenance

source_domains:
  - pdf.textfiles.com
  - idoc.pub
  - remotecentral.com
source_urls:
  - "http://pdf.textfiles.com/manuals/STARINMANUALS/Sony%20Video/Manuals/Archive/VPH-D50Q%20-%20Protocol.pdf"
  - https://idoc.pub/documents/sony-projector-vph-d50-protocol-manu-19n0y55995lv
  - https://www.remotecentral.com/cgi-bin/codes/sony/vph-d50q/
retrieved_at: 2026-06-12T01:57:49.010Z
last_checked_at: 2026-06-12T19:58:15.043Z

Verification Summary

verdict: verified
checked_at: 2026-06-12T19:58:15.043Z
matched_actions: 129
action_count: 129
confidence: medium
summary: "All 129 spec actions match source command tables exactly; transport parameters (38400 baud, 8 data bits, even parity, 1 stop bit, D-9S connector) are confirmed verbatim in the source. (11 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "exact cable pinout for RS-232C controller side not fully specified beyond the RS-232C-to-RS-422A recommendation table"
- "flow control not stated; RS-422A 4-wire assumed"
- "active memory write data fields (convergence, geometry, uniformity adjustments)"
- "no macro sequences described in source"
- "projector protection/fault behavior when PROTECT is ON (error code 02) not fully detailed"
- "exact data byte layout for active memory read/write commands not fully specified"
- "CMD2=20 collision across multiple settings (color temp, D picture, V.shift, NTSC setup) — differentiation mechanism unclear"
- "CMD2=10/20 collisions in active memory read group — differentiation unclear"
- "full SIRCS code table mapping (high nibble row groups) only partially documented"
- "data byte mapping for color/brightness uniformity read/write operations"
- "horizontal frequency dependency for active memory write data ranges"

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