Summary

RS-232 / LAN (RJ45 port 23) control for Optoma N3751K interactive flat panel display. ASCII command protocol with0x7E lead, two-byte device ID, command, space, variable, 0x0D terminator. Also exposes OMS JSONRPC on TCP 1688 and OMSL telnet on TCP 23.

Transport

protocols:
  - serial
  - tcp
addressing:
  port: 23
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable       # power on/off/restart + standby mode commands present
- routable        # input source selection commands present
- queryable       # GET commands returning values present
- levelable       # volume / treble / bass / brightness / contrast / etc. present

Actions

- id: power_off label: Power Off
  kind: action
  command: "7E 30 30 30 30 20 30 0d"
  params: []

- id: power_on
  label: Power On
  kind: action
  command: "7E 30 30 30 30 20 31 0d"
  params: []

- id: restart
  label: Restart
  kind: action
  command: "7E 30 30 30 30 20 33 0d"
  params: []

- id: power_mode_eco
  label: Power Mode (Standby) Eco
  kind: action
  command: "7E 30 30 31 31 34 20 30 0d"
  params: []

- id: power_mode_active
  label: Power Mode (Standby) Active
  kind: action
  command: "7E 30 30 31 31 34 20 31 0d"
  params: []

- id: set_treble
  label: Set Treble
  kind: action
  command: "7E 30 30 39 35 20 {n} 0d"
  params:
    - name: n
      type: integer
      description: Treble value (0-100)

- id: set_bass
  label: Set Bass
  kind: action
  command: "7E 30 30 39 36 20 {n} 0d"
  params:
    - name: n
      type: integer
      description: Bass value (0-100)

- id: set_balance
  label: Set Balance
  kind: action
  command: "7E 30 30 39 39 20 {n} 0d"
  params:
    - name: n
      type: integer
      description: Balance value (0-100)

- id: set_contrast
  label: Set Contrast
  kind: action
  command: "7E 30 30 32 32 20 {n} 0d"
  params:
    - name: n
      type: integer
      description: Contrast value (0-100)

- id: set_brightness
  label: Set Brightness
  kind: action
  command: "7E 30 30 32 31 20 {n} 0d"
  params:
    - name: n
      type: integer
      description: Brightness value (0-100)

- id: set_sound_mode_standard
  label: Sound Mode Standard
  kind: action
  command: "7E 30 30 32 35 32 20 31 0d"
  params: []

- id: set_sound_mode_meeting
  label: Sound Mode Meeting
  kind: action
  command: "7E 30 30 32 35 32 20 34 0d"
  params: []

- id: set_sound_mode_user
  label: Sound Mode User
  kind: action
  command: "7E 30 30 32 35 32 20 32 0d"
  params: []

- id: set_sound_mode_classroom
  label: Sound Mode Classroom
  kind: action
  command: "7E 30 30 32 35 32 20 33 0d"
  params: []

- id: set_sound_mode_movie
  label: Sound Mode Movie
  kind: action
  command: "7E 30 30 32 35 32 20 35 0d"
  params: []

- id: set_volume
  label: Set Volume
  kind: action
  command: "7E 30 30 38 31 20 {n} 0d"
  params:
    - name: n
      type: integer
      description: Volume value (0-100)

- id: video_mute_off
  label: Video Mute Off
  kind: action
  command: "7E 30 30 31 33 20 30 0d"
  params: []

- id: video_mute_on
  label: Video Mute On
  kind: action
  command: "7E 30 30 31 33 20 31 0d"
  params: []

- id: mute_off
  label: Mute Off
  kind: action
  command: "7E 30 30 38 30 20 30 0d"
  params: []

- id: mute_on
  label: Mute On
  kind: action
  command: "7E 30 30 38 30 20 31 0d"
  params: []

- id: input_hdmi1
  label: Input Source HDMI1
  kind: action
  command: "7E 30 30 31 32 20 31 0d"
  params: []

- id: input_hdmi2
  label: Input Source HDMI2
  kind: action
  command: "7E 30 30 31 32 20 31 35 0d"
  params: []

- id: input_hdmi3
  label: Input Source HDMI3
  kind: action
  command: "7E 30 30 31 32 20 31 36 0d"
  params: []

- id: input_usb_type_c
  label: Input Source USB Type C
  kind: action
  command: "7E 30 30 31 32 20 32 37 0d"
  params: []

- id: input_slot_in_pc
  label: Input Source Slot in PC
  kind: action
  command: "7E 30 30 31 32 20 32 35 0d"
  params: []

- id: input_android
  label: Input Source Android
  kind: action
  command: "7E 30 30 31 32 20 32 34 0d"
  params: []

- id: aspect_4_3
  label: Aspect Ratio 4:3
  kind: action
  command: "7E 30 30 36 30 20 31 0d"
  params: []

- id: aspect_16_9
  label: Aspect Ratio 16:9
  kind: action
  command: "7E 30 30 36 30 20 32 0d"
  params: []

- id: aspect_ptp
  label: Aspect Ratio PTP
  kind: action
  command: "7E 30 30 36 30 20 31 34 0d"
  params: []

- id: language_english
  label: Language English
  kind: action
  command: "7E 30 30 37 30 20 31 0d"
  params: []

- id: language_french
  label: Language Français
  kind: action
  command: "7E 30 30 37 30 20 33 0d"
  params: []

- id: language_spanish
  label: Language Español
  kind: action
  command: "7E 30 30 37 30 20 35 0d"
  params: []

- id: language_traditional_chinese
  label: Language Traditional Chinese
  kind: action
  command: "7E 30 30 37 30 20 31 33 0d"
  params: []

- id: language_simplified_chinese
  label: Language Simplified Chinese
  kind: action
  command: "7E 30 30 37 30 20 31 34 0d"
  params: []

- id: language_portuguese
  label: Language Português
  kind: action
  command: "7E 30 30 37 30 20 36 0d"
  params: []

- id: language_german
  label: Language German
  kind: action
  command: "7E 30 30 37 30 20 32 0d"
  params: []

- id: language_dutch
  label: Language Dutch
  kind: action
  command: "7E 30 30 37 30 20 38 0d"
  params: []

- id: language_polish
  label: Language Polish
  kind: action
  command: "7E 30 30 37 30 20 37 0d"
  params: []

- id: language_russian
  label: Language Russian
  kind: action
  command: "7E 30 30 37 30 20 31 37 0d"
  params: []

- id: language_czech
  label: Language Czech
  kind: action
  command: "7E 30 30 37 30 20 31 39 0d"
  params: []

- id: language_danish
  label: Language Danish
  kind: action
  command: "7E 30 30 37 30 20 32 34 0d"
  params: []

- id: language_swedish
  label: Language Swedish
  kind: action
  command: "7E 30 30 37 30 20 39 0d"
  params: []

- id: language_italian
  label: Language Italian
  kind: action
  command: "7E 30 30 37 30 20 34 0d"
  params: []

- id: language_turkish
  label: Language Turkish
  kind: action
  command: "7E 30 30 37 30 20 32 32 0d"
  params: []

- id: language_arabic
  label: Language Arabic
  kind: action
  command: "7E 30 30 37 30 20 32 30 0d"
  params: []

- id: language_romanian
  label: Language Romanian
  kind: action
  command: "7E 30 30 37 30 20 32 37 0d"
  params: []

- id: language_hungarian
  label: Language Hungarian
  kind: action
  command: "7E 30 30 37 30 20 31 38 0d"
  params: []

- id: language_finnish
  label: Language Finnish
  kind: action
  command: "7E 30 30 37 30 20 31 31 0d"
  params: []

- id: language_norwegian
  label: Language Norwegian (Norge)
  kind: action
  command: "7E 30 30 37 30 20 31 30 0d"
  params: []

- id: picture_mode_presentation
  label: Picture Mode Presentation
  kind: action
  command: "7E 30 30 32 30 20 31 0d"
  params: []

- id: picture_mode_bright
  label: Picture Mode Bright
  kind: action
  command: "7E 30 30 32 30 20 32 0d"
  params: []

- id: picture_mode_cinema
  label: Picture Mode Cinema
  kind: action
  command: "7E 30 30 32 30 20 33 0d"
  params: []

- id: picture_mode_user
  label: Picture Mode User
  kind: action
  command: "7E 30 30 32 30 20 35 0d"
  params: []

- id: picture_mode_hdr
  label: Picture Mode HDR
  kind: action
  command: "7E 30 30 32 30 20 32 31 0d"
  params: []

- id: set_color
  label: Set Color
  kind: action
  command: "7E 30 30 34 35 20 {n} 0d"
  params:
    - name: n
      type: integer
      description: Color value (0-100)

- id: set_backlight
  label: Set Backlight
  kind: action
  command: "7E 30 30 32 35 31 20 {n} 0d"
  params:
    - name: n
      type: integer
      description: Backlight value (0-100)

- id: color_temp_cool
  label: Color Temp Cool
  kind: action
  command: "7E 30 30 33 36 20 32 0d"
  params: []

- id: color_temp_standard
  label: Color Temp Standard
  kind: action
  command: "7E 30 30 33 36 20 31 0d"
  params: []

- id: color_temp_warm
  label: Color Temp Warm
  kind: action
  command: "7E 30 30 33 36 20 34 0d"
  params: []

- id: freeze_unfreeze
  label: Freeze Unfreeze
  kind: action
  command: "7E 30 30 30 34 20 30 0d"
  params: []

- id: freeze_on
  label: Freeze On
  kind: action
  command: "7E 30 30 30 34 20 31 0d"
  params: []

- id: pixel_shift_off
  label: Pixel Shift Interval Off
  kind: action
  command: "7E 30 30 32 35 30 20 30 0d"
  params: []

- id: pixel_shift_2
  label: Pixel Shift Interval 2 min
  kind: action
  command: "7E 30 30 32 35 30 20 32 0d"
  params: []

- id: pixel_shift_3
  label: Pixel Shift Interval 3 min
  kind: action
  command: "7E 30 30 32 35 30 20 33 0d"
  params: []

- id: pixel_shift_5
  label: Pixel Shift Interval 5 min
  kind: action
  command: "7E 30 30 32 35 30 20 35 0d"
  params: []

- id: pixel_shift_30
  label: Pixel Shift Interval 30 min
  kind: action
  command: "7E 30 30 32 35 30 20 33 30 0d"
  params: []

- id: pixel_shift_60
  label: Pixel Shift Interval 60 min
  kind: action
  command: "7E 30 30 32 35 30 20 36 30 0d"
  params: []

- id: remote_vol_down
  label: Remote Vol -
  kind: action
  command: "7E 30 30 31 34 30 20 31 37 0d"
  params: []

- id: remote_vol_up
  label: Remote Vol +
  kind: action
  command: "7E 30 30 31 34 30 20 31 38 0d"
  params: []

- id: remote_up
  label: Remote UP
  kind: action
  command: "7E 30 30 31 34 30 20 31 30 0d"
  params: []

- id: remote_down
  label: Remote DOWN
  kind: action
  command: "7E 30 30 31 34 30 20 31 34 0d"
  params: []

- id: remote_left
  label: Remote LEFT
  kind: action
  command: "7E 30 30 31 34 30 20 31 31 0d"
  params: []

- id: remote_right
  label: Remote RIGHT
  kind: action
  command: "7E 30 30 31 34 30 20 31 33 0d"
  params: []

- id: remote_ok
  label: Remote OK
  kind: action
  command: "7E 30 30 31 34 30 20 31 32 0d"
  params: []

- id: remote_menu
  label: Remote Menu Key
  kind: action
  command: "7E 30 30 31 34 30 20 32 30 0d"
  params: []

- id: remote_input_source
  label: Remote Input Source
  kind: action
  command: "7E 30 30 31 34 30 20 34 37 0d"
  params: []

- id: remote_exit
  label: Remote Exit
  kind: action
  command: "7E 30 30 31 34 30 20 37 34 0d"
  params: []

- id: display_osd_message
  label: Display message on the OSD
  kind: action
  command: "7E 30 30 32 31 30 20 {nn…n} 0d"
  params:
    - name: nn…n
      type: string
      description: Message text to display on OSD

- id: reset_to_default
  label: Reset To Default
  kind: action
  command: "7E 30 30 31 31 32 20 31 0d"
  params: []

- id: osd_lock_on_with_password
  label: OSD Lock On With Password
  kind: action
  command: "7E 30 30 32 33 39 20 31 20 {a} 0d"
  params:
    - name: a
      type: string
      description: OSD lock password

- id: osd_lock_off_with_password
  label: OSD Lock Off With Password
  kind: action
  command: "7E 30 30 32 33 39 20 32 20 {a} 0d"
  params:
    - name: a
      type: string
      description: OSD lock password

- id: get_power
  label: Get Power
  kind: query
  command: "7E 30 30 31 32 34 20 31 0d"
  params: []

- id: get_contrast
  label: Get Contrast
  kind: query
  command: "7E 30 30 31 32 36 20 31 0d"
  params: []

- id: get_brightness
  label: Get Brightness
  kind: query
  command: "7E 30 30 31 32 35 20 31 0d"
  params: []

- id: get_volume
  label: Get Volume
  kind: query
  command: "7E 30 30 31 32 30 20 31 0d"
  params: []

- id: get_video_mute
  label: Get Video Mute
  kind: query
  command: "7E 30 30 33 36 33 20 31 0d"
  params: []

- id: get_mute
  label: Get Mute
  kind: query
  command: "7E 30 30 33 35 36 20 31 0d"
  params: []

- id: get_sound_mode
  label: Get Sound Mode
  kind: query
  command: "7E 30 30 31 33 39 20 31 0d"
  params: []

- id: get_input_source
  label: Get Input Source
  kind: query
  command: "7E 30 30 31 32 31 20 31 0d"
  params: []

- id: get_aspect_ratio
  label: Get Aspect Ratio
  kind: query
  command: "7E 30 30 31 32 37 20 31 0d"
  params: []

- id: get_picture_mode
  label: Get Picture Mode
  kind: query
  command: "7E 30 30 31 32 33 20 31 0d"
  params: []

- id: get_color_temp
  label: Get Color Temp
  kind: query
  command: "7E 30 30 31 32 38 20 31 0d"
  params: []

- id: get_wlan_status
  label: Get WLAN Status
  kind: query
  command: "7E 30 30 34 35 31 20 31 0d"
  params: []

- id: get_wlan_mac  label: Get WLAN Mac Address
  kind: query
  command: "7E 30 30 35 35 35 20 32 0d"
  params: []

- id: get_wlan_ip
  label: Get WLAN IP Address
  kind: query
  command: "7E 30 30 34 35 31 20 32 0d"
  params: []

- id: get_lan_status
  label: Get LAN Status
  kind: query
  command: "7E 30 30 38 37 20 31 0d"
  params: []

- id: get_lan_mac
  label: Get LAN Mac Address
  kind: query
  command: "7E 30 30 35 35 35 20 31 0d"
  params: []

- id: get_lan_ip
  label: Get LAN IP Address
  kind: query
  command: "7E 30 30 38 37 20 33 0d"
  params: []

- id: get_fw_version
  label: Get FW Version
  kind: query
  command: "7E 30 30 31 32 32 20 31 0d"
  params: []

- id: get_usage_hour
  label: Get Usage Hour
  kind: query
  command: "7E 30 30 31 30 38 20 31 0d"
  params: []

- id: get_device_type
  label: Get Device Type
  kind: query
  command: "7E 30 30 31 34 39 20 31 0d"
  params: []

- id: get_info_string
  label: Get Information String
  kind: query
  command: "7E 30 30 31 35 30 20 31 0d"
  params: []

- id: get_native_resolution
  label: Get Device Native Resolution
  kind: query
  command: "7E 30 30 31 35 30 20 32 0d"
  params: []

- id: get_input_source_info
  label: Get Current Input Source
  kind: query
  command: "7E 30 30 31 35 30 20 33 0d"
  params: []

- id: get_source_resolution
  label: Get Source Resolution
  kind: query
  command: "7E 30 30 31 35 30 20 34 0d"
  params: []

- id: get_power_mode_standby
  label: Get Power Mode (Standby)
  kind: query
  command: "7E 30 30 31 35 30 20 31 36 0d"
  params: []

- id: get_dhcp
  label: Get DHCP
  kind: query
  command: "7E 30 30 31 35 30 20 31 37 0d"
  params: []

- id: get_soc_temperature
  label: Get System (SoC) Temperature
  kind: query
  command: "7E 30 30 31 35 30 20 31 38 0d"
  params: []

- id: get_source_refresh_rate
  label: Get Source Refresh Rate
  kind: query
  command: "7E 30 30 31 35 30 20 31 39 0d"
  params: []

- id: get_regulatory_model_name
  label: Get Regulatory Model Name
  kind: query
  command: "7E 30 30 31 35 31 20 33 0d"
  params: []

- id: get_osd_lock
  label: Get OSD Lock
  kind: query
  command: "7E 30 30 32 32 39 20 31 0d"
  params: []

- id: get_serial_number
  label: Get Serial Number
  kind: query
  command: "7E 30 30 33 35 33 20 31 0d"
  params: []

- id: get_system_temperature_level
  label: Get System Temperature Level
  kind: query
  command: "7E 30 30 31 35 35 20 31 0d"
  params: []

Feedbacks

- id: power_state
  type: enum
  values: [off, on]
  notes: "Returned from GET power: OK0 = off, OK1 = on"

- id: contrast
  type: integer
  range: [0, 100]
  notes: "Returned from GET contrast"

- id: brightness
  type: integer
  range: [0, 100]
  notes: "Returned from GET brightness"

- id: volume
  type: integer
  range: [0, 100]
  notes: "Returned from GET volume"

- id: video_mute
  type: enum
  values: [off, on]
  notes: "OK0 = off, OK1 = on"

- id: mute
  type: enum
  values: [off, on]
  notes: "OK0 = off, OK1 = on"

- id: sound_mode
  type: enum
  values: [standard, user, classroom, meeting, movie]
  notes: "OK1..OK5 mapping"

- id: input_source
  type: enum
  values: [hdmi1, hdmi2, hdmi3, usb_type_c, android, slot_in_pc]
  notes: "OK7=HDMI1, OK8=HDMI2, OK9=HDMI3, OK23=USB Type C, OK20=Android, OK21=Slot in PC"

- id: aspect_ratio
  type: enum
  values: ["4:3", "16:9", ptp]
  notes: "OK1, OK2, OK14"

- id: picture_mode
  type: enum
  values: [presentation, bright, cinema, user, dicom_sim, hdr]
  notes: "OK1, OK2, OK3, OK5, OK10, OK21"

- id: color_temp
  type: enum
  values: [cool, standard, warm]
  notes: "OK1=Cool, OK0=Standard, OK3=Warm"

- id: wlan_status
  type: enum
  values: [disconnected, connected]

- id: lan_status
  type: enum
  values: [disconnected, connected]

- id: power_mode_standby
  type: enum
  values: [eco, active]
  notes: "OK0=Eco, OK1=Active"

- id: dhcp
  type: enum
  values: [off, on]
  notes: "OK0=Off, OK1=On"

- id: system_temperature_level
  type: enum
  values: [green_normal, orange_notice, red_warning]
  notes: "OK1, OK2, OK3 - OK3 = about to trigger shutdown"

- id: osd_lock
  type: enum
  values: [off, on]
  notes: "OK0, OK1"

- id: serial_number
  type: string

- id: fw_version
  type: string
  notes: "Returned as OKnnnnnnnnnnnnnnn (e.g. 20190926164814)"

- id: usage_hour
  type: integer
  notes: "Hours of usage"

- id: device_type
  type: enum
  values: [fp]
  notes: "OK4 = Flat Panel"

- id: mac_address_lan
  type: string
  pattern: "^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}$"

- id: mac_address_wlan
  type: string
  pattern: "^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}$"

- id: ip_address_lan
  type: string
  pattern: "^\\d{1,3}(\\.\\d{1,3}){3}$"

- id: ip_address_wlan
  type: string
  pattern: "^\\d{1,3}(\\.\\d{1,3}){3}$"

- id: soc_temperature
  type: integer

- id: source_refresh_rate
  type: string
  notes: "Returned e.g. OK60Hz"

- id: source_resolution
  type: string
  notes: "Returned e.g. OK1920x1080"

- id: native_resolution
  type: integer

- id: regulatory_model_name
  type: string- id: command_success
  type: enum
  values: [P, F]
  notes: "P = Pass, F = Fail (response to any SET command)"

Variables

# UNRESOLVED: no discrete settable parameter documents a single named property beyond what Actions already cover.

Events

- id: standby_mode
  payload: "INFO0"
  notes: "Auto-send when entering standby"

- id: warming_up
  payload: "INFO1"
  notes: "Auto-send during warm-up"

- id: cooling_down
  payload: "INFO2"
  notes: "Auto-send during cool-down"

- id: over_temperature
  payload: "INFO7"
  notes: "Auto-send on over-temperature event"

Macros

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

Safety

confirmation_required_for: []
interlocks: []
notes: "System Temperature Level Red (OK3) indicates about-to-trigger shutdown per source."

Notes

Command format (RS-232 / LAN port 23): ~xxNN n where ~ = 0x7E lead, xx = two-byte ASCII device ID (e.g. 3030 =00), NN = two-digit ASCII command code, space, n = ASCII variable, 0x0D terminator. Successful SET commands return P; failed return F. GET commands return OK<value>0x0D.

LAN control uses identical command framing on TCP port 23.

Additional ports exposed per the Port Information table: OMS Local Advanced Command (JSONRPC) on TCP 1688 inbound; OMSL telnet on TCP 23 inbound; Creative Cast WCP Control Plane TCP 3140; mDNS/Airplay UDP 5353; plus numerous outbound service ports. These interfaces are not enumerated as actions in this spec.

Provenance

source_domains:
  - optoma.co.uk
source_urls:
  - https://www.optoma.co.uk/ContentStorage/Documents/60495d69-222c-4eed-9500-b840e92443b3.pdf
retrieved_at: 2026-09-15T10:18:58.010Z
last_checked_at: 2026-09-17T22:20:59.735Z

Verification Summary

verdict: verified
checked_at: 2026-09-17T22:20:59.735Z
matched_actions: 113
action_count: 113
confidence: medium
summary: "All 113 spec actions have hex tokens that appear verbatim in the SET/GET command tables; transport values (port 23, baud 9600, 8N1, no flow control) appear verbatim. (4 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "firmware version not stated in source; no Get Firmware action rows captured beyond the GET command (covered below)."
- "no discrete settable parameter documents a single named property beyond what Actions already cover."
- "no multi-step sequences described in source."
- "firmware compatibility range not stated in source; no documented safety interlock procedures beyond temperature-warning feedback."

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