Summary

Sharp/NEC projector (Ms95 family) binary control protocol. Supports RS-232C serial and TCP/IP (wired/wireless LAN). Commands are framed hex byte sequences with a trailing checksum byte (low-order 8 bits of sum of all preceding bytes). Source: "Projector Control Command Reference Manual" BDT140013 Rev 7.1.

Transport

protocols:
  - tcp
  - serial
addressing:
  port: 7142  # source: "Use TCP port number 7142 for sending and receiving commands."
serial:
  baud_rate: 9600   # source lists supported set: 115200/38400/19200/9600/4800 - 9600 chosen as common default
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: null  # UNRESOLVED: flow control not stated; source lists "Full duplex" communication mode only
auth:
  type: none  # inferred: no auth/login procedure in source

Traits

traits:
  - powerable    # inferred: POWER ON / POWER OFF commands present
  - routable     # inferred: INPUT SW CHANGE command present
  - queryable    # inferred: many *REQUEST queries present
  - levelable    # inferred: PICTURE/VOLUME/ASPECT/OTHER ADJUST present

Actions

# All payloads verbatim from source (hex). ID1/ID2 appear only in responses.
# Checksum (CKS) = low-order byte of sum of all preceding bytes.
actions:
  - id: error_status_request
    label: 009 ERROR STATUS REQUEST
    kind: query
    command: "00h 88h 00h 00h 00h 88h"
    params: []

  - id: power_on
    label: 015 POWER ON
    kind: action
    command: "02h 00h 00h 00h 00h 02h"
    params: []
    notes: While powering on, no other command accepted.

  - id: power_off
    label: 016 POWER OFF
    kind: action
    command: "02h 01h 00h 00h 00h 03h"
    params: []
    notes: During power-off incl. cooling time, no other command accepted.

  - id: input_sw_change
    label: 018 INPUT SW CHANGE
    kind: action
    command: "02h 03h 00h 00h 02h 01h {DATA01} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: Input terminal value (e.g. 06h=video). Full value list in source Appendix not present.
    notes: Source example DATA01=06h → "02h 03h 00h 00h 02h 01h 06h 0Eh"

  - id: picture_mute_on
    label: 020 PICTURE MUTE ON
    kind: action
    command: "02h 10h 00h 00h 00h 12h"
    params: []

  - id: picture_mute_off
    label: 021 PICTURE MUTE OFF
    kind: action
    command: "02h 11h 00h 00h 00h 13h"
    params: []

  - id: sound_mute_on
    label: 022 SOUND MUTE ON
    kind: action
    command: "02h 12h 00h 00h 00h 14h"
    params: []

  - id: sound_mute_off
    label: 023 SOUND MUTE OFF
    kind: action
    command: "02h 13h 00h 00h 00h 15h"
    params: []

  - id: onscreen_mute_on
    label: 024 ONSCREEN MUTE ON
    kind: action
    command: "02h 14h 00h 00h 00h 16h"
    params: []

  - id: onscreen_mute_off
    label: 025 ONSCREEN MUTE OFF
    kind: action
    command: "02h 15h 00h 00h 00h 17h"
    params: []

  - id: picture_adjust
    label: 030-1 PICTURE ADJUST
    kind: action
    command: "03h 10h 00h 00h 05h {DATA01} FFh {DATA02} {DATA03} {DATA04} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "Adjustment target: 00h=Brightness,01h=Contrast,02h=Color,03h=Hue,04h=Sharpness"
      - name: DATA02
        type: enum
        description: "Adjustment mode: 00h=absolute,01h=relative"
      - name: DATA03
        type: integer
        description: Adjustment value (low 8 bits)
      - name: DATA04
        type: integer
        description: Adjustment value (high 8 bits)

  - id: volume_adjust
    label: 030-2 VOLUME ADJUST
    kind: action
    command: "03h 10h 00h 00h 05h 05h 00h {DATA01} {DATA02} {DATA03} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "Adjustment mode: 00h=absolute,01h=relative"
      - name: DATA02
        type: integer
        description: Adjustment value (low 8 bits)
      - name: DATA03
        type: integer
        description: Adjustment value (high 8 bits)
    notes: Source example sets volume to 10 → "...05h 00h 00h 0Ah 00h 27h"

  - id: aspect_adjust
    label: 030-12 ASPECT ADJUST
    kind: action
    command: "03h 10h 00h 00h 05h 18h 00h 00h {DATA01} 00h {CKS}"
    params:
      - name: DATA01
        type: enum
        description: Aspect value - full list in source Appendix (not present).

  - id: other_adjust
    label: 030-15 OTHER ADJUST
    kind: action
    command: "03h 10h 00h 00h 05h {DATA01} {DATA02} {DATA03} {DATA04} {DATA05} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "Adjustment target: 96h=LAMP ADJUST / LIGHT ADJUST"
      - name: DATA02
        type: enum
        description: "Adjustment mode: 00h=absolute,01h=relative"
      - name: DATA03
        type: integer
        description: Adjustment value (low 8 bits)
      - name: DATA04
        type: integer
        description: Adjustment value (high 8 bits)
      - name: DATA05
        type: integer
        description: Reserved per source structure

  - id: information_request
    label: 037 INFORMATION REQUEST
    kind: query
    command: "03h 8Ah 00h 00h 00h 8Dh"
    params: []

  - id: filter_usage_information_request
    label: 037-3 FILTER USAGE INFORMATION REQUEST
    kind: query
    command: "03h 95h 00h 00h 00h 98h"
    params: []

  - id: lamp_information_request_3
    label: 037-4 LAMP INFORMATION REQUEST 3
    kind: query
    command: "03h 96h 00h 00h 02h {DATA01} {DATA02} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "Lamp: 00h=Lamp1, 01h=Lamp2 (two-lamp models only)"
      - name: DATA02
        type: enum
        description: "Content: 01h=usage time (s), 04h=remaining life (%)"

  - id: carbon_savings_information_request
    label: 037-6 CARBON SAVINGS INFORMATION REQUEST
    kind: query
    command: "03h 9Ah 00h 00h 01h {DATA01} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "00h=Total Carbon Savings, 01h=Carbon Savings during operation"

  - id: remote_key_code
    label: 050 REMOTE KEY CODE
    kind: action
    command: "02h 0Fh 00h 00h 02h {DATA01} {DATA02} {CKS}"
    params:
      - name: DATA01
        type: integer
        description: Key code low byte (WORD-type key code)
      - name: DATA02
        type: integer
        description: Key code high byte
    notes: "Source key code list includes: 02h00h POWER ON, 03h00h POWER OFF, 05h00h AUTO, 06h00h MENU, 07h00h UP, 08h00h DOWN, 09h00h RIGHT, 0Ah00h LEFT, 0Bh00h ENTER, 0Ch00h EXIT, 0Dh00h HELP, 0Fh00h MAGNIFY UP, 10h00h MAGNIFY DOWN, 13h00h MUTE, 29h00h PICTURE, 4Bh00h COMPUTER1, 4Ch00h COMPUTER2, 4Fh00h VIDEO1, 51h00h S-VIDEO1, 84h00h VOLUME UP, 85h00h VOLUME DOWN, 8Ah00h FREEZE, A3h00h ASPECT, D7h00h SOURCE, EEh00h LAMP MODE/ECO"

  - id: shutter_close
    label: 051 SHUTTER CLOSE
    kind: action
    command: "02h 16h 00h 00h 00h 18h"
    params: []

  - id: shutter_open
    label: 052 SHUTTER OPEN
    kind: action
    command: "02h 17h 00h 00h 00h 19h"
    params: []

  - id: lens_control
    label: 053 LENS CONTROL
    kind: action
    command: "02h 18h 00h 00h 02h {DATA01} {DATA02} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "Target: 06h=Periphery Focus"
      - name: DATA02
        type: enum
        description: "Content: 00h=Stop, 01h=+1s, 02h=+0.5s, 03h=+0.25s, 7Fh=plus, 81h=minus, FDh=-0.25s, FEh=-0.5s, FFh=-1s"

  - id: lens_control_request
    label: 053-1 LENS CONTROL REQUEST
    kind: query
    command: "02h 1Ch 00h 00h 02h {DATA01} 00h {CKS}"
    params:
      - name: DATA01
        type: enum
        description: Target (see source)

  - id: lens_control_2
    label: 053-2 LENS CONTROL 2
    kind: action
    command: "02h 1Dh 00h 00h 04h {DATA01} {DATA02} {DATA03} {DATA04} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "FFh=Stop, other=target"
      - name: DATA02
        type: enum
        description: "Adjustment mode: 00h=absolute, 02h=relative"
      - name: DATA03
        type: integer
        description: Adjustment value (low 8 bits)
      - name: DATA04
        type: integer
        description: Adjustment value (high 8 bits)

  - id: lens_memory_control
    label: 053-3 LENS MEMORY CONTROL
    kind: action
    command: "02h 1Eh 00h 00h 01h {DATA01} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "00h=MOVE, 01h=STORE, 02h=RESET"

  - id: reference_lens_memory_control
    label: 053-4 REFERENCE LENS MEMORY CONTROL
    kind: action
    command: "02h 1Fh 00h 00h 01h {DATA01} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "00h=MOVE, 01h=STORE, 02h=RESET"
    notes: Controls profile selected by 053-10 LENS PROFILE SET.

  - id: lens_memory_option_request
    label: 053-5 LENS MEMORY OPTION REQUEST
    kind: query
    command: "02h 20h 00h 00h 01h {DATA01} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "00h=LOAD BY SIGNAL, 01h=FORCED MUTE"

  - id: lens_memory_option_set
    label: 053-6 LENS MEMORY OPTION SET
    kind: action
    command: "02h 21h 00h 00h 02h {DATA01} {DATA02} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "00h=LOAD BY SIGNAL, 01h=FORCED MUTE"
      - name: DATA02
        type: enum
        description: "Setting value: 00h=OFF, 01h=ON"

  - id: lens_information_request
    label: 053-7 LENS INFORMATION REQUEST
    kind: query
    command: "02h 22h 00h 00h 01h 00h 25h"
    params: []

  - id: lens_profile_set
    label: 053-10 LENS PROFILE SET
    kind: action
    command: "02h 27h 00h 00h 01h {DATA01} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "Profile number: 00h=Profile 1, 01h=Profile 2"

  - id: lens_profile_request
    label: 053-11 LENS PROFILE REQUEST
    kind: query
    command: "02h 28h 00h 00h 00h 2Ah"
    params: []

  - id: gain_parameter_request_3
    label: 060-1 GAIN PARAMETER REQUEST 3
    kind: query
    command: "03h 05h 00h 00h 03h {DATA01} 00h 00h {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "Adjusted value name: 00h=BRIGHTNESS,01h=CONTRAST,02h=COLOR,03h=HUE,04h=SHARPNESS,05h=VOLUME,96h=LAMP/LIGHT ADJUST"

  - id: setting_request
    label: 078-1 SETTING REQUEST
    kind: query
    command: "00h 85h 00h 00h 01h 00h 86h"
    params: []

  - id: running_status_request
    label: 078-2 RUNNING STATUS REQUEST
    kind: query
    command: "00h 85h 00h 00h 01h 01h 87h"
    params: []

  - id: input_status_request
    label: 078-3 INPUT STATUS REQUEST
    kind: query
    command: "00h 85h 00h 00h 01h 02h 88h"
    params: []

  - id: mute_status_request
    label: 078-4 MUTE STATUS REQUEST
    kind: query
    command: "00h 85h 00h 00h 01h 03h 89h"
    params: []

  - id: model_name_request
    label: 078-5 MODEL NAME REQUEST
    kind: query
    command: "00h 85h 00h 00h 01h 04h 8Ah"
    params: []

  - id: cover_status_request
    label: 078-6 COVER STATUS REQUEST
    kind: query
    command: "00h 85h 00h 00h 01h 05h 8Bh"
    params: []

  - id: freeze_control
    label: 079 FREEZE CONTROL
    kind: action
    command: "01h 98h 00h 00h 01h {DATA01} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "01h=freeze on, 02h=freeze off"

  - id: information_string_request
    label: 084 INFORMATION STRING REQUEST
    kind: query
    command: "00h D0h 00h 00h 03h 00h {DATA01} 01h {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "Information type: 03h=Horizontal sync frequency, 04h=Vertical sync frequency"

  - id: eco_mode_request
    label: 097-8 ECO MODE REQUEST
    kind: query
    command: "03h B0h 00h 00h 01h 07h BBh"
    params: []

  - id: lan_projector_name_request
    label: 097-45 LAN PROJECTOR NAME REQUEST
    kind: query
    command: "03h B0h 00h 00h 01h 2Ch E0h"
    params: []

  - id: lan_mac_address_status_request_2
    label: 097-155 LAN MAC ADDRESS STATUS REQUEST2
    kind: query
    command: "03h B0h 00h 00h 02h 9Ah 00h 4Fh"
    params: []

  - id: pip_picture_by_picture_request
    label: 097-198 PIP/PICTURE BY PICTURE REQUEST
    kind: query
    command: "03h B0h 00h 00h 02h C5h {DATA01} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "00h=MODE, 01h=START POSITION, 02h=SUB INPUT/SUB INPUT 1, 09h=SUB INPUT 2, 0Ah=SUB INPUT 3"

  - id: edge_blending_mode_request
    label: 097-243-1 EDGE BLENDING MODE REQUEST
    kind: query
    command: "03h B0h 00h 00h 02h DFh 00h 94h"
    params: []

  - id: eco_mode_set
    label: 098-8 ECO MODE SET
    kind: action
    command: "03h B1h 00h 00h 02h 07h {DATA01} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: Eco mode value - full list in source Appendix (not present).

  - id: lan_projector_name_set
    label: 098-45 LAN PROJECTOR NAME SET
    kind: action
    command: "03h B1h 00h 00h 12h 2Ch {DATA01..DATA16} 00h {CKS}"
    params:
      - name: name
        type: string
        description: Projector name (up to 16 bytes)

  - id: pip_picture_by_picture_set
    label: 098-198 PIP/PICTURE BY PICTURE SET
    kind: action
    command: "03h B1h 00h 00h 03h C5h {DATA01} {DATA02} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "00h=MODE, 01h=START POSITION, 02h=SUB INPUT 1, 09h=SUB INPUT 2, 0Ah=SUB INPUT 3"
      - name: DATA02
        type: enum
        description: "Value depends on DATA01 (MODE: 00h=PIP/01h=PbP; START POSITION: 00h=TL,01h=TR,02h=BL,03h=BR; sub-input per Appendix)"

  - id: edge_blending_mode_set
    label: 098-243-1 EDGE BLENDING MODE SET
    kind: action
    command: "03h B1h 00h 00h 03h DFh 00h {DATA01} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: "00h=OFF, 01h=ON"

  - id: base_model_type_request
    label: 305-1 BASE MODEL TYPE REQUEST
    kind: query
    command: "00h BFh 00h 00h 01h 00h C0h"
    params: []

  - id: serial_number_request
    label: 305-2 SERIAL NUMBER REQUEST
    kind: query
    command: "00h BFh 00h 00h 02h 01h 06h C8h"
    params: []

  - id: basic_information_request
    label: 305-3 BASIC INFORMATION REQUEST
    kind: query
    command: "00h BFh 00h 00h 01h 02h C2h"
    params: []

  - id: audio_select_set
    label: 319-10 AUDIO SELECT SET
    kind: action
    command: "03h C9h 00h 00h 03h 09h {DATA01} {DATA02} {CKS}"
    params:
      - name: DATA01
        type: enum
        description: Input terminal (value list in source Appendix, not present)
      - name: DATA02
        type: enum
        description: "Setting value: 00h=terminal specified in DATA01, 01h=BNC, 02h=COMPUTER"

Feedbacks

feedbacks:
  - id: error_status
    type: bitmask
    description: "Response to 009: 12 bytes DATA01-12. Each bit=0 normal, bit=1 error. DATA01-04 cover cover/fan/temp/power/lamp errors; DATA09 carries extended status (interlock switch, system errors)."
  - id: information
    type: object
    description: "Response to 037: projector name (DATA01-49), lamp usage time s (DATA83-86), filter usage time s (DATA87-90)."
  - id: filter_usage
    type: object
    description: "Response to 037-3: filter usage time s (DATA01-04), filter alarm start time s (DATA05-08). -1 if undefined."
  - id: lamp_information
    type: object
    description: "Response to 037-4: lamp usage time s or remaining life %. Negative life if replacement deadline exceeded."
  - id: carbon_savings
    type: object
    description: "Response to 037-6: Carbon Savings kg (DATA02-05) + mg (DATA06-09)."
  - id: lens_control
    type: object
    description: "Response to 053-1: upper/lower/current lens values (16-bit each)."
  - id: lens_information
    type: bitmask
    description: "Response to 053-7: bit0 lens memory, bit1 zoom, bit2 focus, bit3 lens shift H, bit4 lens shift V (0=stop,1=operating)."
  - id: lens_profile
    type: enum
    values: [profile_1, profile_2]
    description: "Response to 053-11."
  - id: gain_parameter
    type: object
    description: "Response to 060-1: status, upper/lower/default/current values, wide/narrow adjustment widths."
  - id: setting
    type: object
    description: "Response to 078-1: base model type, sound function availability, profile number."
  - id: running_status
    type: object
    description: "Response to 078-2: power status, cooling process, power on/off process, operation status."
  - id: input_status
    type: object
    description: "Response to 078-3: signal switch process, signal list number, signal types, content displayed."
  - id: mute_status
    type: object
    description: "Response to 078-4: picture/sound/onscreen/forced-onscreen mute + OSD display."
  - id: model_name
    type: string
    description: "Response to 078-5."
  - id: cover_status
    type: enum
    values: [normal_opened, closed]
    description: "Response to 078-6."
  - id: information_string
    type: string
    description: "Response to 084: horizontal or vertical sync frequency."
  - id: eco_mode
    type: enum
    description: "Response to 097-8 (values per Appendix not present)."
  - id: lan_projector_name
    type: string
    description: "Response to 097-45 (up to 17 bytes)."
  - id: lan_mac_address
    type: string
    description: "Response to 097-155: 6-byte MAC."
  - id: pip_pbpb
    type: object
    description: "Response to 097-198: MODE/START POSITION/SUB INPUT settings."
  - id: edge_blending_mode
    type: enum
    values: [off, on]
    description: "Response to 097-243-1."
  - id: base_model_type
    type: object
    description: "Response to 305-1: base model type + model name."
  - id: serial_number
    type: string
    description: "Response to 305-2."
  - id: basic_information
    type: object
    description: "Response to 305-3: operation status, content displayed, signal types, mute/freeze status."

Variables

# No separately declared settable variables beyond the parameterized Actions above.

Events

# Source documents no unsolicited notifications; all responses are command-acknowledgements.

Macros

# Source documents no multi-step macro sequences.

Safety

confirmation_required_for:
  - power_off  # source: cooling time follows; no other command accepted during
interlocks:
  - command: power_on
    note: "While powering on, no other command accepted."
  - command: power_off
    note: "During power-off incl. cooling time, no other command accepted."
# UNRESOLVED: source contains no explicit safety interlock procedures beyond the
# command-acceptance notes above; error-status bitmask (009) reports fan/temp/cover/
# interlock-switch/foreign-matter conditions but no recovery sequence documented.

Notes

  • All commands are binary hex frames. Response framing prefix differs by command class: 2xh/3xh echo replies, Axh error replies (with ERR1/ERR2), 20h/23h for data replies.
  • Checksum = low-order byte of sum of all preceding bytes (incl. header). Worked source example: 20h 81h 01h 60h 01h 00h → sum=103h → CKS=03h.
  • ID1 = projector control ID; ID2 = model code (varies by model). These appear in responses, not request templates.
  • Lamp usage time and information update at one-minute intervals despite one-second unit resolution.
  • Source references an "Appendix: Supplementary Information by Command" containing input-terminal values, base-model-type values, sub-input values, and eco-mode values — this appendix was NOT present in the extracted source text.

## Provenance

```yaml
source_domains:
  - sharpdisplays.eu
source_urls:
  - https://www.sharpdisplays.eu/p/download/cp/Products/Projectors/Shared/CommandLists/NEC-ExternalControlManual-english.pdf
retrieved_at: 2026-06-16T13:46:51.811Z
last_checked_at: 2026-06-18T08:32:15.696Z
```

## Verification Summary

```yaml
verdict: verified
checked_at: 2026-06-18T08:32:15.696Z
matched_actions: 53
action_count: 53
confidence: medium
summary: "All 53 spec actions matched verbatim against source command reference; transport parameters verified; complete bidirectional coverage. (8 unresolved item(s) noted in Known Gaps.)"
```

## Known Gaps

```yaml
- "source is a generic manual covering multiple projector models; Ms95 model name supplied externally, not confirmed verbatim in source. Input-terminal value table, key-code enums, and base-model-type enums referenced in an \"Appendix\" not present in the extracted source text."
- "flow control not stated; source lists \"Full duplex\" communication mode only"
- "source contains no explicit safety interlock procedures beyond the"
- "Ms95 model name supplied externally; source is a multi-model generic manual (BDT140013 Rev 7.1) and does not name a specific model."
- "flow_control not stated."
- "firmware version compatibility not stated."
- "Appendix value tables (input terminals, eco modes, sub-inputs, base model types) missing from extracted source."
- "ID2 model code value for Ms95 not stated."
```

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