Summary

Sharp/NEC NP VE303X is a projector controllable via RS-232C serial (PC CONTROL D-SUB 9P) and wired/wireless LAN (TCP). This spec covers the binary hex command protocol documented in the Projector Control Command Reference Manual (BDT140013 Rev 7.1): power, input switching, mutes, lens/shutter, picture/volume/aspect/gain adjustment, eco mode, PIP/P-by-P, edge blending, and a broad set of status/error/information queries.

Transport

protocols:
  - serial
  - tcp
serial:
  baud_rate: 115200/38400/19200/9600/4800  # bps; source lists supported set, single value selectable on device
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none  # UNRESOLVED: flow control not stated in source (RTS/CTS pins wired per pin table)
addressing:
  port: 7142
auth:
  type: none  # inferred: no auth procedure in source

Traits

# - powerable       (POWER ON / POWER OFF commands present)
# - queryable       (many status / information request commands returning values)
# - levelable       (volume, picture, lamp/light adjust commands present)
# - routable        (INPUT SW CHANGE / audio select routing present)
traits:
  - powerable  # inferred from power command examples
  - queryable  # inferred from query command examples
  - levelable  # inferred from volume/picture/gain adjust commands
  - routable   # inferred from input switch / audio select commands

Actions

# Binary protocol. Commands are hex byte sequences; the final byte of each
# fixed command is the checksum (CKS). Parameterized commands end with <CKS>
# computed as the low-order byte of the sum of all preceding bytes.
# ID1 (control ID) / ID2 (model code) appear in responses only.

# --- Power ---
- id: power_on
  label: Power On
  kind: action
  command: "02 00 00 00 00 02"
  params: []

- id: power_off
  label: Power Off
  kind: action
  command: "02 01 00 00 00 03"
  params: []

# --- Input / routing ---
- id: input_sw_change
  label: Input SW Change
  kind: action
  command: "02 03 00 00 02 01 <DATA01> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: Input terminal value (e.g. 06h = video port). Full value list UNRESOLVED - defined in "Supplementary Information by Command" appendix not in source.

- id: audio_select_set
  label: Audio Select Set
  kind: action
  command: "03 C9 00 00 03 09 <DATA01> <DATA02> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: Input terminal. Value list UNRESOLVED (appendix not in source).
    - name: DATA02
      type: integer
      description: "Setting value (00h = terminal specified in DATA01, 01h = BNC, 02h = COMPUTER)."

# --- Mutes ---
- id: picture_mute_on
  label: Picture Mute On
  kind: action
  command: "02 10 00 00 00 12"
  params: []

- id: picture_mute_off
  label: Picture Mute Off
  kind: action
  command: "02 11 00 00 00 13"
  params: []

- id: sound_mute_on
  label: Sound Mute On
  kind: action
  command: "02 12 00 00 00 14"
  params: []

- id: sound_mute_off
  label: Sound Mute Off
  kind: action
  command: "02 13 00 00 00 15"
  params: []

- id: onscreen_mute_on
  label: Onscreen Mute On
  kind: action
  command: "02 14 00 00 00 16"
  params: []

- id: onscreen_mute_off
  label: Onscreen Mute Off
  kind: action
  command: "02 15 00 00 00 17"
  params: []

# --- Adjustments ---
- id: picture_adjust
  label: Picture Adjust
  kind: action
  command: "03 10 00 00 05 <DATA01> FF <DATA02> <DATA03> <DATA04> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "Adjustment target (00h=Brightness, 01h=Contrast, 02h=Color, 03h=Hue, 04h=Sharpness)."
    - name: DATA02
      type: integer
      description: "Adjustment mode (00h=absolute, 01h=relative)."
    - name: DATA03
      type: integer
      description: Adjustment value (low-order 8 bits).
    - name: DATA04
      type: integer
      description: Adjustment value (high-order 8 bits).

- id: volume_adjust
  label: Volume Adjust
  kind: action
  command: "03 10 00 00 05 05 00 <DATA01> <DATA02> <DATA03> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "Adjustment mode (00h=absolute, 01h=relative)."
    - name: DATA02
      type: integer
      description: Adjustment value (low-order 8 bits).
    - name: DATA03
      type: integer
      description: Adjustment value (high-order 8 bits).

- id: aspect_adjust
  label: Aspect Adjust
  kind: action
  command: "03 10 00 00 05 18 00 00 <DATA01> 00 <CKS>"
  params:
    - name: DATA01
      type: integer
      description: Value set for the aspect. Value list UNRESOLVED (appendix not in source).

- id: other_adjust
  label: Other Adjust (Lamp/Light Adjust)
  kind: action
  command: "03 10 00 00 05 <DATA01> <DATA02> <DATA03> <DATA04> <DATA05> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "96h (LAMP ADJUST / LIGHT ADJUST)."
    - name: DATA02
      type: integer
      description: "FFh (per source target pairing)."
    - name: DATA03
      type: integer
      description: "Adjustment mode (00h=absolute, 01h=relative)."
    - name: DATA04
      type: integer
      description: Adjustment value (low-order 8 bits).
    - name: DATA05
      type: integer
      description: Adjustment value (high-order 8 bits).

# --- Remote / freeze ---
- id: remote_key_code
  label: Remote Key Code
  kind: action
  command: "02 0F 00 00 02 <DATA01> <DATA02> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "Key code low byte (WORD type). Source-documented examples: 02h=POWER ON, 03h=POWER OFF, 05h=AUTO, 06h=MENU, 07h=UP, 08h=DOWN, 09h=RIGHT, 0Ah=LEFT, 0Bh=ENTER, 0Ch=EXIT, 0Dh=HELP, 0Fh=MAGNIFY UP, 10h=MAGNIFY DOWN, 13h=MUTE, 29h=PICTURE, 4Bh=COMPUTER1, 4Ch=COMPUTER2, 4Fh=VIDEO1, 51h=S-VIDEO1, 84h=VOLUME UP, 85h=VOLUME DOWN, 8Ah=FREEZE, A3h=ASPECT, D7h=SOURCE, EEh=LAMP MODE/ECO."
    - name: DATA02
      type: integer
      description: Key code high byte (00h for all listed keys).

- id: freeze_control
  label: Freeze Control
  kind: action
  command: "01 98 00 00 01 <DATA01> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "01h=freeze on, 02h=freeze off."

# --- Shutter / lens ---
- id: shutter_close
  label: Shutter Close
  kind: action
  command: "02 16 00 00 00 18"
  params: []

- id: shutter_open
  label: Shutter Open
  kind: action
  command: "02 17 00 00 00 19"
  params: []

- id: lens_control
  label: Lens Control
  kind: action
  command: "02 18 00 00 02 <DATA01> <DATA02> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "Lens target; source documents 06h=Periphery Focus."
    - name: DATA02
      type: integer
      description: "Content (00h=Stop, 01h=drive +1s, 02h=drive +0.5s, 03h=drive +0.25s, 7Fh=drive plus, 81h=drive minus, FDh=drive -0.25s, FEh=drive -0.5s, FFh=drive -1s)."

- id: lens_control_2
  label: Lens Control 2
  kind: action
  command: "02 1D 00 00 04 <DATA01> <DATA02> <DATA03> <DATA04> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "Lens target (FFh=Stop)."
    - name: DATA02
      type: integer
      description: "Adjustment mode (00h=absolute, 02h=relative)."
    - name: DATA03
      type: integer
      description: Adjustment value (low-order 8 bits).
    - name: DATA04
      type: integer
      description: Adjustment value (high-order 8 bits).

- id: lens_memory_control
  label: Lens Memory Control
  kind: action
  command: "02 1E 00 00 01 <DATA01> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "00h=MOVE, 01h=STORE, 02h=RESET."

- id: reference_lens_memory_control
  label: Reference Lens Memory Control
  kind: action
  command: "02 1F 00 00 01 <DATA01> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "00h=MOVE, 01h=STORE, 02h=RESET."

- id: lens_memory_option_set
  label: Lens Memory Option Set
  kind: action
  command: "02 21 00 00 02 <DATA01> <DATA02> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "00h=LOAD BY SIGNAL, 01h=FORCED MUTE."
    - name: DATA02
      type: integer
      description: "Setting value (00h=OFF, 01h=ON)."

- id: lens_profile_set
  label: Lens Profile Set
  kind: action
  command: "02 27 00 00 01 <DATA01> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "Profile number (00h=Profile 1, 01h=Profile 2)."

# --- Eco / LAN / PIP / edge blending ---
- id: eco_mode_set
  label: Eco Mode Set
  kind: action
  command: "03 B1 00 00 02 07 <DATA01> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: Value set for the eco mode. Value list UNRESOLVED (appendix not in source).

- id: lan_projector_name_set
  label: LAN Projector Name Set
  kind: action
  command: "03 B1 00 00 12 2C <DATA01> <DATA02> <DATA03> <DATA04> <DATA05> <DATA06> <DATA07> <DATA08> <DATA09> <DATA10> <DATA11> <DATA12> <DATA13> <DATA14> <DATA15> <DATA16> 00 <CKS>"
  params:
    - name: name
      type: string
      description: Projector name bytes (DATA01-DATA16, up to 16 bytes, NUL-terminated).

- id: pip_picture_by_picture_set
  label: PIP / Picture by Picture Set
  kind: action
  command: "03 B1 00 00 03 C5 <DATA01> <DATA02> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "Item (00h=MODE, 01h=START POSITION, 02h=SUB INPUT/SUB INPUT 1, 09h=SUB INPUT 2, 0Ah=SUB INPUT 3)."
    - name: DATA02
      type: integer
      description: "Setting value (MODE: 00h=PIP,01h=P-by-P; START POSITION: 00h..03h; SUB INPUT values UNRESOLVED in appendix)."

- id: edge_blending_mode_set
  label: Edge Blending Mode Set
  kind: action
  command: "03 B1 00 00 03 DF 00 <DATA01> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "Setting value (00h=OFF, 01h=ON)."

# --- Queries ---
- id: error_status_request
  label: Error Status Request
  kind: query
  command: "00 88 00 00 00 88"
  params: []

- id: information_request
  label: Information Request
  kind: query
  command: "03 8A 00 00 00 8D"
  params: []

- id: filter_usage_info_request
  label: Filter Usage Information Request
  kind: query
  command: "03 95 00 00 00 98"
  params: []

- id: lamp_info_request_3
  label: Lamp Information Request 3
  kind: query
  command: "03 96 00 00 02 <DATA01> <DATA02> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "Lamp (00h=Lamp 1, 01h=Lamp 2 - Lamp 2 only on two-lamp models)."
    - name: DATA02
      type: integer
      description: "Content (01h=usage time seconds, 04h=remaining life %)."

- id: carbon_savings_info_request
  label: Carbon Savings Information Request
  kind: query
  command: "03 9A 00 00 01 <DATA01> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "00h=Total Carbon Savings, 01h=Carbon Savings during operation."

- id: lens_control_request
  label: Lens Control Request
  kind: query
  command: "02 1C 00 00 02 <DATA01> 00 <CKS>"
  params:
    - name: DATA01
      type: integer
      description: Lens adjustment target (same target set as Lens Control).

- id: lens_memory_option_request
  label: Lens Memory Option Request
  kind: query
  command: "02 20 00 00 01 <DATA01> <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "00h=LOAD BY SIGNAL, 01h=FORCED MUTE."

- id: lens_information_request
  label: Lens Information Request
  kind: query
  command: "02 22 00 00 01 00 25"
  params: []

- id: lens_profile_request
  label: Lens Profile Request
  kind: query
  command: "02 28 00 00 00 2A"
  params: []

- id: gain_parameter_request_3
  label: Gain Parameter Request 3
  kind: query
  command: "03 05 00 00 03 <DATA01> 00 00 <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "Adjusted value name (00h=BRIGHTNESS, 01h=CONTRAST, 02h=COLOR, 03h=HUE, 04h=SHARPNESS, 05h=VOLUME, 96h=LAMP/LIGHT ADJUST)."

- id: setting_request
  label: Setting Request
  kind: query
  command: "00 85 00 00 01 00 86"
  params: []

- id: running_status_request
  label: Running Status Request
  kind: query
  command: "00 85 00 00 01 01 87"
  params: []

- id: input_status_request
  label: Input Status Request
  kind: query
  command: "00 85 00 00 01 02 88"
  params: []

- id: mute_status_request
  label: Mute Status Request
  kind: query
  command: "00 85 00 00 01 03 89"
  params: []

- id: model_name_request
  label: Model Name Request
  kind: query
  command: "00 85 00 00 01 04 8A"
  params: []

- id: cover_status_request
  label: Cover Status Request
  kind: query
  command: "00 85 00 00 01 05 8B"
  params: []

- id: information_string_request
  label: Information String Request
  kind: query
  command: "00 D0 00 00 03 00 <DATA01> 01 <CKS>"
  params:
    - name: DATA01
      type: integer
      description: "Information type (03h=Horizontal sync frequency, 04h=Vertical sync frequency)."

- id: eco_mode_request
  label: Eco Mode Request
  kind: query
  command: "03 B0 00 00 01 07 BB"
  params: []

- id: lan_projector_name_request
  label: LAN Projector Name Request
  kind: query
  command: "03 B0 00 00 01 2C E0"
  params: []

- id: lan_mac_address_request_2
  label: LAN MAC Address Status Request 2
  kind: query
  command: "03 B0 00 00 02 9A 00 4F"
  params: []

- id: pip_picture_by_picture_request
  label: PIP / Picture by Picture Request
  kind: query
  command: "03 B0 00 00 02 C5 <DATA01> <CKS>"
  params:
    - name: DATA01
      type: integer
      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: Edge Blending Mode Request
  kind: query
  command: "03 B0 00 00 02 DF 00 94"
  params: []

- id: base_model_type_request
  label: Base Model Type Request
  kind: query
  command: "00 BF 00 00 01 00 C0"
  params: []

- id: serial_number_request
  label: Serial Number Request
  kind: query
  command: "00 BF 00 00 02 01 06 C8"
  params: []

- id: basic_information_request
  label: Basic Information Request
  kind: query
  command: "00 BF 00 00 01 02 C2"
  params: []

Feedbacks

# Responses are binary. Success responses echo the command's low byte and add
# ID1/ID2 + LEN + data + CKS; error responses use header 0xAx with ERR1/ERR2.
# Per-command response data layouts are documented in the source (e.g. running
# status, mute status, error status bit fields). Enumerated feedback states:
- id: power_state
  type: enum
  values: [standby, power_on, cooling, standby_error, standby_power_saving, network_standby]
  # source: 078-2 RUNNING STATUS / 305-3 BASIC INFORMATION DATA01/DATA06
- id: error_state
  type: bitmask
  values: [cover_error, fan_error, temperature_error, lamp_off, lamp_replacement, lamp_usage_exceeded, formatter_error, mirror_cover_error, lens_not_installed, interlock_switch_open, system_error]
  # source: 009 ERROR STATUS REQUEST DATA01-12 bit fields
- id: command_result
  type: enum
  values: [success, error]
  # source: ERR1/ERR2 codes (section 2.4)

Variables

# Settable parameters surfaced via dedicated request commands (not discrete actions).
# Value maps for several are UNRESOLVED (appendix not in source).
- id: eco_mode
  type: enum
  # UNRESOLVED: value map in "Supplementary Information by Command" appendix
- id: aspect
  type: enum
  # UNRESOLVED: value map in appendix
- id: input_terminal
  type: enum
  # UNRESOLVED: value map in appendix

Events

# No unsolicited notifications documented. Protocol is strictly request/response.
# UNRESOLVED: none documented in source.

Macros

# No multi-step sequences described in source.
# UNRESOLVED: not applicable / none documented.

Safety

confirmation_required_for: []
interlocks: []
# Source notes command-lockout behavior (not interlocks to populate):
#   - During power-on no other command accepted (3.2)
#   - During power-off incl. cooling no other command accepted (3.3)
# UNRESOLVED: no explicit safety warnings, interlock procedures, or power-on
# sequencing requirements stated in source.

Notes

  • Command framing: each fixed command's final byte is the checksum (CKS). Parameterized commands carry <CKS> to be computed at runtime.
  • Checksum algorithm (source 2.2): sum all bytes preceding the checksum, take the low-order 8 bits of the result as CKS. Example from source: 20 81 01 60 01 00 → sum = 103h → CKS = 03h.
  • Response headers: 2x = success (command class +0x20), Ax = error (command class +0xA0). Responses include ID1 (control ID set on projector) and ID2 (model code); commands do not.
  • Error codes ERR1/ERR2 are documented in section 2.4 (e.g. 00h/00h = unrecognized command; 02h/0Dh = command rejected because power off).
  • Serial cable is a cross cable wired to the PC CONTROL D-SUB 9P port (pin table in source 1.1). RTS/CTS pins are wired though explicit flow control is not stated.
  • Lamp/filter usage times returned in seconds, updated at one-minute intervals; lamp remaining life (%) may be negative past the replacement deadline.
  • While a lens is being driven, lens position can be controlled without a stop by re-issuing the same Lens Control command (3.22).

Spec done. 53 commands enumerated (28 actions + 25 queries). Serial + TCP, port 7142. Value-map gaps flagged UNRESOLVED.

## 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-16T09:26:45.653Z
last_checked_at: 2026-06-18T08:58:02.434Z
```

## Verification Summary

```yaml
verdict: verified
checked_at: 2026-06-18T08:58:02.434Z
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. (10 unresolved item(s) noted in Known Gaps.)"
```

## Known Gaps

```yaml
- "input-terminal value map, aspect value map, eco-mode value map, base-model-type codes, and selection-signal-type maps are defined in a \"Supplementary Information by Command\" appendix not present in the refined source and could not be populated."
- "flow control not stated in source (RTS/CTS pins wired per pin table)"
- "value map in \"Supplementary Information by Command\" appendix"
- "value map in appendix"
- "none documented in source."
- "not applicable / none documented."
- "no explicit safety warnings, interlock procedures, or power-on"
- "input-terminal, aspect, eco-mode, base-model-type, and selection-signal-type value maps live in a \"Supplementary Information by Command\" appendix absent from the refined source."
- "firmware version compatibility not stated in source."
- "serial flow_control not stated in source."
```

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