Summary

RS-232 control protocol for ViewSonic Commercial CD-series displays (ViewBoard, Digital Displays, All-in-One LED Displays). DSUB 9-pin male connector on the rear, null-modem crossover cable to PC, fixed 9600/8N1, no authentication. Two protocol variants: with-ID (8-byte payload) and without-ID (5-byte payload); each packet is terminated by CR (0x0D).

Transport

protocols:
  - serial
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
auth:
  type: none

auth.type: none is inferred — the source describes no login, password, or authentication procedure.

Traits

- powerable
- routable
- queryable
- levelable

powerable, routable, queryable, levelable inferred from documented power, input-select, get, and level commands.

Actions

- id: power
  label: Power
  kind: action
  command: "38 {id} 73 21 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26) or 99 for all displays
    - name: value
      type: string
      description: 000 standby, 001 on
- id: input_select
  label: Input Select
  kind: action
  command: "38 {id} 73 22 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 VGA, 001 HDMI, 002 DVI-D, 003 AV, 004 YPbPr, 005 S-Video
- id: contrast
  label: Contrast
  kind: action
  command: "38 {id} 73 23 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 to 100
- id: brightness
  label: Brightness
  kind: action
  command: "38 {id} 73 24 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 to 100
- id: sharpness
  label: Sharpness
  kind: action
  command: "38 {id} 73 25 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 to 100
- id: color
  label: Color
  kind: action
  command: "38 {id} 73 26 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 to 100
- id: tint
  label: Tint
  kind: action
  command: "38 {id} 73 27 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 to 100
- id: bass
  label: Bass
  kind: action
  command: "38 {id} 73 2E {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 to 100
- id: treble
  label: Treble
  kind: action
  command: "38 {id} 73 2F {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 to 100
- id: balance
  label: Balance
  kind: action
  command: "38 {id} 73 30 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 to 100
- id: picture_size
  label: Picture Size
  kind: action
  command: "38 {id} 73 31 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 FULL, 001 NORMAL, 002 CUSTOM, 003 DYNAMIC, 004 REAL
- id: osd_language
  label: OSD Language
  kind: action
  command: "38 {id} 73 32 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 English, 001 French, 002 Spanish, 003 Germany, 004 Italian, 005 Simplified Chinese, 006 Russian, 007 Polish, 008 Turkish
- id: osd_timeout
  label: OSD Timeout
  kind: action
  command: "38 {id} 73 33 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 005 to 120 seconds
- id: volume
  label: Volume
  kind: action
  command: "38 {id} 73 35 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 to 100
- id: mute
  label: Mute
  kind: action
  command: "38 {id} 73 36 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 off, 001 on
- id: off_timer
  label: Off Timer
  kind: action
  command: "38 {id} 73 37 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 off, 001 to 024 hours
- id: pip_mode
  label: PIP Mode
  kind: action
  command: "38 {id} 73 39 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 off, 001 PIP, 002 POP, 003 PBP, 004 PBPA
- id: pip_sound_select
  label: PIP Sound Select
  kind: action
  command: "38 {id} 73 3A {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 main, 001 PIP
- id: pip_position
  label: PIP Position
  kind: action
  command: "38 {id} 73 3B {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 up, 001 down, 002 left, 003 right
- id: pip_input
  label: PIP Input
  kind: action
  command: "38 {id} 73 3C {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 VGA, 001 HDMI, 002 DVI-D, 003 AV, 004 YPbPr, 005 S-Video
- id: monitor_id
  label: Monitor ID
  kind: action
  command: "38 {id} 73 3D {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 001 to 026
- id: keypad_send
  label: Key Pad Send
  kind: action
  command: "38 {id} 73 41 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 power, 001 source, 002 menu/exit, 003 up, 004 down, 005 left, 006 right, 007 mute
- id: remote_control
  label: Remote Control Mode
  kind: action
  command: "38 {id} 73 42 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 disable, 001 enable, 002 pass-through
- id: keypad_enable
  label: Key Pad Enable
  kind: action
  command: "38 {id} 73 43 {value} 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
    - name: value
      type: string
      description: 000 disable, 001 enable
- id: factory_reset
  label: Factory Reset
  kind: action
  command: "38 {id} 73 7E 000 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
- id: get_contrast
  label: Get Contrast
  kind: query
  command: "38 {id} 67 61 000 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
- id: get_brightness
  label: Get Brightness
  kind: query
  command: "38 {id} 67 62 000 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
- id: get_sharpness
  label: Get Sharpness
  kind: query
  command: "38 {id} 67 63 000 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
- id: get_color
  label: Get Color
  kind: query
  command: "38 {id} 67 64 000 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
- id: get_tint
  label: Get Tint
  kind: query
  command: "38 {id} 67 65 000 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
- id: get_volume
  label: Get Volume
  kind: query
  command: "38 {id} 67 66 000 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
- id: get_mute
  label: Get Mute
  kind: query
  command: "38 {id} 67 67 000 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
- id: get_rcu
  label: Get RCU Mode
  kind: query
  command: "38 {id} 67 68 000 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
- id: get_keypad
  label: Get Key Pad
  kind: query
  command: "38 {id} 67 69 000 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
- id: get_input_select
  label: Get Input Select
  kind: query
  command: "38 {id} 67 6A 000 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
- id: get_power_status
  label: Get Power Status
  kind: query
  command: "38 {id} 67 6C 000 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)
- id: get_ack
  label: Get ACK
  kind: query
  command: "38 {id} 67 7A 000 0D"
  params:
    - name: id
      type: string
      description: Two-digit ASCII TV ID (01-26)

Feedbacks

- id: power_state
  type: enum
  values: [stby, on]
- id: input_source
  type: enum
  values: [vga, hdmi, dvi-d, av, ypbpr, s-video]
- id: contrast
  type: integer
  range: [0, 100]
- id: brightness
  type: integer
  range: [0, 100]
- id: sharpness
  type: integer
  range: [0, 100]
- id: color
  type: integer
  range: [0, 100]
- id: tint
  type: integer
  range: [0, 100]
- id: volume
  type: integer
  range: [0, 100]
- id: mute
  type: enum
  values: [off, on]
- id: rcu_mode
  type: enum
  values: [disable, enable, pass_through]
- id: keypad_enabled
  type: enum
  values: [disable, enable]

Events

- id: rcu_pass_through
  description: When monitor is in RCU pass-through mode, RCU key presses are forwarded to PC as 3-byte packets
  packet: "33 {msb} {lsb} 0D"
  codes:
    "Size": "0F"
    "Volume Up": "10"
    "Volume Down": "11"
    "Mute": "12"
    "POWER": "15"
    "INPUT": "16"
    "PIP ON/OFF": "17"
    "MENU": "1A"
    "Up": "1B"
    "Down": "1C"
    "Left": "1D"
    "Right": "1E"
    "SET": "1F"
    "PIP INPUT": "20"
    "PIP CHANGE": "21"
    "PICTURE MODE": "22"
    "AUDIO INPUT": "23"
    "SCREEN SAVER MOTION": "24"
    "SCREEN SAVER BRIGHTNESS": "25"
    "DISPLAY": "26"
    "AUTO SETUP": "27"
    "EXIT": "28"

Notes

Cable and connector

  • Connector: DSUB 9-pin male on the rear of the display.
  • Cable: crossover (null-modem) cable required when connecting to a PC.

Protocol 1 packet framing (with ID)

  • Length byte 0x38 = ASCII "8" (8 bytes of payload, excluding CR).
  • ID field: 2 ASCII bytes, "01"-"26" for individual displays, or "99" to broadcast to all.
  • Command Type: 0x73 ('s') for Set, 0x67 ('g') for Get.
  • Command: 1 ASCII byte, the command code.
  • Value: 3 ASCII bytes, zero-padded number, or fixed "000" for queries.
  • Every packet ends with CR (0x0D).
  • Valid command reply: 0x2B ('+') + CR.
  • Invalid command reply: 0x2D ('-') + CR.
  • Broadcast ("99") receives no reply.

Protocol 2 packet framing (without ID)

  • Length byte 0x35 = ASCII "5" (5 bytes of payload, excluding CR).
  • No ID field; intended for single-display control and ViewSonic Network Media Players.
  • Same command codes and value ranges as Protocol 1.
  • Valid command reply: 0x2B ('+') + CR.
  • Invalid command reply: 0x2D ('-') + CR.

Get-Response (Protocol 2)

  • Get reply packet: 0x35 (length) + 4 ASCII value bytes + CR.
  • Exception: On-Hours response is 6 bytes (value 00000-99999).
  • Get-ACK returns '+' or '-' rather than a numeric value.

RCU pass-through

  • Enabled by setting the Remote Control action to value 002.
  • In pass-through mode, the RCU has no effect on the display; key codes are forwarded to the PC over RS-232 as 3-byte packets terminated with CR.

Provenance

source_domains:
  - viewsonicglobal.com
source_urls:
  - "https://www.viewsonicglobal.com/public/products_download/97/Commercial_Displays_RS232.pdf?pass"
retrieved_at: 2026-04-30T04:25:10.156Z
last_checked_at: 2026-06-02T07:06:53.959Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T07:06:53.959Z
matched_actions: 37
action_count: 37
confidence: medium
summary: "All 37 spec actions matched literal command codes in source; transport parameters verified verbatim; full bidirectional coverage. (4 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "source doc applies to the \"CDxxxx\" series generically; per-model coverage not enumerated"
- "firmware version compatibility not stated in source"
- "voltage, current, and power specifications not stated in source"
- "flow control setting not stated in source"

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