Summary

NEC Exx2 projector RS-232C and TCP/IP control protocol. Supports serial (RS-232C cross cable) and wired LAN (TCP port 7142). Full duplex communication with checksum-based packet framing. Source documents 53 command groups covering power, input routing, mute, picture/sound adjustment, lens control, eco mode, freeze, PIP, edge blending, and status queries.

Transport

# Packet framing: command/response expressed as hex byte strings.
# General response frame: <type> <op> <ID1> <ID2> <LEN> <DATA...> <CKS>
# ID1 = control ID set on projector; ID2 = model code (varies by model).
# CKS = checksum = low-order byte of sum of all preceding bytes.
protocols:
  - serial
  - tcp
addressing:
  port: 7142
serial:
  baud_rate: null  # UNRESOLVED: no default stated in source; supported rates = 115200/38400/19200/9600/4800 bps
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none  # communication mode: full duplex (source 1.2)
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable    # inferred from 015 POWER ON / 016 POWER OFF
- routable     # inferred from 018 INPUT SW CHANGE
- queryable    # inferred from numerous status/error/information request commands
- levelable    # inferred from 030-1 PICTURE ADJUST / 030-2 VOLUME ADJUST

Actions

# Notes on payloads:
# - Fixed commands carry a complete literal hex payload including the checksum byte.
# - Parameterized commands show <DATA##> placeholders verbatim from source plus a
#   <CKS> placeholder; checksum = low-order byte of sum of all preceding bytes.
# - ID1 (control ID) / ID2 (model code) appear in responses, not in the literal
#   command bytes documented for these operations.

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

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

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

- id: input_sw_change
  label: Input SW Change
  kind: action
  command: "02h 03h 00h 00h 02h 01h <DATA01> <CKS>"
  params:
    - name: input_terminal
      type: integer
      description: "DATA01 = Input terminal code (see appendix; source references appendix for numeric values). Example: 06h = video port."

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

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

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

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

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

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

- id: picture_adjust
  label: Picture Adjust
  kind: action
  command: "03h 10h 00h 00h 05h <DATA01> FFh <DATA02> <DATA03> <DATA04> <CKS>"
  params:
    - name: target
      type: integer
      description: "DATA01 = 00h Brightness, 01h Contrast, 02h Color, 03h Hue, 04h Sharpness"
    - name: mode
      type: integer
      description: "DATA02 = 00h Absolute value, 01h Relative value"
    - name: value
      type: integer
      description: "16-bit signed adjustment value (DATA03 = low-order 8 bits, DATA04 = high-order 8 bits)"

- id: volume_adjust
  label: Volume Adjust
  kind: action
  command: "03h 10h 00h 00h 05h 05h 00h <DATA01> <DATA02> <DATA03> <CKS>"
  params:
    - name: mode
      type: integer
      description: "DATA01 = 00h Absolute value, 01h Relative value"
    - name: value
      type: integer
      description: "16-bit signed volume value (DATA02 = low-order 8 bits, DATA03 = high-order 8 bits)"

- id: aspect_adjust
  label: Aspect Adjust
  kind: action
  command: "03h 10h 00h 00h 05h 18h 00h 00h <DATA01> 00h <CKS>"
  params:
    - name: value
      type: integer
      description: "DATA01 = Aspect ratio code (see appendix in source for values)"

- id: other_adjust
  label: Other Adjust (Lamp/Light)
  kind: action
  command: "03h 10h 00h 00h 05h <DATA01> <DATA02> <DATA03> <DATA04> <DATA05> <CKS>"
  params:
    - name: target
      type: integer
      description: "DATA01=96h DATA02=FFh => Lamp Adjust / Light Adjust"
    - name: mode
      type: integer
      description: "DATA03 = 00h Absolute value, 01h Relative value"
    - name: value
      type: integer
      description: "16-bit signed adjustment value (DATA04 low, DATA05 high)"

- id: information_request
  label: Information Request
  kind: query
  command: "03h 8Ah 00h 00h 00h 8Dh"
  params: []

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

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

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

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

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

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

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

- id: lens_control_request
  label: Lens Control Request
  kind: query
  command: "02h 1Ch 00h 00h 02h <DATA01> 00h <CKS>"
  params:
    - name: target
      type: integer
      description: "DATA01 = 06h Periphery Focus"

- id: lens_control_2
  label: Lens Control 2
  kind: action
  command: "02h 1Dh 00h 00h 04h <DATA01> <DATA02> <DATA03> <DATA04> <CKS>"
  params:
    - name: command
      type: integer
      description: "DATA01 = FFh Stop (when Stop, mode/value not referenced)"
    - name: mode
      type: integer
      description: "DATA02 = 00h Absolute value, 02h Relative value"
    - name: value
      type: integer
      description: "16-bit signed adjustment value (DATA03 low, DATA04 high)"

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

- id: reference_lens_memory_control
  label: Reference Lens Memory Control
  kind: action
  command: "02h 1Fh 00h 00h 01h <DATA01> <CKS>"
  params:
    - name: operation
      type: integer
      description: "DATA01 = 00h MOVE, 01h STORE, 02h RESET (operates on profile set via LENS PROFILE SET)"

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

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

- id: lens_information_request
  label: Lens Information Request
  kind: query
  command: "02h 22h 00h 00h 01h 00h 25h"
  params:
    - name: target
      type: integer
      description: "DATA01 (fixed 00h in command); response byte = lens operation status bitfield"

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

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

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

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

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

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

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

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

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

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

- id: information_string_request
  label: Information String Request
  kind: query
  command: "00h D0h 00h 00h 03h 00h <DATA01> 01h <CKS>"
  params:
    - name: information_type
      type: integer
      description: "DATA01 = 03h Horizontal synchronous frequency, 04h Vertical synchronous frequency"

- id: eco_mode_request
  label: Eco Mode Request
  kind: query
  command: "03h B0h 00h 00h 01h 07h BBh"
  params: []

- id: lan_projector_name_request
  label: LAN Projector Name Request
  kind: query
  command: "03h B0h 00h 00h 01h 2Ch E0h"
  params: []

- id: lan_mac_address_status_request2
  label: LAN MAC Address Status Request 2
  kind: query
  command: "03h B0h 00h 00h 02h 9Ah 00h 4Fh"
  params: []

- id: pip_picture_by_picture_request
  label: PIP/Picture by Picture Request
  kind: query
  command: "03h B0h 00h 00h 02h C5h <DATA01> <CKS>"
  params:
    - name: target
      type: integer
      description: "DATA01 = 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: "03h B0h 00h 00h 02h DFh 00h 94h"
  params: []

- id: eco_mode_set
  label: Eco Mode Set
  kind: action
  command: "03h B1h 00h 00h 02h 07h <DATA01> <CKS>"
  params:
    - name: value
      type: integer
      description: "DATA01 = Eco mode value (see appendix in source for numeric mapping; sets Light mode or Lamp mode depending on model)"

- id: lan_projector_name_set
  label: LAN Projector Name Set
  kind: action
  command: "03h B1h 00h 00h 12h 2Ch <DATA01> - <DATA16> 00h <CKS>"
  params:
    - name: name
      type: string
      description: "DATA01-DATA16 = Projector name (up to 16 bytes), followed by 00h NUL terminator"

- id: pip_picture_by_picture_set
  label: PIP/Picture by Picture Set
  kind: action
  command: "03h B1h 00h 00h 03h C5h <DATA01> <DATA02> <CKS>"
  params:
    - name: target
      type: integer
      description: "DATA01 = 00h MODE, 01h START POSITION, 02h SUB INPUT/SUB INPUT 1, 09h SUB INPUT 2, 0Ah SUB INPUT 3"
    - name: value
      type: integer
      description: "DATA02 = setting value per target. MODE: 00h PIP, 01h PICTURE BY PICTURE. START POSITION: 00h TOP-LEFT, 01h TOP-RIGHT, 02h BOTTOM-LEFT, 03h BOTTOM-RIGHT. Sub input values: see appendix"

- id: edge_blending_mode_set
  label: Edge Blending Mode Set
  kind: action
  command: "03h B1h 00h 00h 03h DFh 00h <DATA01> <CKS>"
  params:
    - name: value
      type: integer
      description: "DATA01 = 00h OFF, 01h ON"

- id: base_model_type_request
  label: Base Model Type Request
  kind: query
  command: "00h BFh 00h 00h 01h 00h C0h"
  params: []

- id: serial_number_request
  label: Serial Number Request
  kind: query
  command: "00h BFh 00h 00h 02h 01h 06h C8h"
  params: []

- id: basic_information_request
  label: Basic Information Request
  kind: query
  command: "00h BFh 00h 00h 01h 02h C2h"
  params: []

- id: audio_select_set
  label: Audio Select Set
  kind: action
  command: "03h C9h 00h 00h 03h 09h <DATA01> <DATA02> <CKS>"
  params:
    - name: input_terminal
      type: integer
      description: "DATA01 = Input terminal code (see appendix in source for numeric values)"
    - name: setting_value
      type: integer
      description: "DATA02 = 00h terminal specified in DATA01, 01h BNC, 02h COMPUTER"

Feedbacks

- id: power_state
  type: enum
  values:
    - standby
    - power_on
    - cooling
    - network_standby
    - standby_error
    - standby_power_saving

- id: error_status
  type: bitfield
  description: "Error information bitfield, 12 bytes (DATA01-DATA12). Bits map to cover error, temp error, fan error, power error, lamp status, formatter error, FPGA error, mirror cover error, dust sensor, and extended interlock/status bits."

- id: mute_state
  type: object
  fields:
    - name: picture_mute
      type: enum
      values: [off, on]
    - name: sound_mute
      type: enum
      values: [off, on]
    - name: onscreen_mute
      type: enum
      values: [off, on]
    - name: forced_onscreen_mute
      type: enum
      values: [off, on]

- id: lamp_info
  type: object
  fields:
    - name: lamp_number
      type: integer
    - name: usage_time_seconds
      type: integer
    - name: remaining_life_percent
      type: integer
      description: "Negative if replacement deadline exceeded"

- id: filter_usage_info
  type: object
  fields:
    - name: usage_time_seconds
      type: integer
    - name: alarm_start_time_seconds
      type: integer
      description: "Returns -1 if no time defined"

- id: carbon_savings_info
  type: object
  fields:
    - name: type
      type: integer
    - name: kilograms
      type: integer
      description: "Max 99999 kg"
    - name: milligrams
      type: integer
      description: "Max 999999 mg"

- id: projector_name
  type: string
  description: "NUL-terminated string"

- id: model_name
  type: string
  description: "NUL-terminated string, up to 32 bytes"

- id: serial_number
  type: string
  description: "NUL-terminated string, up to 16 bytes"

- id: mac_address
  type: string
  description: "6-byte MAC address"

- id: lens_position_range
  type: object
  fields:
    - name: upper_limit
      type: integer
    - name: lower_limit
      type: integer
    - name: current_value
      type: integer

- id: lens_info
  type: bitfield
  description: "Lens operation status bits (lens memory, zoom, focus, lens shift H/V)"

- id: input_status
  type: object
  fields:
    - name: signal_switch_process
      type: integer
    - name: signal_list_number
      type: integer
    - name: selection_signal_type_1
      type: integer
    - name: selection_signal_type_2
      type: integer
    - name: signal_list_type
      type: integer
    - name: test_pattern_display
      type: integer
    - name: content_displayed
      type: integer

- id: cover_status
  type: enum
  values: [normal, cover_closed]

# UNRESOLVED: eco mode values mapping not stated in source appendix
# UNRESOLVED: aspect ratio values mapping not stated in source appendix
# UNRESOLVED: input terminal numeric codes not stated in source appendix
# UNRESOLVED: PIP/PBP sub-input values not stated in source appendix

Variables

# UNRESOLVED: no standalone settable parameter block identified in source; picture/volume/gain are action-based encapsulated commands

Events

# UNRESOLVED: source documents no unsolicited event notifications from the projector

Macros

# UNRESOLVED: no explicit multi-step macro sequences described in source

Safety

confirmation_required_for: []
interlocks:
  - description: "While the power-on command is executing, no other command can be accepted (source: section 3.2)"
  - description: "While the power-off command is executing (including cooling time), no other command can be accepted (source: section 3.3)"
  - description: "Portrait cover side must not be up; interlock switch open state returned in extended error DATA09 (source: section 2.4)"
# UNRESOLVED: voltage/current/power specifications not stated in source

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-05-27T05:44:15.333Z
last_checked_at: 2026-07-21T23:36:06.796Z

Verification Summary

verdict: verified
checked_at: 2026-07-21T23:36:06.796Z
matched_actions: 53
action_count: 53
confidence: medium
summary: "All 53 spec actions matched verbatim to source command reference; transport parameters verified; complete coverage. (11 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "final model name not stated; \"Exx2\" is a manufacturer-wide control protocol designation. Input terminal numeric codes reference an appendix not present in source."
- "no default stated in source; supported rates = 115200/38400/19200/9600/4800 bps"
- "eco mode values mapping not stated in source appendix"
- "aspect ratio values mapping not stated in source appendix"
- "input terminal numeric codes not stated in source appendix"
- "PIP/PBP sub-input values not stated in source appendix"
- "no standalone settable parameter block identified in source; picture/volume/gain are action-based encapsulated commands"
- "source documents no unsolicited event notifications from the projector"
- "no explicit multi-step macro sequences described in source"
- "voltage/current/power specifications not stated in source"
- "exact numeric values for input terminals, aspect modes, eco mode, and sub-input settings — reference appendix \"Supplementary Information by Command\" not present in source. UNRESOLVED: wireless LAN unit specifications not in source. UNRESOLVED: serial default baud rate not stated (multiple rates supported but no default specified). UNRESOLVED: firmware version compatibility not stated. UNRESOLVED: ID2 model code values not enumerated in source."

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