Summary
Projector control spec for the Sharp/NEC PN-HC861, covering RS-232C serial and wired/wireless LAN (TCP) control. Commands are binary frames expressed in hexadecimal; each command frame ends with a checksum byte computed as the low-order byte of the sum of all preceding bytes. The device exposes power, input selection, mute, picture/volume/lens adjustment, lens memory, status queries, and PIP/edge-blending operations.
Transport
# Both serial and LAN are explicitly documented in the source (§1.1, §1.2).
protocols:
- tcp
- serial
addressing:
port: 7142 # source §1.2 "Port number": TCP 7142
serial:
baud_rate: 9600 # one of 115200/38400/19200/9600/4800 bps stated; default not specified
data_bits: 8
parity: none
stop_bits: 1
flow_control: null # UNRESOLVED: flow control not stated (source lists "Full duplex" communication mode only)
auth:
type: none # inferred: no auth procedure in source
Traits
traits:
- powerable # inferred: POWER ON / POWER OFF commands (015, 016)
- queryable # inferred: extensive request commands (009, 037, 060-1, 078-*, 097-*, 305-*)
- levelable # inferred: PICTURE ADJUST, VOLUME ADJUST, LAMP ADJUST (030-1, 030-2, 030-15)
- routable # inferred: INPUT SW CHANGE (018), AUDIO SELECT SET (319-10)
Actions
# Frame conventions (source §2.1-§2.3):
# - Commands are shown verbatim as in source, in hexadecimal, space-separated.
# - The LAST byte of each frame is the checksum (CKS) = (sum of all preceding
# bytes) mod 256. For parameterized commands, the listed trailing byte is the
# checksum of the shown literal; recompute when substituting <DATA> values.
# - <ID1> = Control ID, <ID2> = Model code - appear in responses, not in the
# command frames listed here. Read ID1/ID2 from the device.
# - Response success frame: "2xh <cmd> <ID1> <ID2> <LEN> <DATA...> <CKS>"
# (2xh = 20h/21h/22h/23h depending on command class).
# Error frame: "Axh <cmd> <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>".
# - kind: action = sets/executes a discrete state
# kind: query = requests data; response carries the requested payload
# kind: set = sets a named parameter value
# --- 009. ERROR STATUS REQUEST ---
- id: error_status_request
label: Error Status Request
kind: query
command: "00h 88h 00h 00h 00h 88h"
params: []
# --- 015. POWER ON ---
- id: power_on
label: Power On
kind: action
command: "02h 00h 00h 00h 00h 02h"
params: []
# --- 016. POWER OFF ---
- id: power_off
label: Power Off
kind: action
command: "02h 01h 00h 00h 00h 03h"
params: []
# --- 018. INPUT SW CHANGE ---
- id: input_switch_change
label: Input Switch Change
kind: action
command: "02h 03h 00h 00h 02h 01h {input} {checksum}"
params:
- name: input
type: string
description: >
Input terminal value (DATA01) as a hex byte. Source example:
06h = Video port. Full enum lives in appendix "Supplementary
Information by Command", which is not present in the refined source.
# UNRESOLVED: complete input terminal enum not in source body
- name: checksum
type: string
description: CKS = (02h+03h+00h+00h+02h+01h+{input}) mod 256, as hex byte
# --- 020. PICTURE MUTE ON ---
- id: picture_mute_on
label: Picture Mute On
kind: action
command: "02h 10h 00h 00h 00h 12h"
params: []
# --- 021. PICTURE MUTE OFF ---
- id: picture_mute_off
label: Picture Mute Off
kind: action
command: "02h 11h 00h 00h 00h 13h"
params: []
# --- 022. SOUND MUTE ON ---
- id: sound_mute_on
label: Sound Mute On
kind: action
command: "02h 12h 00h 00h 00h 14h"
params: []
# --- 023. SOUND MUTE OFF ---
- id: sound_mute_off
label: Sound Mute Off
kind: action
command: "02h 13h 00h 00h 00h 15h"
params: []
# --- 024. ONSCREEN MUTE ON ---
- id: onscreen_mute_on
label: Onscreen Mute On
kind: action
command: "02h 14h 00h 00h 00h 16h"
params: []
# --- 025. ONSCREEN MUTE OFF ---
- id: onscreen_mute_off
label: Onscreen Mute Off
kind: action
command: "02h 15h 00h 00h 00h 17h"
params: []
# --- 030-1. PICTURE ADJUST ---
- id: picture_adjust
label: Picture Adjust
kind: set
command: "03h 10h 00h 00h 05h {target} FFh {mode} {value_lo} {value_hi} {checksum}"
params:
- name: target
type: string
description: >
DATA01 adjustment target (hex byte):
00h=Brightness, 01h=Contrast, 02h=Color, 03h=Hue, 04h=Sharpness
- name: mode
type: string
description: "DATA02 adjustment mode: 00h=absolute, 01h=relative"
- name: value_lo
type: string
description: DATA03 adjustment value (low-order 8 bits, hex byte)
- name: value_hi
type: string
description: DATA04 adjustment value (high-order 8 bits, hex byte)
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 030-2. VOLUME ADJUST ---
- id: volume_adjust
label: Volume Adjust
kind: set
command: "03h 10h 00h 00h 05h 05h 00h {mode} {value_lo} {value_hi} {checksum}"
params:
- name: mode
type: string
description: "DATA01 adjustment mode: 00h=absolute, 01h=relative"
- name: value_lo
type: string
description: DATA02 adjustment value (low-order 8 bits, hex byte)
- name: value_hi
type: string
description: DATA03 adjustment value (high-order 8 bits, hex byte)
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 030-12. ASPECT ADJUST ---
- id: aspect_adjust
label: Aspect Adjust
kind: set
command: "03h 10h 00h 00h 05h 18h 00h 00h {aspect} 00h {checksum}"
params:
- name: aspect
type: string
description: >
DATA01 aspect value (hex byte). Enum lives in appendix
"Supplementary Information by Command", not present in refined source.
# UNRESOLVED: aspect value enum not in source body
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 030-15. OTHER ADJUST (LAMP / LIGHT ADJUST) ---
- id: lamp_light_adjust
label: Lamp/Light Adjust
kind: set
command: "03h 10h 00h 00h 05h 96h FFh {mode} {value_lo} {value_hi} {checksum}"
params:
- name: mode
type: string
description: "DATA03 adjustment mode: 00h=absolute, 01h=relative"
- name: value_lo
type: string
description: DATA04 adjustment value (low-order 8 bits, hex byte)
- name: value_hi
type: string
description: DATA05 adjustment value (high-order 8 bits, hex byte)
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 037. INFORMATION REQUEST ---
- id: information_request
label: Information Request
kind: query
command: "03h 8Ah 00h 00h 00h 8Dh"
params: []
# --- 037-3. FILTER USAGE INFORMATION REQUEST ---
- id: filter_usage_information_request
label: Filter Usage Information Request
kind: query
command: "03h 95h 00h 00h 00h 98h"
params: []
# --- 037-4. LAMP INFORMATION REQUEST 3 ---
- id: lamp_information_request
label: Lamp Information Request 3
kind: query
command: "03h 96h 00h 00h 02h {lamp} {content} {checksum}"
params:
- name: lamp
type: string
description: "DATA01: 00h=Lamp 1, 01h=Lamp 2 (two-lamp models only)"
- name: content
type: string
description: "DATA02: 01h=Lamp usage time (seconds), 04h=Lamp remaining life (%)"
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 037-6. CARBON SAVINGS INFORMATION REQUEST ---
- id: carbon_savings_information_request
label: Carbon Savings Information Request
kind: query
command: "03h 9Ah 00h 00h 01h {type} {checksum}"
params:
- name: type
type: string
description: "DATA01: 00h=Total Carbon Savings, 01h=Carbon Savings during operation"
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 050. REMOTE KEY CODE ---
- id: remote_key_code
label: Remote Key Code
kind: action
command: "02h 0Fh 00h 00h 02h {key_lo} {key_hi} {checksum}"
params:
- name: key_lo
type: string
description: >
DATA01 (low byte of WORD key code). Source key code list (DATA01 / DATA02 / name):
02h/00h POWER ON, 03h/00h POWER OFF, 05h/00h AUTO, 06h/00h MENU,
07h/00h UP, 08h/00h DOWN, 09h/00h RIGHT, 0Ah/00h LEFT, 0Bh/00h ENTER,
0Ch/00h EXIT, 0Dh/00h HELP, 0Fh/00h MAGNIFY UP, 10h/00h MAGNIFY DOWN,
13h/00h MUTE, 29h/00h PICTURE, 4Bh/00h COMPUTER1, 4Ch/00h COMPUTER2,
4Fh/00h VIDEO1, 51h/00h S-VIDEO1, 84h/00h VOLUME UP, 85h/00h VOLUME DOWN,
8Ah/00h FREEZE, A3h/00h ASPECT, D7h/00h SOURCE, EEh/00h LAMP MODE/ECO
- name: key_hi
type: string
description: "DATA02 (high byte of WORD key code). All listed codes use 00h."
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 051. SHUTTER CLOSE ---
- id: shutter_close
label: Shutter Close
kind: action
command: "02h 16h 00h 00h 00h 18h"
params: []
# --- 052. SHUTTER OPEN ---
- id: shutter_open
label: Shutter Open
kind: action
command: "02h 17h 00h 00h 00h 19h"
params: []
# --- 053. LENS CONTROL ---
- id: lens_control
label: Lens Control
kind: action
command: "02h 18h 00h 00h 02h {target} {content} {checksum}"
params:
- name: target
type: string
description: >
DATA01 lens target (hex byte). Source shows 06h=Periphery Focus; full
target list (Zoom/Focus/Lens Shift H/V) is truncated in refined source.
# UNRESOLVED: complete lens target enum not fully visible in source body
- name: content
type: string
description: >
DATA02 action (hex byte):
00h=Stop, 01h=Drive +1.0s, 02h=Drive +0.5s, 03h=Drive +0.25s,
7Fh=Drive plus (continuous, stop with 00h), 81h=Drive minus (continuous),
FDh=Drive -0.25s, FEh=Drive -0.5s, FFh=Drive -1.0s
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 053-1. LENS CONTROL REQUEST ---
- id: lens_control_request
label: Lens Control Request
kind: query
command: "02h 1Ch 00h 00h 02h {target} 00h {checksum}"
params:
- name: target
type: string
description: DATA01 lens target (hex byte) - see lens_control.target note
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 053-2. LENS CONTROL 2 ---
- id: lens_control_2
label: Lens Control 2
kind: set
command: "02h 1Dh 00h 00h 04h {target} {mode} {value_lo} {value_hi} {checksum}"
params:
- name: target
type: string
description: "DATA01 lens target (hex byte); FFh=Stop (mode/value ignored)"
- name: mode
type: string
description: "DATA02 adjustment mode: 00h=absolute, 02h=relative"
- name: value_lo
type: string
description: DATA03 adjustment value (low-order 8 bits, hex byte)
- name: value_hi
type: string
description: DATA04 adjustment value (high-order 8 bits, hex byte)
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 053-3. LENS MEMORY CONTROL ---
- id: lens_memory_control
label: Lens Memory Control
kind: action
command: "02h 1Eh 00h 00h 01h {operation} {checksum}"
params:
- name: operation
type: string
description: "DATA01: 00h=MOVE, 01h=STORE, 02h=RESET"
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 053-4. REFERENCE LENS MEMORY CONTROL ---
- id: reference_lens_memory_control
label: Reference Lens Memory Control
kind: action
command: "02h 1Fh 00h 00h 01h {operation} {checksum}"
params:
- name: operation
type: string
description: "DATA01: 00h=MOVE, 01h=STORE, 02h=RESET"
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 053-5. LENS MEMORY OPTION REQUEST ---
- id: lens_memory_option_request
label: Lens Memory Option Request
kind: query
command: "02h 20h 00h 00h 01h {option} {checksum}"
params:
- name: option
type: string
description: "DATA01: 00h=LOAD BY SIGNAL, 01h=FORCED MUTE"
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 053-6. LENS MEMORY OPTION SET ---
- id: lens_memory_option_set
label: Lens Memory Option Set
kind: set
command: "02h 21h 00h 00h 02h {option} {value} {checksum}"
params:
- name: option
type: string
description: "DATA01: 00h=LOAD BY SIGNAL, 01h=FORCED MUTE"
- name: value
type: string
description: "DATA02: 00h=OFF, 01h=ON"
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 053-7. LENS INFORMATION REQUEST ---
- id: lens_information_request
label: Lens Information Request
kind: query
command: "02h 22h 00h 00h 01h 00h 25h"
params: []
# --- 053-10. LENS PROFILE SET ---
- id: lens_profile_set
label: Lens Profile Set
kind: set
command: "02h 27h 00h 00h 01h {profile} {checksum}"
params:
- name: profile
type: string
description: "DATA01: 00h=Profile 1, 01h=Profile 2"
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 053-11. LENS PROFILE REQUEST ---
- id: lens_profile_request
label: Lens Profile Request
kind: query
command: "02h 28h 00h 00h 00h 2Ah"
params: []
# --- 060-1. GAIN PARAMETER REQUEST 3 ---
- id: gain_parameter_request_3
label: Gain Parameter Request 3
kind: query
command: "03h 05h 00h 00h 03h {name} 00h 00h {checksum}"
params:
- name: name
type: string
description: >
DATA01 adjusted-value name (hex byte):
00h=PICTURE/BRIGHTNESS, 01h=PICTURE/CONTRAST, 02h=PICTURE/COLOR,
03h=PICTURE/HUE, 04h=PICTURE/SHARPNESS, 05h=VOLUME, 96h=LAMP/LIGHT ADJUST
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 078-1. SETTING REQUEST ---
- id: setting_request
label: Setting Request
kind: query
command: "00h 85h 00h 00h 01h 00h 86h"
params: []
# --- 078-2. RUNNING STATUS REQUEST ---
- id: running_status_request
label: Running Status Request
kind: query
command: "00h 85h 00h 00h 01h 01h 87h"
params: []
# --- 078-3. INPUT STATUS REQUEST ---
- id: input_status_request
label: Input Status Request
kind: query
command: "00h 85h 00h 00h 01h 02h 88h"
params: []
# --- 078-4. MUTE STATUS REQUEST ---
- id: mute_status_request
label: Mute Status Request
kind: query
command: "00h 85h 00h 00h 01h 03h 89h"
params: []
# --- 078-5. MODEL NAME REQUEST ---
- id: model_name_request
label: Model Name Request
kind: query
command: "00h 85h 00h 00h 01h 04h 8Ah"
params: []
# --- 078-6. COVER STATUS REQUEST ---
- id: cover_status_request
label: Cover Status Request
kind: query
command: "00h 85h 00h 00h 01h 05h 8Bh"
params: []
# --- 079. FREEZE CONTROL ---
- id: freeze_control
label: Freeze Control
kind: action
command: "01h 98h 00h 00h 01h {state} {checksum}"
params:
- name: state
type: string
description: "DATA01: 01h=Freeze On, 02h=Freeze Off"
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 084. INFORMATION STRING REQUEST ---
- id: information_string_request
label: Information String Request
kind: query
command: "00h D0h 00h 00h 03h 00h {type} 01h {checksum}"
params:
- name: type
type: string
description: "DATA01: 03h=Horizontal sync frequency, 04h=Vertical sync frequency"
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 097-8. ECO MODE REQUEST ---
- id: eco_mode_request
label: Eco Mode Request
kind: query
command: "03h B0h 00h 00h 01h 07h BBh"
params: []
# --- 097-45. LAN PROJECTOR NAME REQUEST ---
- id: lan_projector_name_request
label: LAN Projector Name Request
kind: query
command: "03h B0h 00h 00h 01h 2Ch E0h"
params: []
# --- 097-155. LAN MAC ADDRESS STATUS REQUEST 2 ---
- id: lan_mac_address_request_2
label: LAN MAC Address Status Request 2
kind: query
command: "03h B0h 00h 00h 02h 9Ah 00h 4Fh"
params: []
# --- 097-198. PIP / PICTURE BY PICTURE REQUEST ---
- id: pip_pbp_request
label: PIP/Picture by Picture Request
kind: query
command: "03h B0h 00h 00h 02h C5h {item} {checksum}"
params:
- name: item
type: string
description: >
DATA01: 00h=MODE, 01h=START POSITION, 02h=SUB INPUT / SUB INPUT 1,
09h=SUB INPUT 2, 0Ah=SUB INPUT 3
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 097-243-1. EDGE BLENDING MODE REQUEST ---
- id: edge_blending_mode_request
label: Edge Blending Mode Request
kind: query
command: "03h B0h 00h 00h 02h DFh 00h 94h"
params: []
# --- 098-8. ECO MODE SET ---
- id: eco_mode_set
label: Eco Mode Set
kind: set
command: "03h B1h 00h 00h 02h 07h {value} {checksum}"
params:
- name: value
type: string
description: >
DATA01 eco-mode value (hex byte). Enum lives in appendix
"Supplementary Information by Command", not present in refined source.
# UNRESOLVED: eco-mode value enum not in source body
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 098-45. LAN PROJECTOR NAME SET ---
- id: lan_projector_name_set
label: LAN Projector Name Set
kind: set
command: "03h B1h 00h 00h 12h 2Ch {name_01} {name_02} {name_03} {name_04} {name_05} {name_06} {name_07} {name_08} {name_09} {name_10} {name_11} {name_12} {name_13} {name_14} {name_15} {name_16} 00h {checksum}"
params:
- name: name_01
type: string
description: "Projector name byte 1 (up to 16 bytes total; NUL-terminated)"
- name: name_02
type: string
description: Projector name byte 2
- name: name_03
type: string
description: Projector name byte 3
- name: name_04
type: string
description: Projector name byte 4
- name: name_05
type: string
description: Projector name byte 5
- name: name_06
type: string
description: Projector name byte 6
- name: name_07
type: string
description: Projector name byte 7
- name: name_08
type: string
description: Projector name byte 8
- name: name_09
type: string
description: Projector name byte 9
- name: name_10
type: string
description: Projector name byte 10
- name: name_11
type: string
description: Projector name byte 11
- name: name_12
type: string
description: Projector name byte 12
- name: name_13
type: string
description: Projector name byte 13
- name: name_14
type: string
description: Projector name byte 14
- name: name_15
type: string
description: Projector name byte 15
- name: name_16
type: string
description: Projector name byte 16
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 098-198. PIP / PICTURE BY PICTURE SET ---
- id: pip_pbp_set
label: PIP/Picture by Picture Set
kind: set
command: "03h B1h 00h 00h 03h C5h {item} {value} {checksum}"
params:
- name: item
type: string
description: >
DATA01: 00h=MODE, 01h=START POSITION, 02h=SUB INPUT / SUB INPUT 1,
09h=SUB INPUT 2, 0Ah=SUB INPUT 3
- name: value
type: string
description: >
DATA02 setting value (hex byte). When item=MODE: 00h=PIP, 01h=PBP.
When item=START POSITION: 00h=TOP-LEFT, 01h=TOP-RIGHT, 02h=BOTTOM-LEFT,
03h=BOTTOM-RIGHT. Sub-input values live in appendix, not present in source.
# UNRESOLVED: sub-input value enum not in source body
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 098-243-1. EDGE BLENDING MODE SET ---
- id: edge_blending_mode_set
label: Edge Blending Mode Set
kind: set
command: "03h B1h 00h 00h 03h DFh 00h {value} {checksum}"
params:
- name: value
type: string
description: "DATA01: 00h=OFF, 01h=ON"
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
# --- 305-1. BASE MODEL TYPE REQUEST ---
- id: base_model_type_request
label: Base Model Type Request
kind: query
command: "00h BFh 00h 00h 01h 00h C0h"
params: []
# --- 305-2. SERIAL NUMBER REQUEST ---
- id: serial_number_request
label: Serial Number Request
kind: query
command: "00h BFh 00h 00h 02h 01h 06h C8h"
params: []
# --- 305-3. BASIC INFORMATION REQUEST ---
- id: basic_information_request
label: Basic Information Request
kind: query
command: "00h BFh 00h 00h 01h 02h C2h"
params: []
# --- 319-10. AUDIO SELECT SET ---
- id: audio_select_set
label: Audio Select Set
kind: set
command: "03h C9h 00h 00h 03h 09h {input} {value} {checksum}"
params:
- name: input
type: string
description: >
DATA01 input terminal (hex byte). Enum lives in appendix
"Supplementary Information by Command", not present in refined source.
# UNRESOLVED: input terminal enum not in source body
- name: value
type: string
description: "DATA02 audio source: 00h=terminal specified in DATA01, 01h=BNC, 02h=COMPUTER"
- name: checksum
type: string
description: CKS = (sum of all preceding bytes) mod 256, as hex byte
Feedbacks
# Each entry maps to a query response payload documented in the source (§3).
# Success response frame shape:
# "2xh <cmd> <ID1> <ID2> <LEN> <DATA...> <CKS>"
# Error response frame shape:
# "Axh <cmd> <ID1> <ID2> 02h <ERR1> <ERR2> <CKS>"
- id: error_status
source_query: error_status_request
type: bitmask
description: >
12 bytes (DATA01-DATA12) of error flags. Bit=0 normal, Bit=1 error.
DATA01: cover/fan/temperature/power/lamp errors.
DATA02: lamp usage/formatter/lamp2 errors.
DATA03: FPGA/temperature-sensor/lamp-presence/mirror-cover/lamp2 errors.
DATA04: lamp2/temperature-dust/foreign-matter/ballast/iris/lens-install errors.
DATA09: extended status (portrait cover, interlock switch open, system errors).
- id: projector_information
source_query: information_request
type: composite
description: >
DATA01-49 projector name (NUL-terminated); DATA83-86 lamp usage time (seconds);
DATA87-90 filter usage time (seconds). Updated at one-minute intervals.
- id: filter_usage
source_query: filter_usage_information_request
type: composite
description: "DATA01-04 filter usage time (seconds); DATA05-08 filter alarm start time (seconds); -1 if undefined."
- id: lamp_information
source_query: lamp_information_request
type: composite
description: >
DATA01 lamp (00h=Lamp1/01h=Lamp2), DATA02 content (01h=seconds, 04h=remaining %),
DATA03-06 obtained value. Negative remaining-life % if replacement deadline exceeded.
- id: carbon_savings
source_query: carbon_savings_information_request
type: composite
description: "DATA02-05 Carbon Savings (kg, max 99999); DATA06-09 Carbon Savings (mg, max 999999)."
- id: lens_position
source_query: lens_control_request
type: composite
description: "DATA02-03 upper limit, DATA04-05 lower limit, DATA06-07 current value (16-bit signed)."
- id: lens_memory_option
source_query: lens_memory_option_request
type: composite
description: "DATA01 option (00h=LOAD BY SIGNAL, 01h=FORCED MUTE), DATA02 value (00h=OFF, 01h=ON)."
- id: lens_information
source_query: lens_information_request
type: bitmask
description: "DATA01 per-target operation state: Bit0 Lens memory, Bit1 Zoom, Bit2 Focus, Bit3 Lens Shift H, Bit4 Lens Shift V (0=Stop, 1=During operation)."
- id: lens_profile
source_query: lens_profile_request
type: enum
description: "DATA01 profile number: 00h=Profile 1, 01h=Profile 2."
- id: gain_parameter
source_query: gain_parameter_request_3
type: composite
description: >
DATA01 status (00h display-N/A, 01h adjust-N/A, 02h adjustable, FFh no such gain);
DATA02-09 upper/lower/default/current limits; DATA10-13 wide/narrow adjustment widths;
DATA14 default-valid flag.
- id: setting_info
source_query: setting_request
type: composite
description: "DATA01-03 base model type; DATA04 sound function (00h N/A, 01h available); DATA05 profile (00h none, 01h clock, 02h sleep, 03h clock+sleep)."
- id: running_status
source_query: running_status_request
type: composite
description: >
DATA03 power status (00h Standby, 01h Power on, FFh unsupported);
DATA04 cooling process; DATA05 power on/off process;
DATA06 operation status (00h Standby/Sleep, 04h Power on, 05h Cooling, 06h Standby/error, 0Fh Standby/Power saving, 10h Network standby).
- id: input_status
source_query: input_status_request
type: composite
description: >
DATA01 signal switch process; DATA02 signal list number (value = list-1);
DATA03 selection signal type 1; DATA04 selection signal type 2 (01h COMPUTER, 02h VIDEO, 03h S-VIDEO, 04h COMPONENT, 07h VIEWER1-5, 20h DVI-D, 21h HDMI, 22h DisplayPort, 23h VIEWER6-10);
DATA05 signal list type; DATA06 test pattern display; DATA09 content displayed.
- id: mute_status
source_query: mute_status_request
type: composite
description: >
DATA01 picture mute, DATA02 sound mute, DATA03 onscreen mute, DATA04 forced onscreen mute,
DATA05 onscreen display (00h Off, 01h On for each).
- id: model_name
source_query: model_name_request
type: string
description: "DATA01-32 model name (NUL-terminated)."
- id: cover_status
source_query: cover_status_request
type: enum
values: [normal_cover_open, cover_closed]
description: "DATA01: 00h Normal (cover opened), 01h Cover closed."
- id: information_string
source_query: information_string_request
type: string
description: "DATA03+ label/information string (NUL-terminated). Type 03h=H-sync freq, 04h=V-sync freq."
- id: eco_mode
source_query: eco_mode_request
type: raw
description: >
DATA01 eco-mode value (hex byte). Enum lives in appendix, not present in source.
# UNRESOLVED: eco-mode value enum not in source body
- id: lan_projector_name
source_query: lan_projector_name_request
type: string
description: "DATA01-17 projector name (NUL-terminated)."
- id: lan_mac_address
source_query: lan_mac_address_request_2
type: string
description: "DATA01-06 MAC address (6 bytes)."
- id: pip_pbp_state
source_query: pip_pbp_request
type: composite
description: >
DATA01 item; DATA02 value. MODE: 00h PIP/01h PBP. START POSITION: 00h TL/01h TR/02h BL/03h BR.
Sub-input value enums live in appendix, not present in source.
# UNRESOLVED: sub-input value enum not in source body
- id: edge_blending_mode
source_query: edge_blending_mode_request
type: enum
values: [off, on]
description: "DATA01: 00h OFF, 01h ON."
- id: base_model_type
source_query: base_model_type_request
type: composite
description: "DATA01-02 / DATA12-13 base model type; DATA03-11 model name (NUL-terminated)."
- id: serial_number
source_query: serial_number_request
type: string
description: "DATA01-16 serial number (NUL-terminated)."
- id: basic_information
source_query: basic_information_request
type: composite
description: >
DATA01 operation status; DATA02 content displayed; DATA03 signal type 1; DATA04 signal type 2;
DATA05 display signal type (video standards); DATA06 video mute; DATA07 sound mute;
DATA08 onscreen mute; DATA09 freeze status.
Variables
# Settable continuous parameters surfaced via the 030-* family. Each maps to
# the corresponding action; ranges are read at runtime via gain_parameter_request_3.
- id: brightness
set_via: picture_adjust
unit: arbitrary
resolution: 16-bit signed # source DATA03 (lo) + DATA04 (hi)
- id: contrast
set_via: picture_adjust
unit: arbitrary
resolution: 16-bit signed
- id: color
set_via: picture_adjust
unit: arbitrary
resolution: 16-bit signed
- id: hue
set_via: picture_adjust
unit: arbitrary
resolution: 16-bit signed
- id: sharpness
set_via: picture_adjust
unit: arbitrary
resolution: 16-bit signed
- id: volume
set_via: volume_adjust
unit: arbitrary
resolution: 16-bit signed
- id: lamp_light_level
set_via: lamp_light_adjust
unit: arbitrary
resolution: 16-bit signed
Events
# Source documents no unsolicited notifications. All responses are solicited
# by commands (source §2.3). Section intentionally empty.
Macros
# Source documents no explicit multi-step sequences.
# UNRESOLVED: no macros described in source.
Safety
confirmation_required_for: []
interlocks:
- command: power_on
note: "Source §3.2: while POWER ON is executing, no other command can be accepted."
- command: power_off
note: "Source §3.3: while POWER OFF is executing (including cooling time), no other command can be accepted."
- condition: cover_closed
note: "Source 078-6 cover_status_request + error status DATA01 Bit0 (cover error): cover state is a reported safety condition."
- condition: interlock_switch_open
note: "Source error status DATA09 Bit1: 'The interlock switch is open.' Reported as an error bit."
- condition: temperature_error
note: "Source error status DATA01 Bit1/Bit5 and DATA03 Bit2/DATA04 Bit2: multiple temperature-error bits reported."
# UNRESOLVED: no power-on sequencing procedure or formal interlock command list
# described in source; only error bits and command-acceptance notes above.
Notes
- Protocol class bytes: command frames begin with a class byte that also sets the response header:
00h→20h/A0h(078/084/305),01h→21h/A1h(079),02h→22h/A2h(015/016/018/020–025/050/051/052/053-*),03h→23h/A3h(030/037/060/097/098/319). - Checksum: every frame ends in CKS = (sum of all preceding bytes) mod 256. Verified against source example (POWER OFF: 02h+01h+00h+00h+00h = 03h).
- ID1/ID2: responses include Control ID (ID1) and Model code (ID2); command frames in the source do not carry them. ID1 is configured per projector; ID2 is model-specific. Neither value for PN-HC861 is stated in source.
- Error reporting: failure responses carry
<ERR1> <ERR2>per source §2.4 error-code table (28 combinations, e.g.02h 0Dh= "command cannot be accepted because the power is off",02h 0Fh= "no authority for the operation"). - Time fields: lamp/filter usage returned in seconds, updated at one-minute intervals.
- Remote key codes (050): enumerated as a single parameterized command; the source lists 25 key codes as DATA values of one opcode, not as distinct opcodes.
## Provenance
```yaml
source_domains:
- sharpdisplays.eu
source_urls:
- https://www.sharpdisplays.eu/p/download/cp/Products/Projectors/Shared/CommandLists/NEC-ExternalControlManual-english.pdf
retrieved_at: 2026-06-16T13:32:27.656Z
last_checked_at: 2026-06-18T09:05:43.235Z
```
## Verification Summary
```yaml
verdict: verified
checked_at: 2026-06-18T09:05:43.235Z
matched_actions: 53
action_count: 53
confidence: medium
summary: "All 53 spec actions matched verbatim against source command reference; transport parameters verified; complete bidirectional coverage. (11 unresolved item(s) noted in Known Gaps.)"
```
## Known Gaps
```yaml
- "model code (ID2) value for PN-HC861 not stated; must be read from device. Control ID (ID1) value not stated; assumed set per projector config. Appendix \"Supplementary Information by Command\" (input terminal values, aspect values, eco-mode values, base model type values) not present in refined source — several parameter enums incomplete. Firmware version compatibility not stated."
- "flow control not stated (source lists \"Full duplex\" communication mode only)"
- "complete input terminal enum not in source body"
- "aspect value enum not in source body"
- "complete lens target enum not fully visible in source body"
- "eco-mode value enum not in source body"
- "sub-input value enum not in source body"
- "input terminal enum not in source body"
- "no macros described in source."
- "no power-on sequencing procedure or formal interlock command list"
- "model code (ID2) for PN-HC861 not in source. Control ID (ID1) config value not stated. Appendix \"Supplementary Information by Command\" referenced for input-terminal, aspect, eco-mode, and sub-input enums but absent from refined source. Firmware version compatibility not stated. Baud-rate default among the listed values not stated. Lens-target DATA01 enum (053/053-1/053-2) truncated in source body (only 06h=Periphery Focus visible). Flow control not specified."
```
---
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0