Summary
Sharp/NEC PA311D BK SV is a projector controllable via RS-232C serial or wired/wireless LAN. This spec documents the binary command protocol (BDT140013 Rev 7.1): power, input switching, mute (picture/sound/onscreen), picture/volume/aspect adjustment, lens control and memory, shutter, freeze, status queries, eco mode, PIP/PbP, edge blending, and audio select.
Transport
protocols:
- tcp
- serial
# RS-232C and LAN both supported per §1.1
addressing:
port: 7142
serial:
baud_rate: 9600 # source lists supported set: 115200/38400/19200/9600/4800
# supported_baud_rates: [115200, 38400, 19200, 9600, 4800]
data_bits: 8
parity: none
stop_bits: 1
flow_control: none # full duplex stated; flow control not specified
auth:
type: none # inferred: no auth procedure in source
Traits
traits:
- powerable # power on/off commands present
- routable # input switch command present
- queryable # many status request commands present
- levelable # volume / picture / lens gain adjustment present
- mutable # picture / sound / onscreen mute commands present
Actions
# Checksum (CKS): low-order byte of sum of all preceding bytes.
# ID1 = control ID set on projector; ID2 = model code (varies by model).
# Example: 20h 81h 01h 60h 01h 00h -> 20+81+01+60+01+00 = 103h -> CKS = 03h
- id: error_status_request
label: Error Status Request
kind: query
command: "00 88 00 00 00 88"
params: []
notes: "009. Returns DATA01-DATA12 error bitmap (cover/fan/temp/lamp/etc.)"
- id: power_on
label: Power On
kind: action
command: "02 00 00 00 00 02"
params: []
notes: "015. No other command accepted during power-on sequence."
- id: power_off
label: Power Off
kind: action
command: "02 01 00 00 00 03"
params: []
notes: "016. No other command accepted during power-off incl. cooling."
- id: input_sw_change
label: Input Switch Change
kind: action
command: "02 03 00 00 02 01 {data01} {cks}"
params:
- name: data01
type: integer
description: Input terminal value (e.g. 06h = video port). See Appendix "Supplementary Information by Command".
notes: "018. Example for video port: 02 03 00 00 02 01 06 0E"
- id: picture_mute_on
label: Picture Mute On
kind: action
command: "02 10 00 00 00 12"
params: []
notes: "020. Cancelled by input/video switch."
- id: picture_mute_off
label: Picture Mute Off
kind: action
command: "02 11 00 00 00 13"
params: []
notes: "021."
- id: sound_mute_on
label: Sound Mute On
kind: action
command: "02 12 00 00 00 14"
params: []
notes: "022. Cancelled by input/video switch or volume adjust."
- id: sound_mute_off
label: Sound Mute Off
kind: action
command: "02 13 00 00 00 15"
params: []
notes: "023."
- id: onscreen_mute_on
label: Onscreen Mute On
kind: action
command: "02 14 00 00 00 16"
params: []
notes: "024. Cancelled by input/video switch."
- id: onscreen_mute_off
label: Onscreen Mute Off
kind: action
command: "02 15 00 00 00 17"
params: []
notes: "025."
- id: picture_adjust
label: Picture Adjust
kind: action
command: "03 10 00 00 05 {data01} FF {data02} {data03} {data04} {cks}"
params:
- name: data01
type: integer
description: "Target: 00h=Brightness, 01h=Contrast, 02h=Color, 03h=Hue, 04h=Sharpness"
- name: data02
type: integer
description: "Mode: 00h=absolute, 01h=relative"
- name: data03
type: integer
description: Adjustment value (low 8 bits)
- name: data04
type: integer
description: Adjustment value (high 8 bits)
notes: "030-1. Brightness=10 example: 03 10 00 00 05 00 FF 00 0A 00 21"
- id: volume_adjust
label: Volume Adjust
kind: action
command: "03 10 00 00 05 05 00 {data01} {data02} {data03} {cks}"
params:
- name: data01
type: integer
description: "Mode: 00h=absolute, 01h=relative"
- name: data02
type: integer
description: Adjustment value (low 8 bits)
- name: data03
type: integer
description: Adjustment value (high 8 bits)
notes: "030-2. Volume=10 example: 03 10 00 00 05 05 00 00 0A 00 27"
- id: aspect_adjust
label: Aspect Adjust
kind: action
command: "03 10 00 00 05 18 00 00 {data01} 00 {cks}"
params:
- name: data01
type: integer
description: Aspect value. See Appendix "Supplementary Information by Command".
notes: "030-12."
- id: other_adjust
label: Other Adjust (Lamp/Light)
kind: action
command: "03 10 00 00 05 {data01} {data02} {data03} {data04} {data05} {cks}"
params:
- name: data01
type: integer
description: "Target: 96h=LAMP ADJUST / LIGHT ADJUST (DATA02=FFh)"
- name: data02
type: integer
description: Sub-target (FFh for lamp/light)
- name: data03
type: integer
description: "Mode: 00h=absolute, 01h=relative"
- name: data04
type: integer
description: Adjustment value (low 8 bits)
- name: data05
type: integer
description: Adjustment value (high 8 bits)
notes: "030-15. Adjusts various gains."
- id: information_request
label: Information Request
kind: query
command: "03 8A 00 00 00 8D"
params: []
notes: "037. DATA01-49 projector name, DATA83-86 lamp usage (s), DATA87-90 filter usage (s)."
- id: filter_usage_information_request
label: Filter Usage Information Request
kind: query
command: "03 95 00 00 00 98"
params: []
notes: "037-3. DATA01-04 filter usage time (s), DATA05-08 filter alarm start time (s). -1 if undefined."
- id: lamp_information_request_3
label: Lamp Information Request 3
kind: query
command: "03 96 00 00 02 {data01} {data02} {cks}"
params:
- name: data01
type: integer
description: "00h=Lamp1, 01h=Lamp2 (two-lamp models only)"
- name: data02
type: integer
description: "01h=usage time(s), 04h=remaining life(%)"
notes: "037-4. Usage time example: 03 96 00 00 02 00 01 9C. Negative life% if past deadline."
- id: carbon_savings_information_request
label: Carbon Savings Information Request
kind: query
command: "03 9A 00 00 01 {data01} {cks}"
params:
- name: data01
type: integer
description: "00h=Total, 01h=during operation"
notes: "037-6. DATA02-05 kg (max 99999), DATA06-09 mg (max 999999)."
- id: remote_key_code
label: Remote Key Code
kind: action
command: "02 0F 00 00 02 {data01} {data02} {cks}"
params:
- name: data01
type: integer
description: "Key code low byte. E.g. 05h=AUTO, 06h=MENU, 07h=UP, 4Bh=COMPUTER1, D7h=SOURCE"
- name: data02
type: integer
description: Key code high byte (00h for all listed keys)
notes: "050. AUTO example: 02 0F 00 00 02 05 00 18. Full key code table in source §3.19."
- id: shutter_close
label: Shutter Close
kind: action
command: "02 16 00 00 00 18"
params: []
notes: "051. Closes lens shutter."
- id: shutter_open
label: Shutter Open
kind: action
command: "02 17 00 00 00 19"
params: []
notes: "052. Opens lens shutter."
- id: lens_control
label: Lens Control
kind: action
command: "02 18 00 00 02 {data01} {data02} {cks}"
params:
- name: data01
type: integer
description: "Target (06h=Periphery Focus shown)"
- name: data02
type: integer
description: "00h=Stop, 01h=+1s, 02h=+0.5s, 03h=+0.25s, 7Fh=+cont, 81h=-cont, FDh=-0.25s, FEh=-0.5s, FFh=-1s"
notes: "053. Send 00h to stop continuous drive."
- id: lens_control_request
label: Lens Control Request
kind: query
command: "02 1C 00 00 02 {data01} 00 {cks}"
params:
- name: data01
type: integer
description: Lens adjustment target
notes: "053-1. Returns upper/lower range + current value (16-bit each)."
- id: lens_control_2
label: Lens Control 2
kind: action
command: "02 1D 00 00 04 {data01} {data02} {data03} {data04} {cks}"
params:
- name: data01
type: integer
description: "Target (FFh=Stop)"
- name: data02
type: integer
description: "Mode: 00h=absolute, 02h=relative"
- name: data03
type: integer
description: Adjustment value (low 8 bits)
- name: data04
type: integer
description: Adjustment value (high 8 bits)
notes: "053-2. Stop ignores mode/value."
- id: lens_memory_control
label: Lens Memory Control
kind: action
command: "02 1E 00 00 01 {data01} {cks}"
params:
- name: data01
type: integer
description: "00h=MOVE, 01h=STORE, 02h=RESET"
notes: "053-3."
- id: reference_lens_memory_control
label: Reference Lens Memory Control
kind: action
command: "02 1F 00 00 01 {data01} {cks}"
params:
- name: data01
type: integer
description: "00h=MOVE, 01h=STORE, 02h=RESET"
notes: "053-4. Controls profile selected via LENS PROFILE SET."
- id: lens_memory_option_request
label: Lens Memory Option Request
kind: query
command: "02 20 00 00 01 {data01} {cks}"
params:
- name: data01
type: integer
description: "00h=LOAD BY SIGNAL, 01h=FORCED MUTE"
notes: "053-5. Returns ON/OFF."
- id: lens_memory_option_set
label: Lens Memory Option Set
kind: action
command: "02 21 00 00 02 {data01} {data02} {cks}"
params:
- name: data01
type: integer
description: "00h=LOAD BY SIGNAL, 01h=FORCED MUTE"
- name: data02
type: integer
description: "00h=OFF, 01h=ON"
notes: "053-6."
- id: lens_information_request
label: Lens Information Request
kind: query
command: "02 22 00 00 01 00 25"
params: []
notes: "053-7. DATA01 bitmap: lens memory/zoom/focus/shift-H/shift-V operation state."
- id: lens_profile_set
label: Lens Profile Set
kind: action
command: "02 27 00 00 01 {data01} {cks}"
params:
- name: data01
type: integer
description: "00h=Profile 1, 01h=Profile 2"
notes: "053-10."
- id: lens_profile_request
label: Lens Profile Request
kind: query
command: "02 28 00 00 00 2A"
params: []
notes: "053-11. Returns selected profile number."
- id: gain_parameter_request_3
label: Gain Parameter Request 3
kind: query
command: "03 05 00 00 03 {data01} 00 00 {cks}"
params:
- name: data01
type: integer
description: "00h=Brightness, 01h=Contrast, 02h=Color, 03h=Hue, 04h=Sharpness, 05h=Volume, 96h=Lamp/Light"
notes: "060-1. Brightness example: 03 05 00 00 03 00 00 00 0B"
- id: setting_request
label: Setting Request
kind: query
command: "00 85 00 00 01 00 86"
params: []
notes: "078-1. DATA01-03 base model type, DATA04 sound fn, DATA05 profile/timer fn."
- id: running_status_request
label: Running Status Request
kind: query
command: "00 85 00 00 01 01 87"
params: []
notes: "078-2. DATA03 power, DATA04 cooling, DATA05 power-on/off proc, DATA06 op status."
- id: input_status_request
label: Input Status Request
kind: query
command: "00 85 00 00 01 02 88"
params: []
notes: "078-3. Signal switch/signal list/signal type/test pattern/display content."
- id: mute_status_request
label: Mute Status Request
kind: query
command: "00 85 00 00 01 03 89"
params: []
notes: "078-4. Picture/sound/onscreen/forced-onscreen mute + OSD display state."
- id: model_name_request
label: Model Name Request
kind: query
command: "00 85 00 00 01 04 8A"
params: []
notes: "078-5. DATA01-32 model name (NUL-terminated)."
- id: cover_status_request
label: Cover Status Request
kind: query
command: "00 85 00 00 01 05 8B"
params: []
notes: "078-6. DATA01: 00h=normal(open), 01h=closed. Mirror/lens cover."
- id: freeze_control
label: Freeze Control
kind: action
command: "01 98 00 00 01 {data01} {cks}"
params:
- name: data01
type: integer
description: "01h=freeze on, 02h=freeze off"
notes: "079."
- id: information_string_request
label: Information String Request
kind: query
command: "00 D0 00 00 03 00 {data01} 01 {cks}"
params:
- name: data01
type: integer
description: "03h=horizontal sync freq, 04h=vertical sync freq"
notes: "084. English info strings."
- id: eco_mode_request
label: Eco Mode Request
kind: query
command: "03 B0 00 00 01 07 BB"
params: []
notes: "097-8. Returns Light/Lamp mode value (see Appendix)."
- id: lan_projector_name_request
label: LAN Projector Name Request
kind: query
command: "03 B0 00 00 01 2C E0"
params: []
notes: "097-45. DATA01-17 projector name (NUL-terminated)."
- id: lan_mac_address_status_request2
label: LAN MAC Address Status Request 2
kind: query
command: "03 B0 00 00 02 9A 00 4F"
params: []
notes: "097-155. DATA01-06 MAC address."
- id: pip_pbypicture_request
label: PIP/Picture By Picture Request
kind: query
command: "03 B0 00 00 02 C5 {data01} {cks}"
params:
- name: data01
type: integer
description: "00h=MODE, 01h=START POSITION, 02h=SUB INPUT 1, 09h=SUB INPUT 2, 0Ah=SUB INPUT 3"
notes: "097-198. Sub input values via Appendix."
- id: edge_blending_mode_request
label: Edge Blending Mode Request
kind: query
command: "03 B0 00 00 02 DF 00 94"
params: []
notes: "097-243-1. DATA01: 00h=OFF, 01h=ON."
- id: eco_mode_set
label: Eco Mode Set
kind: action
command: "03 B1 00 00 02 07 {data01} {cks}"
params:
- name: data01
type: integer
description: Eco/Light/Lamp mode value (see Appendix).
notes: "098-8."
- id: lan_projector_name_set
label: LAN Projector Name Set
kind: action
command: "03 B1 00 00 12 2C {data01-16} 00 {cks}"
params:
- name: data01_16
type: string
description: Projector name (up to 16 bytes)
notes: "098-45."
- id: pip_pbypicture_set
label: PIP/Picture By Picture Set
kind: action
command: "03 B1 00 00 03 C5 {data01} {data02} {cks}"
params:
- name: data01
type: integer
description: "00h=MODE, 01h=START POSITION, 02h=SUB INPUT 1, 09h=SUB INPUT 2, 0Ah=SUB INPUT 3"
- name: data02
type: integer
description: "Mode value (PIP=00h, PbP=01h) or position (TL/TR/BL/BR=00-03h) or sub input"
notes: "098-198."
- id: edge_blending_mode_set
label: Edge Blending Mode Set
kind: action
command: "03 B1 00 00 03 DF 00 {data01} {cks}"
params:
- name: data01
type: integer
description: "00h=OFF, 01h=ON"
notes: "098-243-1."
- id: base_model_type_request
label: Base Model Type Request
kind: query
command: "00 BF 00 00 01 00 C0"
params: []
notes: "305-1. DATA01-02 + DATA12-13 base model type, DATA03-11 model name."
- id: serial_number_request
label: Serial Number Request
kind: query
command: "00 BF 00 00 02 01 06 C8"
params: []
notes: "305-2. DATA01-16 serial number (NUL-terminated)."
- id: basic_information_request
label: Basic Information Request
kind: query
command: "00 BF 00 00 01 02 C2"
params: []
notes: "305-3. Op status, content displayed, signal type, mute/freeze state."
- id: audio_select_set
label: Audio Select Set
kind: action
command: "03 C9 00 00 03 09 {data01} {data02} {cks}"
params:
- name: data01
type: integer
description: Input terminal (see Appendix).
- name: data02
type: integer
description: "00h=terminal in DATA01, 01h=BNC, 02h=COMPUTER"
notes: "319-10."
Feedbacks
- id: error_status
type: bitmap
values: [DATA01-DATA12 bit field - see error info list §3.1]
notes: Cover/fan/temp/power/lamp/formatter/FPGA/mirror/iris errors.
- id: power_state
type: enum
values: [standby, power_on, cooling, standby_error, standby_sleep, network_standby]
notes: From RUNNING STATUS REQUEST DATA03/DATA06.
- id: input_signal_state
type: composite
values: [signal_list_number, selection_signal_type, display_content]
notes: From INPUT STATUS REQUEST.
- id: mute_state
type: composite
values: [picture_mute, sound_mute, onscreen_mute, forced_onscreen_mute, osd_display]
notes: From MUTE STATUS REQUEST. Each on/off.
- id: cover_state
type: enum
values: [normal_open, closed]
- id: lens_operation_state
type: bitmap
values: [lens_memory, zoom, focus, lens_shift_h, lens_shift_v - each stop/operating]
- id: execution_result
type: enum
values: [success, error]
notes: "Common ACK: DATA01-DATA02 = 0000h success, else error."
Variables
- id: brightness
type: integer
range: [UNRESOLVED - bounds returned dynamically by Gain Parameter Request 3]
notes: Picture Adjust target 00h.
- id: contrast
type: integer
notes: Picture Adjust target 01h.
- id: color
type: integer
notes: Picture Adjust target 02h.
- id: hue
type: integer
notes: Picture Adjust target 03h.
- id: sharpness
type: integer
notes: Picture Adjust target 04h.
- id: volume
type: integer
notes: Volume Adjust (target 05h).
- id: lamp_light_adjust
type: integer
notes: Other Adjust target 96h.
- id: lamp_usage_time_seconds
type: integer
notes: From INFORMATION REQUEST / LAMP INFO REQUEST 3. 1-min update granularity.
- id: filter_usage_time_seconds
type: integer
notes: From FILTER USAGE INFO REQUEST.
- id: eco_mode
type: integer
notes: Values via Appendix "Supplementary Information by Command".
Events
# UNRESOLVED: source describes no unsolicited notifications; protocol is
# strictly request/response with ACK frames.
Macros
# UNRESOLVED: source documents no multi-step sequences.
Safety
confirmation_required_for: []
interlocks: []
# Source notes power-on/power-off reject other commands during the transition
# (incl. cooling), but states no explicit safety interlock procedure.
# <!-- UNRESOLVED: no interlock sequence or confirmation procedure stated in source -->
Notes
- Command/response format:
20h 88h <ID1> <ID2> 0Ch <DATA01>-<DATA12> <CKS>— all hex, frames bounded. - Checksum (CKS) = low-order byte of sum of all preceding bytes.
- ID1 = projector control ID; ID2 = model code (model-specific, not enumerated here).
- Error responses carry
<ERR1> <ERR2>codes — full table in source §2.4 (23 code combinations). - Source references an "Appendix: Supplementary Information by Command" for input terminal values, aspect values, eco mode values, base model types, and sub input values — this Appendix is not present in the refined source text.
Spec done. 52 actions, all hex payloads verbatim. Serial + TCP both supported (port 7142). CKS algorithm documented. Appendix enums marked UNRESOLVED (not in refined source).
## 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-16T14:36:48.753Z
last_checked_at: 2026-06-18T09:04:26.905Z
Verification Summary
verdict: verified
checked_at: 2026-06-18T09:04:26.905Z
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. (10 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "firmware version compatibility not stated in source"
- "ID2 (model code) value not stated — varies by model"
- "base model type enum values referenced via \"Appendix\" not present in source"
- "source describes no unsolicited notifications; protocol is"
- "source documents no multi-step sequences."
- "no interlock sequence or confirmation procedure stated in source"
- "ID2 model code value not stated"
- "Appendix enum tables (input terminals, aspect, eco mode, base model type, sub inputs) not in source"
- "firmware version compatibility not stated"
- "adjustment value min/max bounds not fixed — returned dynamically per-gain"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0