Summary

ViewSonic LS850WU WUXGA laser projector with RS-232 and LAN control interfaces. This spec covers the RS-232 command protocol. Serial config: 19200 baud default, 8N1, no flow control. Supports power control, source routing, image adjustment, lamp mode, and queryable status.

Transport

protocols:
  - serial
serial:
  baud_rate: 19200  # default; supports 4800/9600/19200/38400
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: UNRESOLVED  # source does not state this (was inferred none: no auth procedure in source)

Traits

- powerable       # power on/off commands present
- routable        # source input selection commands present
- queryable       # read commands returning status present
- levelable       # contrast, brightness, volume, zoom, focus present

Actions

- id: power_on
  label: Power On
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x00, 0x00, 0x5D]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: power_off
  label: Power Off
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x01, 0x00, 0x5E]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: power_read
  label: Read Power Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x00, 0x5E]
  response_values:
    on: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x18]
    off: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]
    warmup: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x19]
    cooldown: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x1A]

- id: splash_screen_black
  label: Set Splash Screen Black
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x0A, 0x00, 0x67]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: splash_screen_blue
  label: Set Splash Screen Blue
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x0A, 0x01, 0x68]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: splash_screen_read
  label: Read Splash Screen Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x0A, 0x68]
  response_values:
    black: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]
    blue: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x18]

- id: quick_power_off_off
  label: Quick Power Off Disable
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x0B, 0x00, 0x68]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: quick_power_off_on
  label: Quick Power Off Enable
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x0B, 0x01, 0x69]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: quick_power_off_read
  label: Read Quick Power Off Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x0B, 0x69]
  response_values:
    off: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]
    on: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x18]

- id: high_altitude_off
  label: High Altitude Mode Off
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x0C, 0x00, 0x69]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: high_altitude_on
  label: High Altitude Mode On
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x0C, 0x01, 0x6A]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: high_altitude_auto
  label: High Altitude Mode Auto
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x0C, 0x02, 0x6B]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: high_altitude_read
  label: Read High Altitude Mode Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x0C, 0x6A]
  response_values:
    off: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]
    on: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x18]
    auto: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x19]

- id: lamp_mode_normal
  label: Lamp Mode Normal
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x10, 0x00, 0x6D]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: lamp_mode_full
  label: Lamp Mode Full Normal
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x10, 0x0B, 0x78]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: lamp_mode_eco
  label: Lamp Mode Eco
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x10, 0x01, 0x6E]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: lamp_mode_eco_extended
  label: Lamp Mode Eco Extended
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x10, 0x02, 0x6F]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: lamp_mode_read
  label: Read Lamp Mode Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x10, 0x6F]
  response_values:
    normal: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]
    eco: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x18]
    eco_extended: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x19]
    full_normal: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0B, 0x22]

- id: presentation_timer_off
  label: Presentation Timer Off
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x15, 0x00, 0x72]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: presentation_timer_1
  label: Presentation Timer 1
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x15, 0x01, 0x73]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: presentation_timer_2
  label: Presentation Timer 2
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x15, 0x02, 0x74]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: presentation_timer_3
  label: Presentation Timer 3
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x15, 0x03, 0x75]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: presentation_timer_read
  label: Read Presentation Timer Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x15, 0x72]
  response_values:
    off: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]
    timer1: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x18]
    timer2: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x19]
    timer3: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x1A]

- id: contrast_write
  label: Set Contrast
  kind: action
  params:
    - name: value
      type: integer
      description: 0=minimum, 1=increase, contrast range UNRESOLVED
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x20, 0x00, 0x7D]  # 0
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: contrast_read
  label: Read Contrast
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x20, 0x7D]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]

- id: brightness_write
  label: Set Brightness
  kind: action
  params:
    - name: value
      type: integer
      description: 0=minimum, 1=increase, brightness range UNRESOLVED
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x21, 0x00, 0x7E]  # 0
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: brightness_read
  label: Read Brightness
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x21, 0x7E]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]

- id: wb_red_gain_increase
  label: White Balance Red Gain Increase
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x22, 0x01, 0x80]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: wb_red_gain_decrease
  label: White Balance Red Gain Decrease
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x22, 0x02, 0x81]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: wb_red_gain_read
  label: Read White Balance Red Gain Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x22, 0x80]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]

- id: wb_green_gain_increase
  label: White Balance Green Gain Increase
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x23, 0x01, 0x81]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: wb_green_gain_decrease
  label: White Balance Green Gain Decrease
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x23, 0x02, 0x82]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: wb_green_gain_read
  label: Read White Balance Green Gain Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x23, 0x81]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]

- id: wb_blue_gain_increase
  label: White Balance Blue Gain Increase
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x24, 0x01, 0x82]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: wb_blue_gain_decrease
  label: White Balance Blue Gain Decrease
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x24, 0x02, 0x83]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: wb_blue_gain_read
  label: Read White Balance Blue Gain Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x24, 0x82]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]

- id: sharpness_write
  label: Set Sharpness
  kind: action
  params:
    - name: value
      type: integer
      description: 0=minimum, 1=increase, range UNRESOLVED
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x25, 0x00, 0x82]  # 0
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: sharpness_read
  label: Read Sharpness
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x25, 0x82]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]

- id: zoom_write
  label: Set Zoom
  kind: action
  params:
    - name: value
      type: integer
      description: 1=decrease, 2=increase, range UNRESOLVED
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x26, 0x01, 0x84]  # 1
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: zoom_read
  label: Read Zoom Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x26, 0x83]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]

- id: focus_write
  label: Set Focus
  kind: action
  params:
    - name: value
      type: integer
      description: 1=decrease, 2=increase, range UNRESOLVED
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x27, 0x01, 0x85]  # 1
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: focus_read
  label: Read Focus Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x27, 0x84]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]

- id: freeze_on
  label: Freeze On
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x13, 0x00, 0x01, 0x60]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: freeze_off
  label: Freeze Off
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x13, 0x00, 0x00, 0x5F]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: freeze_read
  label: Read Freeze Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x13, 0x00, 0x60]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]
  note: value mapping table 3.2.1 referenced but not included in this source

- id: aspect_ratio_auto
  label: Aspect Ratio Auto
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x30, 0x00, 0x87]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: aspect_ratio_4_3
  label: Aspect Ratio 4:3
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x30, 0x01, 0x88]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: aspect_ratio_16_9
  label: Aspect Ratio 16:9
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x30, 0x02, 0x89]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: aspect_ratio_16_10
  label: Aspect Ratio 16:10
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x30, 0x03, 0x8A]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: aspect_ratio_panorama
  label: Aspect Ratio Panorama
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x30, 0x04, 0x8B]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: aspect_ratio_2_35_1
  label: Aspect Ratio 2.35:1
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x30, 0x05, 0x8C]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: aspect_ratio_2_35_2
  label: Aspect Ratio 2.35:2
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x30, 0x06, 0x8D]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: aspect_ratio_native
  label: Aspect Ratio Native
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x30, 0x07, 0x8E]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: aspect_ratio_read
  label: Read Aspect Ratio Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x30, 0x87]
  response_values:
    auto: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]
    4_3: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x18]
    16_9: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x19]
    16_10: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x1A]
    panorama: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x1B]
    2_35_1: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x1C]
    2_35_2: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x1D]
    native: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x1E]

- id: source_dsub_comp1
  label: Source Input D-Sub / Comp.1
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x13, 0x01, 0x00, 0x60]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: source_hdmi1
  label: Source Input HDMI 1
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x13, 0x01, 0x03, 0x63]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: source_hdmi2
  label: Source Input HDMI 2
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x13, 0x01, 0x07, 0x67]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: source_hbaset
  label: Source Input HbaseT
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x13, 0x01, 0x0C, 0x6C]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: source_usb_reader
  label: Source Input USB Reader / USB1
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x13, 0x01, 0x1A, 0x7A]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: source_lan_wifi_display
  label: Source Input LAN / WiFi Display
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x13, 0x01, 0x1B, 0x7B]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: source_usb_display
  label: Source Input USB Display
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x13, 0x01, 0x1C, 0x7C]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: source_read
  label: Read Source Input Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x13, 0x01, 0x61]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]

- id: quick_auto_search_on
  label: Quick Auto Search On
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x13, 0x02, 0x01, 0x62]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: quick_auto_search_off
  label: Quick Auto Search Off
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x13, 0x02, 0x00, 0x61]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: quick_auto_search_read
  label: Read Quick Auto Search Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x13, 0x02, 0x62]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x18]

- id: mute_on
  label: Mute On
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x14, 0x00, 0x01, 0x61]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: mute_off
  label: Mute Off
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x14, 0x00, 0x00, 0x60]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: mute_read
  label: Read Mute Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x14, 0x00, 0x61]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]
  note: "Mute only active when input source applied"

- id: volume_increase
  label: Volume Increase
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x14, 0x01, 0x00, 0x61]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: volume_decrease
  label: Volume Decrease
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x14, 0x02, 0x00, 0x62]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: volume_write_value
  label: Set Volume Value
  kind: action
  params:
    - name: value
      type: integer
      description: Volume level value (hex 0x11 in command example)
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x13, 0x2A, 0x11, 0x9A]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: volume_read
  label: Read Volume
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x14, 0x03, 0x64]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]

- id: dde_mode_film
  label: DDE Mode Film
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x31, 0x00, 0x88]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: dde_mode_video
  label: DDE Mode Video
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x31, 0x01, 0x89]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: dde_mode_standard
  label: DDE Mode Standard
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x31, 0x02, 0x8A]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: dde_mode_read
  label: Read DDE Mode Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x31, 0x88]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]

- id: color_temp_6500k
  label: Color Temperature 6500K
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x32, 0x00, 0x89]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: color_temp_7000k
  label: Color Temperature 7000K
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x32, 0x01, 0x8A]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: color_temp_7500k
  label: Color Temperature 7500K
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x32, 0x02, 0x8B]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: color_temp_9000k
  label: Color Temperature 9000K
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x32, 0x03, 0x8C]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: color_temp_9300k
  label: Color Temperature 9300K
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x32, 0x04, 0x8D]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: color_temp_user1
  label: Color Temperature User1
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x32, 0x05, 0x8E]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: color_temp_user2
  label: Color Temperature User2
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x32, 0x06, 0x8F]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: color_temp_user3
  label: Color Temperature User3
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x32, 0x07, 0x90]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: color_temp_user4
  label: Color Temperature User4
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x32, 0x08, 0x91]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: color_temp_read
  label: Read Color Temperature Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x32, 0x89]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]

- id: color_space_auto
  label: Color Space Auto
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x33, 0x00, 0x8A]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: color_space_rgb
  label: Color Space RGB
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x33, 0x01, 0x8B]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: color_space_yuv
  label: Color Space YUV
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x11, 0x33, 0x02, 0x8C]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

- id: color_space_read
  label: Read Color Space Status
  kind: query
  params: []
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x11, 0x33, 0x8A]
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]

- id: input_skip_set
  label: Set Input Skip (per input index)
  kind: action
  params:
    - name: input_index
      type: integer
      description: Input index 0-N (D-Sub=0, HDMI1=1, HDMI2=2, HDBaseT=3, USB Reader=4, LAN/WiFi=5, USB Display=6, etc.)
    - name: enabled
      type: boolean
      description: true=skip, false=show
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x13, 0x03, 0x01, 0x64]  # example for index 0 ON
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]
  note: "Input Skip commands use index bytes 0x03 through 0x0C for different inputs"

- id: input_skip_read
  label: Read Input Skip Status
  kind: query
  params:
    - name: input_index
      type: integer
      description: Input index 0-N
  command: [0x07, 0x14, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x13, 0x03, 0x63]  # example for index 0
  response: [0x05, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x17]
  note: "Multiple read commands exist for different input indices"

- id: factory_reset
  label: Reset to Factory Default
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x03, 0x00, 0x34, 0x0C, 0x08, 0x5F]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]
  note: "User must reboot projector to clear parameters"

- id: lan_reset
  label: LAN Reset
  kind: action
  params: []
  command: [0x06, 0x14, 0x00, 0x04, 0x00, 0x34, 0x0C, 0x5A, 0x00, 0xB2]
  response: [0x03, 0x14, 0x00, 0x00, 0x00, 0x14]

Feedbacks

# Status responses returned by read queries
# Byte7-Byte10 contain values for multi-byte responses
power_state:
  type: enum
  values:
    - off
    - on
    - warmup
    - cooldown

splash_screen_state:
  type: enum
  values:
    - black
    - blue

lamp_mode_state:
  type: enum
  values:
    - normal
    - eco
    - eco_extended
    - full_normal

mute_state:
  type: boolean
  note: "only active when input source applied"

freeze_state:
  type: boolean
  note: "value mapping table 3.2.1 referenced but not provided in source"

aspect_ratio_state:
  type: enum
  values:
    - auto
    - 4_3
    - 16_9
    - 16_10
    - panorama
    - 2_35_1
    - 2_35_2
    - native

color_temperature_state:
  type: enum
  values:
    - 6500K
    - 7000K
    - 7500K
    - 9000K
    - 9300K
    - user1
    - user2
    - user3
    - user4

color_space_state:
  type: enum
  values:
    - auto
    - rgb
    - yuv

volume_state:
  type: integer
  note: "read returns current volume level"

operating_temperature:
  type: number
  unit: celsius
  note: "HEX2DEC(ddccbbaa)/10, response bytes 7-10"
  example: "0x29 0x01 0x00 0x00 -> 297 -> 29.7°C"

light_source_usage_hours:
  type: integer
  unit: hours
  note: "HEX2DEC(ddccbbaa), response bytes 7-10"
  example: "0xB8 0x0B 0x00 0x00 -> 3000 hours"

Variables

# UNRESOLVED: contrast/brightness/sharpness/zoom/focus ranges not specified in source
# Volume range not specified
# Input skip state per input index

Events

# UNRESOLVED: no unsolicited event notifications documented in source

Macros

# UNRESOLVED: no multi-step macros documented in source

Safety

confirmation_required_for: []
interlocks:
  - id: warmup_state
    description: Do not send other commands during Warm Up state. Wait for Power On status.
  - id: cooldown_state
    description: Do not send other commands during Cool Down state. Wait for Power Off status.
  - id: mute_requires_source
    description: Mute function only active when input source is applied.
  - id: auto_adjust_requires_analog
    description: Auto Adjust function only active for non-digital input sources (VGA/Computer1/D-sub).
  - id: lan_reboot_requirement
    description: To reboot projector via LAN when powered off, set LAN Control to ON first.
# UNRESOLVED: voltage/power specs not stated in source
# UNRESOLVED: fault behavior and error recovery not documented

Notes

RS-232 connector: DSUB 9-Pin male. Only 3 pins needed (RXD=pin2, TXD=pin3, GND=pin5). Crossover (null modem) cable required.

Supported baud rates: 4800/9600/19200/38400. Default: 19200.

Command packet format includes checksum. Every command receives a response.

LAN control uses same code format with port 4661 (note 2). Pro9 series uses port 23 for LAN control.

HDMI Range: Enhanced/Full = 0-255 steps; Normal/Limited = 16-235 steps.

When response code 0x00 0x14 0x00 0x00 0x00 0x14 has first byte 0x00, function is disabled (greyed out in OSD).

Error response status available for service debug (note 3) — 32 bytes total.

Provenance

source_domains:
  - viewsonicglobal.com
  - viewsonicvsa.freshdesk.com
source_urls:
  - "https://www.viewsonicglobal.com/public/products_download/user_guide/projector/LSC_6_7_8_Series/LSC%20Series%20RS-232%20LAN%20Control%20Protocol%20Specification.pdf"
  - https://viewsonicvsa.freshdesk.com/support/solutions/articles/43000470420-viewsonic-projector-rs232-protocol
  - https://www.viewsonicglobal.com/public/products_download/user_guide/Projector/LS750WU_LS850WU_LS860WU/LS750WU_LS850WU_LS860WU_UG_ENG.pdf
  - "https://www.viewsonicglobal.com/public/products_download/user_guide/projector/LS950WU_LS951WU_LS960WU/RS-232%20LAN%20Control%20Protocol%20Specification%20V1.5.pdf"
  - https://www.viewsonicglobal.com/public/products_download/software/projector/ls/ViewSonic_projector_LS750WU_Serial.zip
retrieved_at: 2026-05-27T13:40:05.250Z
last_checked_at: 2026-10-01T10:56:54.205Z

Verification Summary

verdict: verified
checked_at: 2026-10-01T10:56:54.205Z
matched_actions: 94
action_count: 94
confidence: medium
summary: "All 94 spec action hex packets (power, splash, quick power off, high altitude, lamp, timer, contrast, brightness, wb, sharpness, zoom, focus, freeze, aspect, source, quick auto search, mute, volume, dde, color temp, color space, input skip, factory reset, lan reset) appear verbatim in source RS232 command table; transport matches. (12 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "LAN control port 4661 mentioned but not detailed in this serial-focused doc"
- "contrast/brightness/sharpness/zoom/focus ranges not specified in source"
- "no unsolicited event notifications documented in source"
- "no multi-step macros documented in source"
- "voltage/power specs not stated in source"
- "fault behavior and error recovery not documented"
- "firmware version compatibility not stated"
- "command timing/latency not documented"
- "value mapping table 3.2.1 for freeze not included in source"
- "contrast/brightness/sharpness/zoom/focus value ranges not specified"
- "volume control range not specified"
- "HDMI range step resolution not confirmed for all models"

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