Summary

NEC NP-M Series projectors with binary command protocol over RS-232C serial and wired LAN (TCP port 7142). Supports power control, input switching, picture/audio adjustment, lens control (zoom, focus, shift), lens memory, shutter, muting, freeze, eco mode, edge blending, PIP/PbP, and extensive status querying including error status, lamp/filter usage, and model information. Commands use hexadecimal byte frames with checksum validation.

Transport

protocols:
  - serial
  - tcp
addressing:
  port: 7142  # TCP port for wired LAN
serial:
  baud_rate: [115200, 38400, 19200, 9600, 4800]
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: UNRESOLVED  # UNRESOLVED: RTS/CTS pins wired but flow control mode not stated
  connector: "D-SUB 9P (PC CONTROL port)"
  pinout:
    2: RxD
    3: TxD
    5: GND
    7: RTS
    8: CTS
auth:
  type: UNRESOLVED  # UNRESOLVED: source does not state whether authentication is required

Traits

traits:
  - powerable    # inferred from power on/off commands
  - queryable    # inferred from extensive request/status commands
  - routable     # inferred from input switch command
  - levelable    # inferred from volume, picture, and lens adjustment commands
  - mutable      # inferred from picture/sound/onscreen mute commands

Actions

actions:
  - id: power_on
    label: "Power On"
    kind: action
    command_bytes: "02h 00h 00h 00h 00h 02h"
    response_success_bytes: "22h 00h <ID1> <ID2> 00h <CKS>"
    params: []
    notes: "No other commands accepted during power-on sequence."

  - id: power_off
    label: "Power Off"
    kind: action
    command_bytes: "02h 01h 00h 00h 00h 03h"
    response_success_bytes: "22h 01h <ID1> <ID2> 00h <CKS>"
    params: []
    notes: "No other commands accepted during power-off including cooling time."

  - id: input_switch
    label: "Input Switch"
    kind: action
    command_bytes: "02h 03h 00h 00h 02h 01h <DATA01> <CKS>"
    response_success_bytes: "22h 03h <ID1> <ID2> 01h <DATA01> <CKS>"
    params:
      - name: input
        type: integer
        description: "Input terminal hex code (varies by model - see supplementary tables)"
    notes: "DATA01=06h for VIDEO port. Response DATA01: 00h=success, FFh=error (no signal switch)."

  - id: picture_mute_on
    label: "Picture Mute On"
    kind: action
    command_bytes: "02h 10h 00h 00h 00h 12h"
    response_success_bytes: "22h 10h <ID1> <ID2> 00h <CKS>"
    params: []
    notes: "Automatically turned off on input terminal switch or video signal switch."

  - id: picture_mute_off
    label: "Picture Mute Off"
    kind: action
    command_bytes: "02h 11h 00h 00h 00h 13h"
    response_success_bytes: "22h 11h <ID1> <ID2> 00h <CKS>"
    params: []

  - id: sound_mute_on
    label: "Sound Mute On"
    kind: action
    command_bytes: "02h 12h 00h 00h 00h 14h"
    response_success_bytes: "22h 12h <ID1> <ID2> 00h <CKS>"
    params: []
    notes: "Automatically turned off on input switch, signal switch, or volume adjustment."

  - id: sound_mute_off
    label: "Sound Mute Off"
    kind: action
    command_bytes: "02h 13h 00h 00h 00h 15h"
    response_success_bytes: "22h 13h <ID1> <ID2> 00h <CKS>"
    params: []

  - id: onscreen_mute_on
    label: "Onscreen Mute On"
    kind: action
    command_bytes: "02h 14h 00h 00h 00h 16h"
    response_success_bytes: "22h 14h <ID1> <ID2> 00h <CKS>"
    params: []
    notes: "Automatically turned off on input terminal switch or video signal switch."

  - id: onscreen_mute_off
    label: "Onscreen Mute Off"
    kind: action
    command_bytes: "02h 15h 00h 00h 00h 17h"
    response_success_bytes: "22h 15h <ID1> <ID2> 00h <CKS>"
    params: []

  - id: picture_adjust
    label: "Picture Adjust"
    kind: action
    command_bytes: "03h 10h 00h 00h 05h <DATA01> FFh <DATA02> <DATA03> <DATA04> <CKS>"
    response_success_bytes: "23h 10h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    params:
      - name: target
        type: integer
        description: "Adjustment target: 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 byte, high byte)"

  - id: volume_adjust
    label: "Volume Adjust"
    kind: action
    command_bytes: "03h 10h 00h 00h 05h 05h 00h <DATA01> <DATA02> <DATA03> <CKS>"
    response_success_bytes: "23h 10h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    params:
      - name: mode
        type: integer
        description: "00h=absolute value, 01h=relative value"
      - name: value
        type: integer
        description: "16-bit signed adjustment value (low byte, high byte)"

  - id: aspect_adjust
    label: "Aspect Adjust"
    kind: action
    command_bytes: "03h 10h 00h 00h 05h 18h 00h 00h <DATA01> 00h <CKS>"
    response_success_bytes: "23h 10h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    params:
      - name: aspect
        type: integer
        description: "Aspect value (varies by model - see supplementary tables)"

  - id: lamp_adjust
    label: "Lamp/Light Adjust"
    kind: action
    command_bytes: "03h 10h 00h 00h 05h 96h FFh <DATA03> <DATA04> <DATA05> <CKS>"
    response_success_bytes: "23h 10h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    params:
      - name: mode
        type: integer
        description: "00h=absolute value, 01h=relative value"
      - name: value
        type: integer
        description: "16-bit signed adjustment value (low byte, high byte)"

  - id: remote_key_code
    label: "Remote Key Code"
    kind: action
    command_bytes: "02h 0Fh 00h 00h 02h <DATA01> <DATA02> <CKS>"
    response_success_bytes: "22h 0Fh <ID1> <ID2> 01h <DATA01> <CKS>"
    params:
      - name: key_code
        type: integer
        description: "WORD key code (low byte, high byte) - examples: 0002h=POWER ON, 0003h=POWER OFF, 0005h=AUTO, 0006h=MENU, 0007h=UP, 0008h=DOWN, 0009h=RIGHT, 000Ah=LEFT, 000Bh=ENTER, 000Ch=EXIT, 0084h=VOLUME UP, 0085h=VOLUME DOWN, 008Ah=FREEZE"
    notes: "Response DATA01: 00h=success, FFh=error."

  - id: shutter_close
    label: "Shutter Close"
    kind: action
    command_bytes: "02h 16h 00h 00h 00h 18h"
    response_success_bytes: "22h 16h <ID1> <ID2> 00h <CKS>"
    params: []

  - id: shutter_open
    label: "Shutter Open"
    kind: action
    command_bytes: "02h 17h 00h 00h 00h 19h"
    response_success_bytes: "22h 17h <ID1> <ID2> 00h <CKS>"
    params: []

  - id: lens_control
    label: "Lens Control"
    kind: action
    command_bytes: "02h 18h 00h 00h 02h <DATA01> <DATA02> <CKS>"
    response_success_bytes: "22h 18h <ID1> <ID2> 01h <DATA01> <CKS>"
    params:
      - name: target
        type: integer
        description: "00h=Zoom, 01h=Focus, 02h=Lens Shift H, 03h=Lens Shift V, 06h=Periphery Focus"
      - name: content
        type: integer
        description: "00h=Stop, 01h=+1s, 02h=+0.5s, 03h=+0.25s, 7Fh=continuous plus, 81h=continuous minus, FDh=-0.25s, FEh=-0.5s, FFh=-1s"
    notes: "For 7Fh/81h (continuous), send 00h to stop."

  - id: lens_control_2
    label: "Lens Control 2 (Absolute/Relative)"
    kind: action
    command_bytes: "02h 1Dh 00h 00h 04h <DATA01> <DATA02> <DATA03> <DATA04> <CKS>"
    response_success_bytes: "22h 1Dh <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    params:
      - name: target
        type: integer
        description: "00h=Zoom, 01h=Focus, 02h=Lens Shift H, 03h=Lens Shift V, FFh=Stop"
      - name: mode
        type: integer
        description: "00h=absolute, 02h=relative"
      - name: value
        type: integer
        description: "16-bit adjustment value (low byte, high byte)"

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

  - id: reference_lens_memory_control
    label: "Reference Lens Memory Control"
    kind: action
    command_bytes: "02h 1Fh 00h 00h 01h <DATA01> <CKS>"
    response_success_bytes: "22h 1Fh <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    params:
      - name: operation
        type: integer
        description: "00h=MOVE, 01h=STORE, 02h=RESET"
    notes: "Controls the profile specified by lens_profile_set."

  - id: lens_memory_option_set
    label: "Lens Memory Option Set"
    kind: action
    command_bytes: "02h 21h 00h 00h 02h <DATA01> <DATA02> <CKS>"
    response_success_bytes: "22h 21h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    params:
      - name: target
        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
    command_bytes: "02h 27h 00h 00h 01h <DATA01> <CKS>"
    response_success_bytes: "22h 27h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    params:
      - name: profile
        type: integer
        description: "00h=Profile 1, 01h=Profile 2"

  - id: freeze_control
    label: "Freeze Control"
    kind: action
    command_bytes: "01h 98h 00h 00h 01h <DATA01> <CKS>"
    response_success_bytes: "21h 98h <ID1> <ID2> 01h <DATA01> <CKS>"
    params:
      - name: operation
        type: integer
        description: "01h=freeze on, 02h=freeze off"

  - id: eco_mode_set
    label: "Eco Mode Set"
    kind: action
    command_bytes: "03h B1h 00h 00h 02h 07h <DATA01> <CKS>"
    response_success_bytes: "23h B1h <ID1> <ID2> 02h 07h <DATA01> <CKS>"
    params:
      - name: eco_mode
        type: integer
        description: "Value varies by model - see supplementary tables"

  - id: projector_name_set
    label: "Projector Name Set"
    kind: action
    command_bytes: "03h B1h 00h 00h 12h 2Ch <DATA01-16> 00h <CKS>"
    response_success_bytes: "23h B1h <ID1> <ID2> 02h 2Ch <DATA01> <CKS>"
    params:
      - name: name
        type: string
        description: "Projector name (up to 16 bytes)"

  - id: pip_pbp_set
    label: "PIP/Picture by Picture Set"
    kind: action
    command_bytes: "03h B1h 00h 00h 03h C5h <DATA01> <DATA02> <CKS>"
    response_success_bytes: "23h B1h <ID1> <ID2> 03h C5h <DATA01> <DATA02> <CKS>"
    params:
      - name: target
        type: integer
        description: "00h=MODE, 01h=START POSITION, 02h=SUB INPUT/SUB INPUT 1, 09h=SUB INPUT 2, 0Ah=SUB INPUT 3"
      - name: value
        type: integer
        description: "MODE: 00h=PIP, 01h=PbP. POSITION: 00h=TL, 01h=TR, 02h=BL, 03h=BR. Sub input varies by model."

  - id: edge_blending_set
    label: "Edge Blending Set"
    kind: action
    command_bytes: "03h B1h 00h 00h 03h DFh 00h <DATA01> <CKS>"
    response_success_bytes: "23h B1h <ID1> <ID2> 03h DFh 00h <DATA01> <CKS>"
    params:
      - name: value
        type: integer
        description: "00h=OFF, 01h=ON"

  - id: audio_select_set
    label: "Audio Select Set"
    kind: action
    command_bytes: "03h C9h 00h 00h 03h 09h <DATA01> <DATA02> <CKS>"
    response_success_bytes: "23h C9h <ID1> <ID2> 03h 09h <DATA01> <DATA02> <CKS>"
    params:
      - name: input_terminal
        type: integer
        description: "Input terminal hex code"
      - name: audio_source
        type: integer
        description: "00h=same as specified terminal, 01h=BNC, 02h=COMPUTER"

Feedbacks

feedbacks:
  - id: error_status
    label: "Error Status"
    type: binary_bitmap
    command_bytes: "00h 88h 00h 00h 00h 88h"
    query_command: "009. ERROR STATUS REQUEST"
    response_bytes: "20h 88h <ID1> <ID2> 0Ch <DATA01-12> <CKS>"
    description: "12-byte error bitmap. Bits include: cover error, fan error, temperature error, power error, lamp off, lamp replacement moratorium, lamp usage exceeds limit, lamp not present, mirror cover error, ballast communication error, iris calibration error, lens not installed, interlock switch open, system error (Slave CPU/Formatter), portrait cover side up."

  - id: projector_information
    label: "Projector Information"
    type: object
    command_bytes: "03h 8Ah 00h 00h 00h 8Dh"
    query_command: "037. INFORMATION REQUEST"
    response_bytes: "23h 8Ah <ID1> <ID2> 62h <DATA01-98> <CKS>"
    fields:
      - name: projector_name
        bytes: "DATA01-49"
        description: "Projector name (NUL terminated)"
      - name: lamp_usage_seconds
        bytes: "DATA83-86"
        description: "Lamp usage time in seconds (updated at 1-minute intervals)"
      - name: filter_usage_seconds
        bytes: "DATA87-90"
        description: "Filter usage time in seconds"

  - id: filter_usage
    label: "Filter Usage Information"
    type: object
    command_bytes: "03h 95h 00h 00h 00h 98h"
    query_command: "037-3. FILTER USAGE INFORMATION REQUEST"
    response_bytes: "23h 95h <ID1> <ID2> 08h <DATA01-08> <CKS>"
    fields:
      - name: filter_usage_seconds
        bytes: "DATA01-04"
        description: "Filter usage time in seconds"
      - name: filter_alarm_seconds
        bytes: "DATA05-08"
        description: "Filter alarm start time in seconds (-1 if undefined)"

  - id: lamp_information
    label: "Lamp Information"
    type: object
    command_bytes: "03h 96h 00h 00h 02h <DATA01> <DATA02> <CKS>"
    query_command: "037-4. LAMP INFORMATION REQUEST 3"
    response_bytes: "23h 96h <ID1> <ID2> 06h <DATA01-06> <CKS>"
    params:
      - name: target
        description: "00h=Lamp 1, 01h=Lamp 2 (two-lamp models only)"
      - name: content
        description: "01h=usage time (seconds), 04h=remaining life (%)"
    fields:
      - name: value
        bytes: "DATA03-06"
        description: "Requested information. Negative remaining life if replacement deadline exceeded."

  - id: carbon_savings
    label: "Carbon Savings Information"
    type: object
    command_bytes: "03h 9Ah 00h 00h 01h <DATA01> <CKS>"
    query_command: "037-6. CARBON SAVINGS INFORMATION REQUEST"
    response_bytes: "23h 9Ah <ID1> <ID2> 09h <DATA01-09> <CKS>"
    params:
      - name: target
        description: "00h=Total, 01h=During operation"
    fields:
      - name: kilograms
        bytes: "DATA02-05"
        description: "Carbon savings in kg (max 99999)"
      - name: milligrams
        bytes: "DATA06-09"
        description: "Carbon savings in mg (max 999999)"

  - id: running_status
    label: "Running Status"
    type: object
    command_bytes: "00h 85h 00h 00h 01h 01h 87h"
    query_command: "078-2. RUNNING STATUS REQUEST"
    response_bytes: "20h 85h <ID1> <ID2> 10h <DATA01-16> <CKS>"
    fields:
      - name: power_status
        bytes: DATA03
        values: ["00h=Standby", "01h=Power On", "FFh=Not supported"]
      - name: cooling
        bytes: DATA04
        values: ["00h=Not executing", "01h=Executing", "FFh=Not supported"]
      - name: power_on_off_process
        bytes: DATA05
        values: ["00h=Not executing", "01h=Executing", "FFh=Not supported"]
      - name: operation_status
        bytes: DATA06
        values: ["00h=Standby (Sleep)", "04h=Power On", "05h=Cooling", "06h=Standby (error)", "0Fh=Standby (Power saving)", "10h=Network standby"]

  - id: input_status
    label: "Input Status"
    type: object
    command_bytes: "00h 85h 00h 00h 01h 02h 88h"
    query_command: "078-3. INPUT STATUS REQUEST"
    response_bytes: "20h 85h <ID1> <ID2> 10h <DATA01-16> <CKS>"
    fields:
      - name: signal_switch
        bytes: DATA01
        values: ["00h=Not executing", "01h=Executing"]
      - name: signal_list_number
        bytes: DATA02
        description: "Signal list number - 1 (add 1 for actual number)"
      - name: signal_type_1
        bytes: DATA03
      - name: signal_type_2
        bytes: DATA04
        values: ["01h=COMPUTER", "02h=VIDEO", "03h=S-VIDEO", "04h=COMPONENT", "07h=VIEWER(1-5)", "20h=DVI-D", "21h=HDMI", "22h=DisplayPort", "23h=VIEWER(6-10)", "FFh=Not Source Input"]
      - name: signal_list_type
        bytes: DATA05
        values: ["00h=Default", "01h=User", "FFh=Not supported"]
      - name: test_pattern_display
        bytes: DATA06
        values: ["00h=Not displayed", "01h=Displayed", "FFh=Not supported"]
      - name: content_displayed
        bytes: DATA09
        values: ["00h=Video signal", "01h=No signal", "02h=Viewer", "03h=Test pattern", "04h=LAN", "FFh=Not supported"]

  - id: mute_status
    label: "Mute Status"
    type: object
    command_bytes: "00h 85h 00h 00h 01h 03h 89h"
    query_command: "078-4. MUTE STATUS REQUEST"
    response_bytes: "20h 85h <ID1> <ID2> 10h <DATA01-16> <CKS>"
    fields:
      - name: picture_mute
        bytes: DATA01
        values: ["00h=Off", "01h=On", "FFh=Not supported"]
      - name: sound_mute
        bytes: DATA02
        values: ["00h=Off", "01h=On", "FFh=Not supported"]
      - name: onscreen_mute
        bytes: DATA03
        values: ["00h=Off", "01h=On", "FFh=Not supported"]
      - name: forced_onscreen_mute
        bytes: DATA04
        values: ["00h=Off", "01h=On", "FFh=Not supported"]
      - name: onscreen_display
        bytes: DATA05
        values: ["00h=Not displayed", "01h=Displayed", "FFh=Not supported"]

  - id: model_name
    label: "Model Name"
    type: string
    command_bytes: "00h 85h 00h 00h 01h 04h 8Ah"
    query_command: "078-5. MODEL NAME REQUEST"
    response_bytes: "20h 85h <ID1> <ID2> 20h <DATA01-32> <CKS>"
    description: "Model name (NUL terminated, up to 32 bytes)"

  - id: cover_status
    label: "Cover Status"
    type: enum
    command_bytes: "00h 85h 00h 00h 01h 05h 8Bh"
    query_command: "078-6. COVER STATUS REQUEST"
    response_bytes: "20h 85h <ID1> <ID2> 01h <DATA01> <CKS>"
    values: ["00h=Normal (cover opened)", "01h=Cover closed"]

  - id: lens_position
    label: "Lens Position"
    type: object
    command_bytes: "02h 1Ch 00h 00h 02h <DATA01> 00h <CKS>"
    query_command: "053-1. LENS CONTROL REQUEST"
    response_bytes: "22h 1Ch <ID1> <ID2> 08h <DATA01> 00h <DATA02-07> <CKS>"
    params:
      - name: target
        description: "00h=Zoom, 01h=Focus, 02h=Lens Shift H, 03h=Lens Shift V"
    fields:
      - name: upper_limit
        bytes: "DATA02-03"
        description: "Upper limit of adjustment range"
      - name: lower_limit
        bytes: "DATA04-05"
        description: "Lower limit of adjustment range"
      - name: current_value
        bytes: "DATA06-07"
        description: "Current position value"

  - id: lens_information
    label: "Lens Information"
    type: binary_bitmap
    command_bytes: "02h 22h 00h 00h 01h 00h 25h"
    query_command: "053-7. LENS INFORMATION REQUEST"
    response_bytes: "22h 22h <ID1> <ID2> 02h 00h <DATA01> <CKS>"
    description: "Operation status per lens function. Bit0=Lens memory, Bit1=Zoom, Bit2=Focus, Bit3=Lens Shift H, Bit4=Lens Shift V. 0=Stop, 1=During operation."

  - id: lens_memory_option
    label: "Lens Memory Option"
    type: object
    command_bytes: "02h 20h 00h 00h 01h <DATA01> <CKS>"
    query_command: "053-5. LENS MEMORY OPTION REQUEST"
    response_bytes: "22h 20h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    params:
      - name: target
        description: "00h=LOAD BY SIGNAL, 01h=FORCED MUTE"
    fields:
      - name: value
        description: "00h=OFF, 01h=ON"

  - id: lens_profile
    label: "Lens Profile"
    type: enum
    command_bytes: "02h 28h 00h 00h 00h 2Ah"
    query_command: "053-11. LENS PROFILE REQUEST"
    response_bytes: "22h 28h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    values: ["00h=Profile 1", "01h=Profile 2"]

  - id: gain_parameter
    label: "Gain Parameter"
    type: object
    command_bytes: "03h 05h 00h 00h 03h <DATA01> 00h 00h <CKS>"
    query_command: "060-1. GAIN PARAMETER REQUEST 3"
    response_bytes: "23h 05h <ID1> <ID2> 10h <DATA01-16> <CKS>"
    params:
      - name: name
        description: "00h=Brightness, 01h=Contrast, 02h=Color, 03h=Hue, 04h=Sharpness, 05h=Volume, 96h=Lamp/Light Adjust"
    fields:
      - name: status
        bytes: DATA01
        values: ["00h=Display not possible", "01h=Adjustment not possible", "02h=Adjustment possible", "FFh=Gain does not exist"]
      - name: upper_limit
        bytes: "DATA02-03"
      - name: lower_limit
        bytes: "DATA04-05"
      - name: default
        bytes: "DATA06-07"
      - name: current_value
        bytes: "DATA08-09"
      - name: wide_adjustment_width
        bytes: "DATA10-11"
      - name: narrow_adjustment_width
        bytes: "DATA12-13"
      - name: default_validity
        bytes: DATA14
        values: ["00h=Default invalid", "01h=Default valid"]

  - id: setting_information
    label: "Setting Information"
    type: object
    command_bytes: "00h 85h 00h 00h 01h 00h 86h"
    query_command: "078-1. SETTING REQUEST"
    response_bytes: "20h 85h <ID1> <ID2> 20h <DATA01-32> <CKS>"
    fields:
      - name: base_model_type
        bytes: "DATA01-03"
      - name: sound_function
        bytes: DATA04
        values: ["00h=Not available", "01h=Available"]
      - name: profile_number
        bytes: DATA05
        values: ["00h=Not available", "01h=Clock", "02h=Sleep timer", "03h=Clock + Sleep timer"]

  - id: eco_mode
    label: "Eco Mode"
    type: integer
    command_bytes: "03h B0h 00h 00h 01h 07h BBh"
    query_command: "097-8. ECO MODE REQUEST"
    response_bytes: "23h B0h <ID1> <ID2> 02h 07h <DATA01> <CKS>"
    description: "Eco mode value (varies by model - see supplementary tables)"

  - id: projector_name
    label: "Projector Name"
    type: string
    command_bytes: "03h B0h 00h 00h 01h 2Ch E0h"
    query_command: "097-45. LAN PROJECTOR NAME REQUEST"
    response_bytes: "23h B0h <ID1> <ID2> 12h 2Ch <DATA01-17> <CKS>"
    description: "Projector name (NUL terminated, up to 17 bytes)"

  - id: mac_address
    label: "MAC Address"
    type: string
    command_bytes: "03h B0h 00h 00h 02h 9Ah 00h 4Fh"
    query_command: "097-155. LAN MAC ADDRESS STATUS REQUEST2"
    response_bytes: "23h B0h <ID1> <ID2> 08h 9Ah 00h <DATA01-06> <CKS>"
    description: "6-byte MAC address"

  - id: pip_pbp_status
    label: "PIP/Picture by Picture Status"
    type: object
    command_bytes: "03h B0h 00h 00h 02h C5h <DATA01> <CKS>"
    query_command: "097-198. PIP/PICTURE BY PICTURE REQUEST"
    response_bytes: "23h B0h <ID1> <ID2> 03h C5h <DATA01> <DATA02> <CKS>"
    params:
      - name: target
        description: "00h=MODE, 01h=START POSITION, 02h=SUB INPUT 1, 09h=SUB INPUT 2, 0Ah=SUB INPUT 3"

  - id: edge_blending_status
    label: "Edge Blending Status"
    type: enum
    command_bytes: "03h B0h 00h 00h 02h DFh 00h 94h"
    query_command: "097-243-1. EDGE BLENDING MODE REQUEST"
    response_bytes: "23h B0h <ID1> <ID2> 03h DFh 00h <DATA01> <CKS>"
    values: ["00h=OFF", "01h=ON"]

  - id: information_string
    label: "Information String"
    type: object
    command_bytes: "00h D0h 00h 00h 03h 00h <DATA01> 01h <CKS>"
    query_command: "084. INFORMATION STRING REQUEST"
    response_bytes: "20h D0h <ID1> <ID2> LEN <DATA01> 01h <DATA02-??> <CKS>"
    fields:
      - name: string_length
        bytes: DATA02
        description: "Label/information string length (excluding NUL characters)"
      - name: label_or_string
        bytes: "DATA03-??"
        description: "Label/information strings (NUL terminated)"
    params:
      - name: info_type
        description: "03h=Horizontal sync frequency, 04h=Vertical sync frequency"

  - id: base_model_type
    label: "Base Model Type"
    type: object
    command_bytes: "00h BFh 00h 00h 01h 00h C0h"
    query_command: "305-1. BASE MODEL TYPE REQUEST"
    response_bytes: "20h BFh <ID1> <ID2> 10h 00h <DATA01-15> <CKS>"
    fields:
      - name: base_model_type
        bytes: "DATA01-02"
      - name: model_name
        bytes: "DATA03-11"
        description: "NUL terminated"
      - name: base_model_type_alt
        bytes: "DATA12-13"

  - id: serial_number
    label: "Serial Number"
    type: string
    command_bytes: "00h BFh 00h 00h 02h 01h 06h C8h"
    query_command: "305-2. SERIAL NUMBER REQUEST"
    response_bytes: "20h BFh <ID1> <ID2> 12h 01h 06h <DATA01-16> <CKS>"
    description: "Serial number (NUL terminated, up to 16 bytes)"

  - id: basic_information
    label: "Basic Information"
    type: object
    command_bytes: "00h BFh 00h 00h 01h 02h C2h"
    query_command: "305-3. BASIC INFORMATION REQUEST"
    response_bytes: "20h BFh <ID1> <ID2> 10h 02h <DATA01-15> <CKS>"
    fields:
      - name: operation_status
        bytes: DATA01
        values: ["00h=Standby (Sleep)", "04h=Power On", "05h=Cooling", "06h=Standby (error)", "0Fh=Standby (Power saving)", "10h=Network standby"]
      - name: content_displayed
        bytes: DATA02
        values: ["00h=Video signal", "01h=No signal", "02h=Viewer", "03h=Test pattern", "04h=LAN", "05h=Test pattern (user)", "10h=Signal switching"]
      - name: signal_type_1
        bytes: DATA03
      - name: signal_type_2
        bytes: DATA04
        values: ["01h=COMPUTER", "02h=VIDEO", "03h=S-VIDEO", "04h=COMPONENT", "07h=VIEWER(1-5)", "20h=DVI-D", "21h=HDMI", "22h=DisplayPort", "23h=VIEWER(6-10)", "FFh=Not Source Input"]
      - name: display_signal_type
        bytes: DATA05
        description: "Effective only when DATA04 is 02h (VIDEO) or 03h (S-VIDEO)"
      - name: video_mute
        bytes: DATA06
        values: ["00h=Off", "01h=On"]
      - name: sound_mute
        bytes: DATA07
        values: ["00h=Off", "01h=On"]
      - name: onscreen_mute
        bytes: DATA08
        values: ["00h=Off", "01h=On"]
      - name: freeze
        bytes: DATA09
        values: ["00h=Off", "01h=On"]

Variables

# UNRESOLVED: no continuously settable parameters beyond discrete actions

Events

# UNRESOLVED: no unsolicited event/notification mechanism described in source

Macros

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

Safety

confirmation_required_for: []
interlocks: []
notes: >
  Error status (command 009) reports interlock switch status (DATA09 Bit1: 1=open).
  Error status also reports cover error, fan error, temperature error, power error.
  Power on/off commands block all other commands during execution (including cooling period).
  Some models cannot receive commands in standby mode over LAN.

Notes

  • Binary protocol: All commands and responses are hexadecimal byte frames. Frame structure: header bytes + ID1 (control ID) + ID2 (model code) + LEN + DATA fields + CKS (checksum).
  • Checksum: Sum all preceding bytes, use low-order 8 bits of result.
  • Error responses: Use prefix A0h/A1h/A2h/A3h (depending on command) with ERR1/ERR2 error codes. Common errors: 02h 0Dh = "command cannot be accepted because power is off", 02h 07h = "no signal".
  • Model-dependent values: Input terminal hex codes, eco mode values, and aspect values vary by model. Refer to the supplementary tables in the source document.
  • Standby mode: Standby mode settings for receiving commands vary by model (Normal, Active, Eco, Power-Saving, Network Standby, Sleep). See standby mode table in source.
  • Lamp usage: Updated at 1-minute intervals despite 1-second precision.
  • Lens control: Continuous drive mode (7Fh/81h) requires explicit stop command (00h).
  • Picture mute and sound mute are automatically cancelled on input switch or signal switch.
  • Authentication: UNRESOLVED — source does not state whether authentication is required.
  • Serial flow control: UNRESOLVED — RTS/CTS pins are wired but the source does not state the flow control mode.

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:52:10.350Z
last_checked_at: 2026-10-07T14:03:28.471Z

Verification Summary

verdict: verified
checked_at: 2026-10-07T14:03:28.471Z
matched_actions: 53
action_count: 53
confidence: medium
summary: "All 53 action units (28 actions, 25 query feedbacks) match the source's 53-command list with correct bytes; transport supported. (15 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "input terminal hex codes vary by model — see supplementary tables in source"
- "eco mode values vary by model — see supplementary tables in source"
- "aspect values vary by model — see supplementary tables in source"
- "RTS/CTS pins wired but flow control mode not stated"
- "source does not state whether authentication is required"
- "no continuously settable parameters beyond discrete actions"
- "no unsolicited event/notification mechanism described in source"
- "no multi-step macro sequences described in source"
- "default baud rate not stated — multiple rates supported"
- "exact input terminal codes are model-dependent and listed in supplementary tables"
- "eco mode value mapping is model-dependent"
- "aspect value mapping is model-dependent"
- "no response timeout specified"
- "no maximum command rate or throttling specified"
- "firmware version compatibility not stated"

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