Summary

The NEC NP-UM301X is an ultra-short-throw projector controllable via RS-232C serial or wired LAN (TCP). The protocol uses binary command frames with hex-encoded byte sequences, a checksum byte, and model-specific ID parameters. This spec covers power control, input switching, audio/video mute, picture and volume adjustment, lens control, shutter, freeze, eco mode, edge blending, PIP/PbP, and various status queries.

Transport

protocols:
  - serial
  - tcp
serial:
  baud_rate: [115200, 38400, 19200, 9600, 4800]
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none  # UNRESOLVED: RTS/CTS pins wired but no software flow control stated
addressing:
  port: 7142  # TCP port for LAN command interface
auth:
  type: none  # inferred: no authentication procedure described in source

Traits

traits:
  - powerable     # power on/off commands
  - routable      # input switch command
  - queryable     # extensive status request commands
  - levelable     # volume, brightness, contrast, color, hue, sharpness, lamp adjust
  - mutable       # picture mute, sound mute, onscreen mute

Actions

actions:
  - id: power_on
    label: Power On
    kind: action
    command: "02h 00h 00h 00h 00h 02h"
    response_success: "22h 00h <ID1> <ID2> 00h <CKS>"
    response_failure: "A2h 00h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params: []
    notes: No other commands accepted while powering on.

  - id: power_off
    label: Power Off
    kind: action
    command: "02h 01h 00h 00h 00h 03h"
    response_success: "22h 01h <ID1> <ID2> 00h <CKS>"
    response_failure: "A2h 01h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params: []
    notes: No other commands accepted during power-off including cooling period.

  - id: input_switch
    label: Input Switch
    kind: action
    command: "02h 03h 00h 00h 02h 01h <DATA01> <CKS>"
    response_success: "22h 03h <ID1> <ID2> 01h <DATA01> <CKS>"
    response_failure: "A2h 03h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params:
      - name: input_terminal
        type: integer
        description: "Input terminal hex code (model-dependent). Example: 06h = VIDEO. See supplementary table."
    notes: "Response DATA01: 00h = success, FFh = error (no signal switch made). Input terminal codes vary by model."

  - id: picture_mute_on
    label: Picture Mute On
    kind: action
    command: "02h 10h 00h 00h 00h 12h"
    response_success: "22h 10h <ID1> <ID2> 00h <CKS>"
    response_failure: "A2h 10h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params: []
    notes: Picture mute is cancelled by input switch or video signal change.

  - id: picture_mute_off
    label: Picture Mute Off
    kind: action
    command: "02h 11h 00h 00h 00h 13h"
    response_success: "22h 11h <ID1> <ID2> 00h <CKS>"
    response_failure: "A2h 11h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params: []

  - id: sound_mute_on
    label: Sound Mute On
    kind: action
    command: "02h 12h 00h 00h 00h 14h"
    response_success: "22h 12h <ID1> <ID2> 00h <CKS>"
    response_failure: "A2h 12h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params: []
    notes: Sound mute is cancelled by input switch, video signal change, or volume adjustment.

  - id: sound_mute_off
    label: Sound Mute Off
    kind: action
    command: "02h 13h 00h 00h 00h 15h"
    response_success: "22h 13h <ID1> <ID2> 00h <CKS>"
    response_failure: "A2h 13h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params: []

  - id: onscreen_mute_on
    label: Onscreen Mute On
    kind: action
    command: "02h 14h 00h 00h 00h 16h"
    response_success: "22h 14h <ID1> <ID2> 00h <CKS>"
    response_failure: "A2h 14h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params: []
    notes: Onscreen mute is cancelled by input switch or video signal change.

  - id: onscreen_mute_off
    label: Onscreen Mute Off
    kind: action
    command: "02h 15h 00h 00h 00h 17h"
    response_success: "22h 15h <ID1> <ID2> 00h <CKS>"
    response_failure: "A2h 15h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params: []

  - id: picture_adjust
    label: Picture Adjust
    kind: action
    command: "03h 10h 00h 00h 05h <DATA01> FFh <DATA02> <DATA03> <DATA04> <CKS>"
    response_success: "23h 10h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    response_failure: "A3h 10h <ID1> <ID2> 02h <ERR1> <ERR2> <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_lo
        type: integer
        description: "Adjustment value (low-order 8 bits)"
      - name: value_hi
        type: integer
        description: "Adjustment value (high-order 8 bits)"

  - id: volume_adjust
    label: Volume Adjust
    kind: action
    command: "03h 10h 00h 00h 05h 05h 00h <DATA01> <DATA02> <DATA03> <CKS>"
    response_success: "23h 10h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    response_failure: "A3h 10h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params:
      - name: mode
        type: integer
        description: "00h=absolute value, 01h=relative value"
      - name: value_lo
        type: integer
        description: "Adjustment value (low-order 8 bits)"
      - name: value_hi
        type: integer
        description: "Adjustment value (high-order 8 bits)"

  - id: aspect_adjust
    label: Aspect Adjust
    kind: action
    command: "03h 10h 00h 00h 05h 18h 00h 00h <DATA01> 00h <CKS>"
    response_success: "23h 10h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    response_failure: "A3h 10h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params:
      - name: aspect
        type: integer
        description: "Aspect value code (model-dependent, see supplementary table)"

  - id: lamp_adjust
    label: Lamp Adjust / Light Adjust
    kind: action
    command: "03h 10h 00h 00h 05h 96h FFh <DATA03> <DATA04> <DATA05> <CKS>"
    response_success: "23h 10h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    response_failure: "A3h 10h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params:
      - name: mode
        type: integer
        description: "00h=absolute value, 01h=relative value"
      - name: value_lo
        type: integer
        description: "Adjustment value (low-order 8 bits)"
      - name: value_hi
        type: integer
        description: "Adjustment value (high-order 8 bits)"

  - id: remote_key_code
    label: Remote Key Code
    kind: action
    command: "02h 0Fh 00h 00h 02h <DATA01> <DATA02> <CKS>"
    response_success: "22h 0Fh <ID1> <ID2> 01h <DATA01> <CKS>"
    response_failure: "A2h 0Fh <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params:
      - name: key_code_lo
        type: integer
        description: "Key code low byte (WORD type). Examples: 02h=POWER ON, 03h=POWER OFF, 05h=AUTO, 06h=MENU, 13h=MUTE, 29h=PICTURE, 84h=VOLUME UP, 85h=VOLUME DOWN, 8Ah=FREEZE, A3h=ASPECT, D7h=SOURCE, EEh=LAMP MODE/ECO"
      - name: key_code_hi
        type: integer
        description: "Key code high byte (typically 00h)"

  - id: shutter_close
    label: Shutter Close
    kind: action
    command: "02h 16h 00h 00h 00h 18h"
    response_success: "22h 16h <ID1> <ID2> 00h <CKS>"
    response_failure: "A2h 16h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params: []

  - id: shutter_open
    label: Shutter Open
    kind: action
    command: "02h 17h 00h 00h 00h 19h"
    response_success: "22h 17h <ID1> <ID2> 00h <CKS>"
    response_failure: "A2h 17h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params: []

  - id: lens_control
    label: Lens Control
    kind: action
    command: "02h 18h 00h 00h 02h <DATA01> <DATA02> <CKS>"
    response_success: "22h 18h <ID1> <ID2> 01h <DATA01> <CKS>"
    response_failure: "A2h 18h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params:
      - name: target
        type: integer
        description: "00h=Zoom, 01h=Focus, 02h=Lens Shift H, 03h=Lens Shift V, 06h=Periphery Focus"
      - name: motion
        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"
    notes: Send 00h to stop continuous drive. While lens is being driven, same command can be reissued without prior stop.

  - id: lens_control_2
    label: Lens Control 2 (Absolute/Relative)
    kind: action
    command: "02h 1Dh 00h 00h 04h <DATA01> <DATA02> <DATA03> <DATA04> <CKS>"
    response_success: "22h 1Dh <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    response_failure: "A2h 1Dh <ID1> <ID2> 02h <ERR1> <ERR2> <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 value, 02h=relative value"
      - name: value_lo
        type: integer
        description: "Adjustment value (low-order 8 bits)"
      - name: value_hi
        type: integer
        description: "Adjustment value (high-order 8 bits)"

  - id: lens_memory_control
    label: Lens Memory Control
    kind: action
    command: "02h 1Eh 00h 00h 01h <DATA01> <CKS>"
    response_success: "22h 1Eh <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    response_failure: "A2h 1Eh <ID1> <ID2> 02h <ERR1> <ERR2> <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: "02h 1Fh 00h 00h 01h <DATA01> <CKS>"
    response_success: "22h 1Fh <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    response_failure: "A2h 1Fh <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params:
      - name: operation
        type: integer
        description: "00h=MOVE, 01h=STORE, 02h=RESET"
    notes: Controls the profile number specified by lens_profile_set.

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

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

  - id: eco_mode_set
    label: Eco Mode Set
    kind: action
    command: "03h B1h 00h 00h 02h 07h <DATA01> <CKS>"
    response_success: "23h B1h <ID1> <ID2> 02h 07h <DATA01> <CKS>"
    response_failure: "A3h B1h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params:
      - name: eco_mode
        type: integer
        description: "Eco mode value code (model-dependent, see supplementary table)"
    notes: Depending on projector, this sets Light mode or Lamp mode.

  - id: projector_name_set
    label: Projector Name Set
    kind: action
    command: "03h B1h 00h 00h 12h 2Ch <DATA01>-<DATA16> 00h <CKS>"
    response_success: "23h B1h <ID1> <ID2> 02h 2Ch <DATA01> <CKS>"
    response_failure: "A3h B1h <ID1> <ID2> 02h <ERR1> <ERR2> <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: "03h B1h 00h 00h 03h C5h <DATA01> <DATA02> <CKS>"
    response_success: "23h B1h <ID1> <ID2> 03h C5h <DATA01> <DATA02> <CKS>"
    response_failure: "A3h B1h <ID1> <ID2> 02h <ERR1> <ERR2> <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=TOP-LEFT, 01h=TOP-RIGHT, 02h=BOTTOM-LEFT, 03h=BOTTOM-RIGHT. Sub input values: model-dependent."

  - id: edge_blending_set
    label: Edge Blending Mode Set
    kind: action
    command: "03h B1h 00h 00h 03h DFh 00h <DATA01> <CKS>"
    response_success: "23h B1h <ID1> <ID2> 03h DFh 00h <DATA01> <CKS>"
    response_failure: "A3h B1h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params:
      - name: enabled
        type: integer
        description: "00h=OFF, 01h=ON"

  - id: audio_select_set
    label: Audio Select Set
    kind: action
    command: "03h C9h 00h 00h 03h 09h <DATA01> <DATA02> <CKS>"
    response_success: "23h C9h <ID1> <ID2> 03h 09h <DATA01> <DATA02> <CKS>"
    response_failure: "A3h C9h <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
    params:
      - name: input_terminal
        type: integer
        description: "Input terminal code (model-dependent)"
      - name: audio_source
        type: integer
        description: "00h=follows specified terminal, 01h=BNC, 02h=COMPUTER"

Feedbacks

feedbacks:
  - id: error_status
    label: Error Status
    command: "00h 88h 00h 00h 00h 88h"
    response: "20h 88h <ID1> <ID2> 0Ch <DATA01>-<DATA12> <CKS>"
    type: bitmask
    description: "12 bytes of error flags. Bit=0 normal, Bit=1 error. Includes: cover error, fan error, temperature error, power error, lamp errors, formatter error, mirror cover error, interlock switch, system errors."

  - id: running_status
    label: Running Status
    command: "00h 85h 00h 00h 01h 01h 87h"
    response: "20h 85h <ID1> <ID2> 10h <DATA01>-<DATA16> <CKS>"
    type: composite
    fields:
      power_status:
        description: "DATA03: 00h=Standby, 01h=Power On, FFh=Not supported"
      cooling: 
        description: "DATA04: 00h=Not executing, 01h=During execution"
      power_process:
        description: "DATA05: 00h=Not executing, 01h=During execution"
      operation_status:
        description: "DATA06: 00h=Standby(Sleep), 04h=Power On, 05h=Cooling, 06h=Standby(error), 0Fh=Standby(Power saving), 10h=Network standby"

  - id: input_status
    label: Input Status
    command: "00h 85h 00h 00h 01h 02h 88h"
    response: "20h 85h <ID1> <ID2> 10h <DATA01>-<DATA16> <CKS>"
    type: composite
    fields:
      signal_switch_process:
        description: "DATA01: 00h=Not executing, 01h=During execution"
      signal_list_number:
        description: "DATA02: 00h-C7h = signal list number minus 1, FFh=Not supported"
      signal_type_1:
        description: "DATA03: 01h-05h"
      signal_type_2:
        description: "DATA04: 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"
      content_displayed:
        description: "DATA09: 00h=Video signal, 01h=No signal, 02h=Viewer, 03h=Test pattern, 04h=LAN"

  - id: mute_status
    label: Mute Status
    command: "00h 85h 00h 00h 01h 03h 89h"
    response: "20h 85h <ID1> <ID2> 10h <DATA01>-<DATA16> <CKS>"
    type: composite
    fields:
      picture_mute:
        description: "DATA01: 00h=Off, 01h=On, FFh=Not supported"
      sound_mute:
        description: "DATA02: 00h=Off, 01h=On, FFh=Not supported"
      onscreen_mute:
        description: "DATA03: 00h=Off, 01h=On, FFh=Not supported"
      forced_onscreen_mute:
        description: "DATA04: 00h=Off, 01h=On, FFh=Not supported"
      onscreen_display:
        description: "DATA05: 00h=Not displayed, 01h=Displayed"

  - id: model_name
    label: Model Name
    command: "00h 85h 00h 00h 01h 04h 8Ah"
    response: "20h 85h <ID1> <ID2> 20h <DATA01>-<DATA32> <CKS>"
    type: string
    description: "Model name (NUL-terminated string, up to 32 bytes)"

  - id: cover_status
    label: Cover Status
    command: "00h 85h 00h 00h 01h 05h 8Bh"
    response: "20h 85h <ID1> <ID2> 01h <DATA01> <CKS>"
    type: enum
    values:
      - "00h: Normal (cover opened)"
      - "01h: Cover closed"

  - id: projector_info
    label: Projector Information
    command: "03h 8Ah 00h 00h 00h 8Dh"
    response: "23h 8Ah <ID1> <ID2> 62h <DATA01>-<DATA98> <CKS>"
    type: composite
    fields:
      projector_name:
        description: "DATA01-49: Projector name (NUL-terminated)"
      lamp_usage_seconds:
        description: "DATA83-86: Lamp usage time in seconds (updated at 1-min intervals)"
      filter_usage_seconds:
        description: "DATA87-90: Filter usage time in seconds"

  - id: filter_usage_info
    label: Filter Usage Information
    command: "03h 95h 00h 00h 00h 98h"
    response: "23h 95h <ID1> <ID2> 08h <DATA01>-<DATA08> <CKS>"
    type: composite
    fields:
      filter_usage_seconds:
        description: "DATA01-04: Filter usage time in seconds"
      filter_alarm_seconds:
        description: "DATA05-08: Filter alarm start time in seconds (-1 if undefined)"

  - id: lamp_info
    label: Lamp Information
    command: "03h 96h 00h 00h 02h <DATA01> <DATA02> <CKS>"
    response: "23h 96h <ID1> <ID2> 06h <DATA01>-<DATA06> <CKS>"
    type: composite
    params:
      - name: lamp_target
        description: "00h=Lamp 1, 01h=Lamp 2"
      - name: content
        description: "01h=usage time (seconds), 04h=remaining life (%)"
    fields:
      lamp_usage_seconds:
        description: "DATA03-06 when content=01h"
      lamp_remaining_life_pct:
        description: "DATA03-06 when content=04h (negative if replacement deadline exceeded)"

  - id: carbon_savings
    label: Carbon Savings Information
    command: "03h 9Ah 00h 00h 01h <DATA01> <CKS>"
    response: "23h 9Ah <ID1> <ID2> 09h <DATA01>-<DATA09> <CKS>"
    type: composite
    params:
      - name: target
        description: "00h=Total Carbon Savings, 01h=Carbon Savings during operation"
    fields:
      savings_kg:
        description: "DATA02-05: Carbon Savings in kg (max 99999)"
      savings_mg:
        description: "DATA06-09: Carbon Savings in mg (max 999999)"

  - id: lens_position
    label: Lens Control Position
    command: "02h 1Ch 00h 00h 02h <DATA01> 00h <CKS>"
    response: "22h 1Ch <ID1> <ID2> 08h <DATA01> 00h <DATA02>-<DATA07> <CKS>"
    type: composite
    params:
      - name: target
        description: "00h=Zoom, 01h=Focus, 02h=Lens Shift H, 03h=Lens Shift V"
    fields:
      upper_limit:
        description: "DATA02-03: Upper limit of adjustment range"
      lower_limit:
        description: "DATA04-05: Lower limit of adjustment range"
      current_value:
        description: "DATA06-07: Current value"

  - id: lens_info
    label: Lens Information
    command: "02h 22h 00h 00h 01h 00h 25h"
    response: "22h 22h <ID1> <ID2> 02h 00h <DATA01> <CKS>"
    type: bitmask
    description: "DATA01 bits: 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
    command: "02h 20h 00h 00h 01h <DATA01> <CKS>"
    response: "22h 20h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    type: composite
    params:
      - name: target
        description: "00h=LOAD BY SIGNAL, 01h=FORCED MUTE"
    fields:
      setting:
        description: "DATA02: 00h=OFF, 01h=ON"

  - id: lens_profile
    label: Lens Profile
    command: "02h 28h 00h 00h 00h 2Ah"
    response: "22h 28h <ID1> <ID2> 02h <DATA01> <DATA02> <CKS>"
    type: enum
    fields:
      profile:
        description: "DATA01: 00h=Profile 1, 01h=Profile 2"

  - id: gain_parameter
    label: Gain Parameter
    command: "03h 05h 00h 00h 03h <DATA01> 00h 00h <CKS>"
    response: "23h 05h <ID1> <ID2> 10h <DATA01>-<DATA16> <CKS>"
    type: composite
    params:
      - name: target
        description: "00h=Brightness, 01h=Contrast, 02h=Color, 03h=Hue, 04h=Sharpness, 05h=Volume, 96h=Lamp/Light Adjust"
    fields:
      status:
        description: "DATA01: 00h=Display not possible, 01h=Adjustment not possible, 02h=Adjustment possible, FFh=Gain does not exist"
      upper_limit:
        description: "DATA02-03"
      lower_limit:
        description: "DATA04-05"
      default_value:
        description: "DATA06-07"
      current_value:
        description: "DATA08-09"

  - id: setting_info
    label: Setting Information
    command: "00h 85h 00h 00h 01h 00h 86h"
    response: "20h 85h <ID1> <ID2> 20h <DATA01>-<DATA32> <CKS>"
    type: composite
    fields:
      base_model_type:
        description: "DATA01-03"
      sound_function:
        description: "DATA04: 00h=Not available, 01h=Available"
      profile_number:
        description: "DATA05: 00h=Not available, 01h=Clock, 02h=Sleep timer, 03h=Both"

  - id: eco_mode
    label: Eco Mode
    command: "03h B0h 00h 00h 01h 07h BBh"
    response: "23h B0h <ID1> <ID2> 02h 07h <DATA01> <CKS>"
    type: integer
    description: "Returns current eco mode value (model-dependent). May reflect Light mode or Lamp mode."

  - id: projector_name
    label: LAN Projector Name
    command: "03h B0h 00h 00h 01h 2Ch E0h"
    response: "23h B0h <ID1> <ID2> 12h 2Ch <DATA01>-<DATA17> <CKS>"
    type: string
    description: "Projector name (NUL-terminated, up to 17 bytes)"

  - id: mac_address
    label: MAC Address
    command: "03h B0h 00h 00h 02h 9Ah 00h 4Fh"
    response: "23h B0h <ID1> <ID2> 08h 9Ah 00h <DATA01>-<DATA06> <CKS>"
    type: string
    description: "6-byte MAC address"

  - id: pip_pbp_status
    label: PIP/Picture by Picture Status
    command: "03h B0h 00h 00h 02h C5h <DATA01> <CKS>"
    response: "23h B0h <ID1> <ID2> 03h C5h <DATA01> <DATA02> <CKS>"
    type: composite
    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 Mode
    command: "03h B0h 00h 00h 02h DFh 00h 94h"
    response: "23h B0h <ID1> <ID2> 03h DFh 00h <DATA01> <CKS>"
    type: enum
    values:
      - "00h: OFF"
      - "01h: ON"

  - id: info_string
    label: Information String
    command: "00h D0h 00h 00h 03h 00h <DATA01> 01h <CKS>"
    response: "20h D0h <ID1> <ID2> LEN <DATA01> 01h <DATA02>-<DATA?? <CKS>"
    type: string
    params:
      - name: info_type
        description: "03h=Horizontal sync frequency, 04h=Vertical sync frequency"

  - id: base_model_type
    label: Base Model Type
    command: "00h BFh 00h 00h 01h 00h C0h"
    response: "20h BFh <ID1> <ID2> 10h 00h <DATA01>-<DATA15> <CKS>"
    type: composite
    fields:
      base_model_type:
        description: "DATA01-02 and DATA12-13"
      model_name:
        description: "DATA03-11: Model name (NUL-terminated)"

  - id: serial_number
    label: Serial Number
    command: "00h BFh 00h 00h 02h 01h 06h C8h"
    response: "20h BFh <ID1> <ID2> 12h 01h 06h <DATA01>-<DATA16> <CKS>"
    type: string
    description: "Serial number (NUL-terminated, up to 16 bytes)"

  - id: basic_info
    label: Basic Information
    command: "00h BFh 00h 00h 01h 02h C2h"
    response: "20h BFh <ID1> <ID2> 10h 02h <DATA01>-<DATA15> <CKS>"
    type: composite
    fields:
      operation_status:
        description: "DATA01: 00h=Standby(Sleep), 04h=Power On, 05h=Cooling, 06h=Standby(error), 0Fh=Standby(Power saving), 10h=Network standby"
      content_displayed:
        description: "DATA02: 00h=Video signal, 01h=No signal, 02h=Viewer, 03h=Test pattern, 04h=LAN, 05h=Test pattern(user), 10h=Signal switching"
      signal_type_2:
        description: "DATA04: 01h=COMPUTER, 02h=VIDEO, 03h=S-VIDEO, 04h=COMPONENT, 07h=VIEWER(1-5), 20h=DVI-D, 21h=HDMI, 22h=DisplayPort"
      video_mute:
        description: "DATA06: 00h=Off, 01h=On"
      sound_mute:
        description: "DATA07: 00h=Off, 01h=On"
      onscreen_mute:
        description: "DATA08: 00h=Off, 01h=On"
      freeze:
        description: "DATA09: 00h=Off, 01h=On"

Variables

variables:
  - id: brightness
    label: Brightness
    type: integer
    read_command: gain_parameter (target=00h)
    write_command: picture_adjust (target=00h)

  - id: contrast
    label: Contrast
    type: integer
    read_command: gain_parameter (target=01h)
    write_command: picture_adjust (target=01h)

  - id: color
    label: Color
    type: integer
    read_command: gain_parameter (target=02h)
    write_command: picture_adjust (target=02h)

  - id: hue
    label: Hue
    type: integer
    read_command: gain_parameter (target=03h)
    write_command: picture_adjust (target=03h)

  - id: sharpness
    label: Sharpness
    type: integer
    read_command: gain_parameter (target=04h)
    write_command: picture_adjust (target=04h)

  - id: volume
    label: Volume
    type: integer
    read_command: gain_parameter (target=05h)
    write_command: volume_adjust

  - id: lamp_adjust
    label: Lamp/Light Adjust
    type: integer
    read_command: gain_parameter (target=96h)
    write_command: lamp_adjust

Events

# UNRESOLVED: no unsolicited event/notification protocol described in source.
# The protocol appears to be strictly request-response.

Macros

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

Safety

confirmation_required_for: []
interlocks: []
notes: >
  Error status query (command 009) returns bitmask covering: cover error, fan error,
  temperature error (bi-metallic strip and sensor), power error, lamp off/replacement
  moratorium/usage exceeded/data error/not present, formatter error, FPGA error,
  mirror cover error, ballast communication error, iris calibration error, lens not
  installed properly, foreign matter sensor error, interlock switch open, system errors.
  The interlock switch status bit is readable but no automated interlock behavior is
  described in the command reference.

Notes

  • Binary protocol: All commands and responses are binary hex byte sequences, not ASCII text. Each frame includes a checksum byte (low-order byte of sum of all preceding bytes).
  • Model-dependent parameters: Input terminal codes, aspect values, and eco mode values vary by model. The NP-UM301X is not explicitly listed in the supplementary lookup tables; these values must be confirmed from the device or a model-specific supplement.
  • Parameters ID1 and ID2: Control ID and model code must be set correctly in commands. ID1 is the projector's configured control ID; ID2 varies by model.
  • Cooling lockout: During power-on and power-off (including cooling), no other commands are accepted.
  • Standby mode: Some models cannot receive LAN commands in standby mode. Standby mode command-reception capability is model-dependent.
  • Lens continuous drive: When sending continuous drive commands (7Fh/81h), a subsequent stop command (00h) must be sent to halt motion.
  • Usage time resolution: Lamp and filter usage times are stored in seconds but updated at 1-minute intervals.

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:43.328Z
last_checked_at: 2026-06-02T22:11:12.058Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T22:11:12.058Z
matched_actions: 28
action_count: 28
confidence: medium
summary: "All 28 spec actions traced to source (dip-safe re-verify). (11 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "NP-UM301X is not explicitly listed in the supplementary tables for input terminal codes, aspect values, or eco mode values. Those per-model lookup tables cover other NEC families. Input terminal hex codes should be confirmed from the projector on-screen menu or a model-specific supplement."
- "standby mode command-reception capability not stated for NP-UM301X specifically"
- "RTS/CTS pins wired but no software flow control stated"
- "no unsolicited event/notification protocol described in source."
- "no multi-step macro sequences described in source."
- "exact input terminal hex codes for NP-UM301X not found in supplementary tables"
- "exact eco mode value codes for NP-UM301X not found in supplementary tables"
- "exact aspect value codes for NP-UM301X not found in supplementary tables"
- "ID2 model code value for NP-UM301X not stated"
- "default baud rate not stated (multiple supported: 115200/38400/19200/9600/4800)"
- "pin 7 (RTS) and pin 8 (CTS) are cross-wired but no hardware flow control behavior described"

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