Summary

NEC professional projector supporting both RS-232C serial and wired TCP/IP control. The document (BDT140013 Rev 7.1) defines a binary command protocol with checksum verification, supporting power control, input routing, picture/sound adjustment, lens control, mute, freeze, ECO mode, PIP/PbP, and extensive status querying. Both control interfaces share the same command set.

Transport

protocols:
  - serial
  - tcp
addressing:
  port: 7142  # TCP port for LAN control
serial:
  baud_rate: null  # UNRESOLVED: selectable 115200/38400/19200/9600/4800 bps - no single default stated
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: null  # UNRESOLVED: RTS/CTS hardware handshaking noted in pinout but flow_control setting not documented
auth:
  type: none  # inferred: no auth/login procedure in source

Traits

- powerable      # POWER ON / POWER OFF commands present
- routable       # INPUT SW CHANGE command present
- queryable      # multiple information request commands returning state
- levelable      # PICTURE ADJUST, VOLUME ADJUST, GAIN PARAMETER REQUEST present

Actions

- id: power_on
  label: Power On
  kind: action
  params: []
  description: Turns on projector power. No other command accepted during power-on sequence.
  command: "02h 00h 00h 00h 00h 02h"
  response: "A2h 00h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"

- id: power_off
  label: Power Off
  kind: action
  params: []
  description: Turns off projector power. No other command accepted during power-off/cooling sequence.
  command: "02h 01h 00h 00h 00h 03h"
  response: "A2h 01h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"

- id: input_sw_change
  label: Input Switch Change
  kind: action
  params:
    - name: input_terminal
      type: integer
      description: Hex code for input terminal (see appendix for values: COMPUTER=01h, HDMI=A1h/1Ah, DVI-D=9Ch, etc.)
  command_format: "02h 03h 00h 00h 02h 01h <DATA01> <CKS>"
  response: "22h 03h <ID1> <ID2> 01h <DATA01> <CKS>"

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

- id: picture_mute_off
  label: Picture Mute Off
  kind: action
  params: []

- id: sound_mute_on
  label: Sound Mute On
  kind: action
  params: []

- id: sound_mute_off
  label: Sound Mute Off
  kind: action
  params: []

- id: onscreen_mute_on
  label: Onscreen Mute On
  kind: action
  params: []

- id: onscreen_mute_off
  label: Onscreen Mute Off
  kind: action
  params: []

- id: picture_adjust
  label: Picture Adjust
  kind: action
  params:
    - name: target
      type: integer
      description: 00h=Brightness, 01h=Contrast, 02h=Color, 03h=Hue, 04h=Sharpness
    - name: mode
      type: integer
      description: 00h=absolute value, 01h=relative value
    - name: value
      type: integer
      description: 16-bit signed adjustment value (low-order byte first)
  command_format: "03h 10h 00h 00h 05h <DATA01> FFh <DATA02> <DATA03> <DATA04> <CKS>"
  example: "03h 10h 00h 00h 05h 00h FFh 00h 0Ah 00h 21h"

- id: volume_adjust
  label: Volume Adjust
  kind: action
  params:
    - name: mode
      type: integer
      description: 00h=absolute value, 01h=relative value
    - name: value
      type: integer
      description: 16-bit signed volume value (low-order byte first)

- id: aspect_adjust
  label: Aspect Adjust
  kind: action
  params:
    - name: aspect_mode
      type: integer
      description: Hex code for aspect mode (see appendix: AUTO=00h, WIDE ZOOM=01h, 16:9=02h, etc.)
  command_format: "03h 10h 00h 00h 05h 18h 00h 00h <DATA01> 00h <CKS>"

- id: other_adjust
  label: Other Adjust (Lamp/Light)
  kind: action
  params:
    - name: mode
      type: integer
      description: 00h=absolute value, 01h=relative value
    - name: value
      type: integer
      description: 16-bit signed value (low-order byte first)
  command_format: "03h 10h 00h 00h 05h 96h FFh <DATA03> <DATA04> <DATA05> <CKS>"

- id: remote_key_code
  label: Remote Key Code
  kind: action
  params:
    - name: key_code
      type: integer
      description: KEY CODE value from key code table (e.g., POWER ON=02h, MENU=06h, UP=07h, etc.)
  command_format: "02h 0Fh 00h 00h 02h <DATA01> <DATA02> <CKS>"

- id: shutter_close
  label: Shutter Close
  kind: action
  params: []

- id: shutter_open
  label: Shutter Open
  kind: action
  params: []

- id: lens_control
  label: Lens Control
  kind: action
  params:
    - name: target
      type: integer
      description: 06h=Periphery Focus
    - name: direction
      type: integer
      description: 00h=Stop, 01h=+1s, 02h=+0.5s, 03h=+0.25s, 7Fh=continuous+, 81h=continuous-, FDh=-0.25s, FEh=-0.5s, FFh=-1s

- id: lens_control_2
  label: Lens Control 2
  kind: action
  params:
    - name: action
      type: integer
      description: FFh=Stop
    - name: mode
      type: integer
      description: 00h=absolute value, 02h=relative value
    - name: value
      type: integer
      description: 16-bit position value (low-order byte first)

- id: lens_memory_control
  label: Lens Memory Control
  kind: action
  params:
    - name: operation
      type: integer
      description: 00h=MOVE, 01h=STORE, 02h=RESET

- id: reference_lens_memory_control
  label: Reference Lens Memory Control
  kind: action
  params:
    - name: operation
      type: integer
      description: 00h=MOVE, 01h=STORE, 02h=RESET

- id: lens_memory_option_set
  label: Lens Memory Option Set
  kind: action
  params:
    - name: option
      type: integer
      description: 00h=LOAD BY SIGNAL, 01h=FORCED MUTE
    - name: value
      type: integer
      description: 00h=OFF, 01h=ON

- id: lens_profile_set
  label: Lens Profile Set
  kind: action
  params:
    - name: profile
      type: integer
      description: 00h=Profile 1, 01h=Profile 2

- id: eco_mode_set
  label: ECO Mode Set
  kind: action
  params:
    - name: mode
      type: integer
      description: Eco mode hex code (see appendix: OFF=00h, NORMAL=00h/01h, ECO=02h/03h, LONG LIFE=04h, etc.)

- id: lan_projector_name_set
  label: LAN Projector Name Set
  kind: action
  params:
    - name: name
      type: string
      description: Projector name string (up to 16 bytes, NUL-terminated)

- id: pip_picture_by_picture_set
  label: PIP/Picture by Picture Set
  kind: action
  params:
    - name: item
      type: integer
      description: 00h=MODE, 01h=START POSITION, 02h=SUB INPUT, 09h=SUB INPUT 2, 0Ah=SUB INPUT 3
    - name: value
      type: integer
      description: Setting value (MODE: 00h=PIP, 01h=PbP; POSITION: 00h=TOP-LEFT, 01h=TOP-RIGHT, 02h=BOTTOM-LEFT, 03h=BOTTOM-RIGHT)

- id: edge_blending_mode_set
  label: Edge Blending Mode Set
  kind: action
  params:
    - name: mode
      type: integer
      description: 00h=OFF, 01h=ON

- id: audio_select_set
  label: Audio Select Set
  kind: action
  params:
    - name: input_terminal
      type: integer
      description: Input terminal hex code
    - name: audio_source
      type: integer
      description: 00h=terminal in DATA01, 01h=BNC, 02h=COMPUTER

- id: freeze_control
  label: Freeze Control
  kind: action
  params:
    - name: state
      type: integer
      description: 01h=freeze on, 02h=freeze off

Feedbacks

- id: error_status
  label: Error Status Request
  type: object
  query_command: "00h 88h 00h 00h 00h 88h"
  response_format: "A0h 88h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
  fields:
    - name: data01
      description: Error status 1 - Bit0=Cover, Bit1=Temperature(bi-metallic), Bit3=Fan, Bit4=Fan, Bit5=Power, Bit6=Lamp off, Bit7=Lamp moratorium
    - name: data02
      description: Error status 2 - Bit0=Lamp1 time exceeded, Bit1=Formatter, Bit2=Lamp2 off, Bit7=Extended status
    - name: data03
      description: Error status 3 - Bit1=FPGA, Bit2=Temperature(sensor), Bit3=Lamp1 not present, Bit4=Lamp1 data, Bit5=Mirror cover, Bit6=Lamp2 moratorium, Bit7=Lamp2 time exceeded
    - name: data04
      description: Error status 4 - Bit0=Lamp2 not present, Bit1=Lamp2 data, Bit2=Dust temp, Bit3=Foreign matter, Bit5=Ballast comm, Bit6=Iris calib, Bit7=Lens not installed
    - name: data09
      description: Extended status - Bit0=Portrait cover up, Bit1=Interlock switch open, Bit2=System error (Slave CPU), Bit3=System error (Formatter)

- id: information_request
  label: Information Request
  type: object
  query_command: "03h 8Ah 00h 00h 00h 8Dh"
  response_fields:
    - data01_49: Projector name (NUL-terminated string)
    - data83_86: Lamp usage time in seconds
    - data87_90: Filter usage time in seconds

- id: filter_usage_information_request
  label: Filter Usage Information Request
  type: object
  query_command: "03h 95h 00h 00h 00h 98h"
  response_fields:
    - data01_04: Filter usage time in seconds
    - data05_08: Filter alarm start time in seconds (-1 if undefined)

- id: lamp_information_request_3
  label: Lamp Information Request 3
  type: object
  params:
    - name: lamp
      type: integer
      description: 00h=Lamp 1, 01h=Lamp 2
    - name: content
      type: integer
      description: 01h=Lamp usage time, 04h=Lamp remaining life (%)
  query_command: "03h 96h 00h 00h 02h <DATA01> <DATA02> <CKS>"
  response_fields:
    - data01: Lamp number
    - data02: Content type
    - data03_06: Obtained information value

- id: carbon_savings_information_request
  label: Carbon Savings Information Request
  type: object
  params:
    - name: type
      type: integer
      description: 00h=Total Carbon Savings, 01h=Carbon Savings during operation
  query_command: "03h 9Ah 00h 00h 01h <DATA01> <CKS>"
  response_fields:
    - data02_05: Carbon Savings in kg (max 99999)
    - data06_09: Carbon Savings in mg (max 999999)

- id: lens_control_request
  label: Lens Control Request
  type: object
  params:
    - name: target
      type: integer
      description: Target item code
  query_command: "02h 1Ch 00h 00h 02h <DATA01> 00h <CKS>"
  response_fields:
    - data02_03: Upper limit of adjustment range (16-bit)
    - data04_05: Lower limit of adjustment range (16-bit)
    - data06_07: Current value (16-bit)

- id: lens_memory_option_request
  label: Lens Memory Option Request
  type: object
  params:
    - name: option
      type: integer
      description: 00h=LOAD BY SIGNAL, 01h=FORCED MUTE
  query_command: "02h 20h 00h 00h 01h <DATA01> <CKS>"
  response_fields:
    - data01: Option type
    - data02: Setting value (00h=OFF, 01h=ON)

- id: lens_information_request
  label: Lens Information Request
  type: object
  query_command: "02h 22h 00h 00h 01h 00h 25h"
  response_fields:
    - data01: Bit0=Lens memory, Bit1=Zoom, Bit2=Focus, Bit3=Lens Shift(H), Bit4=Lens Shift(V)

- id: lens_profile_request
  label: Lens Profile Request
  type: object
  query_command: "02h 28h 00h 00h 00h 2Ah"
  response_fields:
    - data01: Profile number (00h=Profile 1, 01h=Profile 2)

- id: gain_parameter_request_3
  label: Gain Parameter Request 3
  type: object
  params:
    - name: parameter
      type: integer
      description: 00h=PICTURE/BRIGHTNESS, 01h=CONTRAST, 02h=COLOR, 03h=HUE, 04h=SHARPNESS, 05h=VOLUME, 96h=LAMP/LIGHT
  query_command: "03h 05h 00h 00h 03h <DATA01> 00h 00h <CKS>"
  response_fields:
    - data01: Adjustment status (00h=not possible, 01h=not possible, 02h=possible, FFh=does not exist)
    - data02_03: Upper limit (16-bit)
    - data04_05: Lower limit (16-bit)
    - data06_07: Default value (16-bit)
    - data08_09: Current value (16-bit)

- id: setting_request
  label: Setting Request
  type: object
  query_command: "00h 85h 00h 00h 01h 00h 86h"
  response_fields:
    - data01_03: Base model type
    - data04: Sound function (00h=not available, 01h=available)
    - data05: Clock/sleep timer function

- id: running_status_request
  label: Running Status Request
  type: object
  query_command: "00h 85h 00h 00h 01h 01h 87h"
  response_fields:
    - data03: Power status (00h=Standby, 01h=Power on)
    - data04: Cooling process (00h=not executed, 01h=during execution)
    - data05: Power On/Off process (00h=not executed, 01h=during execution)
    - data06: Operation status (00h=Standby(Sleep), 04h=Power on, 05h=Cooling, 06h=Standby(error), 0Fh=Standby(power saving), 10h=Network standby)

- id: input_status_request
  label: Input Status Request
  type: object
  query_command: "00h 85h 00h 00h 01h 02h 88h"
  response_fields:
    - data01: Signal switch process
    - data02: Signal list number (+1 for actual value)
    - data03: Selection signal type 1
    - data04: Selection signal type 2
    - data09: Content displayed (00h=Video, 01h=No signal, 02h=Viewer, 03h=Test pattern, 04h=LAN)

- id: mute_status_request
  label: Mute Status Request
  type: object
  query_command: "00h 85h 00h 00h 01h 03h 89h"
  response_fields:
    - data01: Picture mute (00h=Off, 01h=On)
    - data02: Sound mute (00h=Off, 01h=On)
    - data03: Onscreen mute (00h=Off, 01h=On)
    - data04: Forced onscreen mute (00h=Off, 01h=On)
    - data05: Onscreen display (00h=not displayed, 01h=displayed)

- id: model_name_request
  label: Model Name Request
  type: object
  query_command: "00h 85h 00h 00h 01h 04h 8Ah"
  response_fields:
    - data01_32: Model name (NUL-terminated string)

- id: cover_status_request
  label: Cover Status Request
  type: object
  query_command: "00h 85h 00h 00h 01h 05h 8Bh"
  response_fields:
    - data01: Status (00h=Normal/cover opened, 01h=Cover closed)

- id: information_string_request
  label: Information String Request
  type: object
  params:
    - name: type
      type: integer
      description: 03h=Horizontal sync frequency, 04h=Vertical sync frequency
  query_command: "00h D0h 00h 00h 03h 00h <DATA01> 01h <CKS>"
  response_fields:
    - data01: Information type
    - data02: String length
    - data03_??: Information string (NUL-terminated)

- id: eco_mode_request
  label: ECO Mode Request
  type: object
  query_command: "03h B0h 00h 00h 01h 07h BBh"
  response_fields:
    - data01: ECO mode value

- id: lan_projector_name_request
  label: LAN Projector Name Request
  type: object
  query_command: "03h B0h 00h 00h 01h 2Ch E0h"
  response_fields:
    - data01_17: Projector name (NUL-terminated)

- id: lan_mac_address_status_request2
  label: LAN MAC Address Status Request 2
  type: object
  query_command: "03h B0h 00h 00h 02h 9Ah 00h 4Fh"
  response_fields:
    - data01_06: MAC address (6 bytes)

- id: pip_picture_by_picture_request
  label: PIP/Picture by Picture Request
  type: object
  params:
    - name: item
      type: integer
      description: 00h=MODE, 01h=START POSITION, 02h=SUB INPUT, 09h=SUB INPUT 2, 0Ah=SUB INPUT 3
  query_command: "03h B0h 00h 00h 02h C5h <DATA01> <CKS>"
  response_fields:
    - data01: Item type
    - data02: Setting value

- id: edge_blending_mode_request
  label: Edge Blending Mode Request
  type: object
  query_command: "03h B0h 00h 00h 02h DFh 00h 94h"
  response_fields:
    - data01: Setting value (00h=OFF, 01h=ON)

- id: base_model_type_request
  label: Base Model Type Request
  type: object
  query_command: "00h BFh 00h 00h 01h 00h C0h"
  response_fields:
    - data01_02: Base model type
    - data03_11: Model name (NUL-terminated)

- id: serial_number_request
  label: Serial Number Request
  type: object
  query_command: "00h BFh 00h 00h 02h 01h 06h C8h"
  response_fields:
    - data01_16: Serial number (NUL-terminated string)

- id: basic_information_request
  label: Basic Information Request
  type: object
  query_command: "00h BFh 00h 00h 01h 02h C2h"
  response_fields:
    - data01: Operation status
    - data02: Content displayed
    - data03: Selection signal type 1
    - data04: Selection signal type 2
    - data05: Display signal type
    - data06: Video mute
    - data07: Sound mute
    - data08: Onscreen mute
    - data09: Freeze status

Variables

# UNRESOLVED: no discrete settable parameter commands separate from Actions above.
# All settable parameters are represented as Actions in this spec.

Events

# UNRESOLVED: no unsolicited event notifications documented. All communication
# is command/response; the device does not initiate messages.

Macros

# UNRESOLVED: no multi-step macro sequences documented in source.

Safety

confirmation_required_for: []
interlocks:
  - description: Power-on commands (015. POWER ON): while power is turning on, no other command can be accepted
  - description: Power-off commands (016. POWER OFF): while power is turning off (including cooling time), no other command can be accepted
  - description: Standby mode requirements: some models require specific standby modes (Normal, Active, Eco, Network Standby, Sleep, etc.) to receive commands via serial or LAN. Supported standby modes vary by model.
# UNRESOLVED: no explicit safety warnings for voltage, current, or physical hazards stated in source.

Notes

Command protocol: binary hexadecimal format with checksum. All commands begin with a source address byte, followed by model code, control ID, data length, optional parameters, and a low-order byte checksum of all preceding bytes.

Standby mode dependency: the document explicitly notes that some models require specific standby modes to receive serial or LAN commands, and the supported modes differ between serial and LAN control. This is a critical configuration step for reliable operation.

Lens control note: sending continuous drive commands (7Fh or 81h) requires a subsequent stop command (00h) to halt lens movement.

Lamp/filter usage times are updated at one-minute intervals even though they can be queried in one-second resolution.

Carbon savings values returned in kilogram (max 99999kg) and milligram (max 999999mg) components.

Provenance

source_domains:
  - sharpdisplays.eu
source_urls:
  - https://www.sharpdisplays.eu/p/download/cp/Products/Projectors/Shared/CommandLists/NEC-ExternalControlManual-english.pdf
retrieved_at: 2026-04-29T13:51:36.196Z
last_checked_at: 2026-06-02T19:39:08.476Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T19:39:08.476Z
matched_actions: 53
action_count: 53
confidence: medium
summary: "All 53 spec actions matched their source hex sequences verbatim including the corrected picture_adjust FFh byte; transport values verified; source and spec share an identical 53-command catalogue. (13 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "input terminal code values vary across NEC model families; appendix provides common values but some entries show alternative codes (e.g., HDMI: A1h or 1Ah)"
- "selectable 115200/38400/19200/9600/4800 bps - no single default stated"
- "RTS/CTS hardware handshaking noted in pinout but flow_control setting not documented"
- "no discrete settable parameter commands separate from Actions above."
- "no unsolicited event notifications documented. All communication"
- "no multi-step macro sequences documented in source."
- "no explicit safety warnings for voltage, current, or physical hazards stated in source."
- "aspect mode values vary by model (appendix shows multiple codes for same modes, e.g., ZOOM=07h or 08h, FULL=09h or 10h)"
- "input terminal hex codes vary significantly across NEC model families; appendix lists common values but some entries show alternatives"
- "eco mode hex codes vary across models (e.g., NORMAL=00h or 01h, ECO=02h or 03h)"
- "flow_control setting not documented despite RTS/CTS pinout being specified"
- "CONTROL ID (ID1) and MODEL CODE (ID2) values are model-specific and not stated in this document"
- "default serial baud rate not stated — must be configured from the documented options (115200/38400/19200/9600/4800)"

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