Summary

BenQ SH963 projector controlled over RS-232 serial using ASCII command strings framed as <CR>*command#<CR>. Spec covers power, source selection, audio, picture modes/settings, lamp control, and miscellaneous settings commands, plus query commands for status readback. Source is the generic BenQ RS-232 command document that lists SH963 as a supported model.

Transport

protocols:
  - serial
serial:
  baud_rate: 115200  # default; changeable via OSD menu and *baud= command (2400/4800/9600/14400/19200/38400/57600/115200)
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source

Traits

# - powerable       - *pow=on / *pow=off present
# - routable        - *sour= source selection present
# - queryable       - *pow=?, *sour=?, *ltim=?, etc. present
# - levelable       - *vol=+/-, *con=+/-, *bri=+/- present
traits:
  - powerable
  - routable
  - queryable
  - levelable

Actions

# Framing: every command is wrapped as <CR>*command#<CR> - hex 0D before and after.
# Example: "<CR>*pow=on#<CR>" = 0D 2A 70 6F 77 3D 6F 6E 23 0D

# --- Power ---
- id: power_on
  label: Power On
  kind: action
  command: "<CR>*pow=on#<CR>"
  params: []
- id: power_off
  label: Power Off
  kind: action
  command: "<CR>*pow=off#<CR>"
  params: []
- id: power_status_query
  label: Power Status Query
  kind: query
  command: "<CR>*pow=?#<CR>"
  params: []

# --- Source selection ---
- id: select_source_computer_ypbpr
  label: "Select Source COMPUTER/YPbPr"
  kind: action
  command: "<CR>*sour=RGB#<CR>"
  params: []
- id: select_source_computer2_ypbpr2
  label: "Select Source COMPUTER 2/YPbPr2"
  kind: action
  command: "<CR>*sour=RGB2#<CR>"
  params: []
- id: select_source_component
  label: Select Source Component
  kind: action
  command: "<CR>*sour=ypbr#<CR>"
  params: []
- id: select_source_component2
  label: Select Source Component2
  kind: action
  command: "<CR>*sour=ypbr2#<CR>"
  params: []
- id: select_source_dvi_a
  label: Select Source DVI-A
  kind: action
  command: "<CR>*sour=dviA#<CR>"
  params: []
- id: select_source_dvi_d
  label: Select Source DVI-D
  kind: action
  command: "<CR>*sour=dvid#<CR>"
  params: []
- id: select_source_hdmi
  label: Select Source HDMI
  kind: action
  command: "<CR>*sour=hdmi#<CR>"
  params: []
- id: select_source_hdmi2
  label: Select Source HDMI 2
  kind: action
  command: "<CR>*sour=hdmi2#<CR>"
  params: []
- id: select_source_composite
  label: Select Source Composite
  kind: action
  command: "<CR>*sour=vid#<CR>"
  params: []
- id: select_source_svideo
  label: Select Source S-Video
  kind: action
  command: "<CR>*sour=svid#<CR>"
  params: []
- id: select_source_network
  label: Select Source Network
  kind: action
  command: "<CR>*sour=network#<CR>"
  params: []
- id: select_source_usb_display
  label: Select Source USB Display
  kind: action
  command: "<CR>*sour=usbdisplay#<CR>"
  params: []
- id: select_source_usb_reader
  label: Select Source USB Reader
  kind: action
  command: "<CR>*sour=usbreader#<CR>"
  params: []
- id: current_source_query
  label: Current Source Query
  kind: query
  command: "<CR>*sour=?#<CR>"
  params: []

# --- Audio control ---
- id: mute_on
  label: Mute On
  kind: action
  command: "<CR>*mute=on#<CR>"
  params: []
- id: mute_off
  label: Mute Off
  kind: action
  command: "<CR>*mute=off#<CR>"
  params: []
- id: mute_status_query
  label: Mute Status Query
  kind: query
  command: "<CR>*mute=?#<CR>"
  params: []
- id: volume_up
  label: Volume +
  kind: action
  command: "<CR>*vol=+#<CR>"
  params: []
- id: volume_down
  label: Volume -
  kind: action
  command: "<CR>*vol=-#<CR>"
  params: []
- id: volume_status_query
  label: Volume Status Query
  kind: query
  command: "<CR>*vol=?#<CR>"
  params: []
- id: mic_volume_up
  label: Mic. Volume +
  kind: action
  command: "<CR>*micvol=+#<CR>"
  params: []
- id: mic_volume_down
  label: Mic. Volume -
  kind: action
  command: "<CR>*micvol=-#<CR>"
  params: []
- id: mic_volume_status_query
  label: Mic. Volume Status Query
  kind: query
  command: "<CR>*micvol=?#<CR>"
  params: []

# --- Audio source select ---
- id: audio_passthrough_off
  label: Audio Pass Through Off
  kind: action
  command: "<CR>*audiosour=off#<CR>"
  params: []
- id: select_audio_computer1
  label: Audio Computer1
  kind: action
  command: "<CR>*audiosour=RGB#<CR>"
  params: []
- id: select_audio_computer2
  label: Audio Computer2
  kind: action
  command: "<CR>*audiosour=RGB2#<CR>"
  params: []
- id: select_audio_video_svideo
  label: "Audio Video/S-Video"
  kind: action
  command: "<CR>*audiosour=vid#<CR>"
  params: []
- id: select_audio_component
  label: Audio Component
  kind: action
  command: "<CR>*audiosour=ypbr#<CR>"
  params: []
- id: select_audio_hdmi
  label: Audio HDMI
  kind: action
  command: "<CR>*audiosour=hdmi#<CR>"
  params: []
- id: select_audio_hdmi2
  label: Audio HDMI2
  kind: action
  command: "<CR>*audiosour=hdmi2#<CR>"
  params: []
- id: audio_passthrough_status_query
  label: Audio Pass Status Query
  kind: query
  command: "<CR>*audiosour=?#<CR>"
  params: []

# --- Picture mode ---
- id: picture_mode_dynamic
  label: "Picture Mode Dynamic"
  kind: action
  command: "<CR>*appmod=dynamic#<CR>"
  params: []
- id: picture_mode_presentation
  label: "Picture Mode Presentation"
  kind: action
  command: "<CR>*appmod=preset#<CR>"
  params: []
- id: picture_mode_srgb
  label: "Picture Mode sRGB"
  kind: action
  command: "<CR>*appmod=srgb#<CR>"
  params: []
- id: picture_mode_bright
  label: "Picture Mode Bright"
  kind: action
  command: "<CR>*appmod=bright#<CR>"
  params: []
- id: picture_mode_livingroom
  label: "Picture Mode LivingRoom"
  kind: action
  command: "<CR>*appmod=livingroom#<CR>"
  params: []
- id: picture_mode_game
  label: "Picture Mode Game"
  kind: action
  command: "<CR>*appmod=game#<CR>"
  params: []
- id: picture_mode_cinema
  label: "Picture Mode Cinema"
  kind: action
  command: "<CR>*appmod=cine#<CR>"
  params: []
- id: picture_mode_standard
  label: "Picture Mode Standard"
  kind: action
  command: "<CR>*appmod=std#<CR>"
  params: []
- id: picture_mode_user1
  label: "Picture Mode User1"
  kind: action
  command: "<CR>*appmod=user1#<CR>"
  params: []
- id: picture_mode_user2
  label: "Picture Mode User2"
  kind: action
  command: "<CR>*appmod=user2#<CR>"
  params: []
- id: picture_mode_user3
  label: "Picture Mode User3"
  kind: action
  command: "<CR>*appmod=user3#<CR>"
  params: []
- id: picture_mode_isf_day
  label: "Picture Mode ISF Day"
  kind: action
  command: "<CR>*appmod=isfday#<CR>"
  params: []
- id: picture_mode_isf_night
  label: "Picture Mode ISF Night"
  kind: action
  command: "<CR>*appmod=isfnight#<CR>"
  params: []
- id: picture_mode_3d
  label: "Picture Mode 3D"
  kind: action
  command: "<CR>*appmod=threed#<CR>"
  params: []
- id: picture_mode_query
  label: Picture Mode Query
  kind: query
  command: "<CR>*appmod=?#<CR>"
  params: []

# --- Picture settings ---
- id: contrast_up
  label: Contrast +
  kind: action
  command: "<CR>*con=+#<CR>"
  params: []
- id: contrast_down
  label: Contrast -
  kind: action
  command: "<CR>*con=-#<CR>"
  params: []
- id: contrast_query
  label: Contrast Value Query
  kind: query
  command: "<CR>*con=?#<CR>"
  params: []
- id: brightness_up
  label: Brightness +
  kind: action
  command: "<CR>*bri=+#<CR>"
  params: []
- id: brightness_down
  label: Brightness -
  kind: action
  command: "<CR>*bri=-#<CR>"
  params: []
- id: brightness_query
  label: Brightness Value Query
  kind: query
  command: "<CR>*bri=?#<CR>"
  params: []
- id: color_up
  label: Color +
  kind: action
  command: "<CR>*color=+#<CR>"
  params: []
- id: color_down
  label: Color -
  kind: action
  command: "<CR>*color=-#<CR>"
  params: []
- id: color_query
  label: Color Value Query
  kind: query
  command: "<CR>*color=?#<CR>"
  params: []
- id: sharpness_up
  label: Sharpness +
  kind: action
  command: "<CR>*sharp=+#<CR>"
  params: []
- id: sharpness_down
  label: Sharpness -
  kind: action
  command: "<CR>*sharp=-#<CR>"
  params: []
- id: sharpness_query
  label: Sharpness Value Query
  kind: query
  command: "<CR>*sharp=?#<CR>"
  params: []
- id: color_temperature_warmer
  label: "Color Temperature Warmer"
  kind: action
  command: "<CR>*ct=warmer#<CR>"
  params: []
- id: color_temperature_warm
  label: "Color Temperature Warm"
  kind: action
  command: "<CR>*ct=warm#<CR>"
  params: []
- id: color_temperature_normal
  label: "Color Temperature Normal"
  kind: action
  command: "<CR>*ct=normal#<CR>"
  params: []
- id: color_temperature_cool
  label: "Color Temperature Cool"
  kind: action
  command: "<CR>*ct=cool#<CR>"
  params: []
- id: color_temperature_cooler
  label: "Color Temperature Cooler"
  kind: action
  command: "<CR>*ct=cooler#<CR>"
  params: []
- id: color_temperature_lamp_native
  label: "Color Temperature Lamp Native"
  kind: action
  command: "<CR>*ct=native#<CR>"
  params: []
- id: color_temperature_query
  label: Color Temperature Status Query
  kind: query
  command: "<CR>*ct=?#<CR>"
  params: []
- id: aspect_4_3
  label: "Aspect 4:3"
  kind: action
  command: "<CR>*asp=4:3#<CR>"
  params: []
- id: aspect_16_9
  label: "Aspect 16:9"
  kind: action
  command: "<CR>*asp=16:9#<CR>"
  params: []
- id: aspect_16_10
  label: "Aspect 16:10"
  kind: action
  command: "<CR>*asp=16:10#<CR>"
  params: []
- id: aspect_auto
  label: Aspect Auto
  kind: action
  command: "<CR>*asp=AUTO#<CR>"
  params: []
- id: aspect_real
  label: Aspect Real
  kind: action
  command: "<CR>*asp=REAL#<CR>"
  params: []
- id: aspect_letterbox
  label: Aspect Letterbox
  kind: action
  command: "<CR>*asp=LBOX#<CR>"
  params: []
- id: aspect_wide
  label: Aspect Wide
  kind: action
  command: "<CR>*asp=WIDE#<CR>"
  params: []
- id: aspect_anamorphic
  label: Aspect Anamorphic
  kind: action
  command: "<CR>*asp=ANAM#<CR>"
  params: []
- id: aspect_query
  label: Aspect Status Query
  kind: query
  command: "<CR>*asp=?#<CR>"
  params: []
- id: digital_zoom_in
  label: Digital Zoom In
  kind: action
  command: "<CR>*zoomI#<CR>"
  params: []
- id: digital_zoom_out
  label: Digital Zoom Out
  kind: action
  command: "<CR>*zoomO#<CR>"
  params: []
- id: auto_setup
  label: Auto
  kind: action
  command: "<CR>*auto#<CR>"
  params: []
- id: brilliant_color_on
  label: Brilliant Color On
  kind: action
  command: "<CR>*BC=on#<CR>"
  params: []
- id: brilliant_color_off
  label: Brilliant Color Off
  kind: action
  command: "<CR>*BC=off#<CR>"
  params: []
- id: brilliant_color_query
  label: Brilliant Color Status Query
  kind: query
  command: "<CR>*BC=?#<CR>"
  params: []

# --- Operation settings ---
- id: projector_position_front_table
  label: "Projector Position Front Table"
  kind: action
  command: "<CR>*pp=FT#<CR>"
  params: []
- id: projector_position_rear_table
  label: "Projector Position Rear Table"
  kind: action
  command: "<CR>*pp=RE#<CR>"
  params: []
- id: projector_position_rear_ceiling
  label: "Projector Position Rear Ceiling"
  kind: action
  command: "<CR>*pp=RC#<CR>"
  params: []
- id: projector_position_front_ceiling
  label: "Projector Position Front Ceiling"
  kind: action
  command: "<CR>*pp=FC#<CR>"
  params: []
- id: projector_position_query
  label: Projector Position Status Query
  kind: query
  command: "<CR>*pp=?#<CR>"
  params: []
- id: quick_auto_search_on
  label: Quick Auto Search On
  kind: action
  command: "<CR>*QAS=on#<CR>"
  params: []
- id: quick_auto_search_off
  label: Quick Auto Search Off
  kind: action
  command: "<CR>*QAS=off#<CR>"
  params: []
- id: quick_auto_search_query
  label: Quick Auto Search Status Query
  kind: query
  command: "<CR>*QAS=?#<CR>"
  params: []
- id: direct_power_on_on
  label: Direct Power On On
  kind: action
  command: "<CR>*directpower=on#<CR>"
  params: []
- id: direct_power_on_off
  label: Direct Power On Off
  kind: action
  command: "<CR>*directpower=off#<CR>"
  params: []
- id: direct_power_on_query
  label: Direct Power On Status Query
  kind: query
  command: "<CR>*directpower=?#<CR>"
  params: []
- id: signal_power_on_on
  label: Signal Power On On
  kind: action
  command: "<CR>*autopower=on#<CR>"
  params: []
- id: signal_power_on_off
  label: Signal Power On Off
  kind: action
  command: "<CR>*autopower=off#<CR>"
  params: []
- id: signal_power_on_query
  label: Signal Power On Status Query
  kind: query
  command: "<CR>*autopower=?#<CR>"
  params: []
- id: standby_network_on
  label: Standby Network On
  kind: action
  command: "<CR>*standbynet=on#<CR>"
  params: []
- id: standby_network_off
  label: Standby Network Off
  kind: action
  command: "<CR>*standbynet=off#<CR>"
  params: []
- id: standby_network_query
  label: Standby Network Status Query
  kind: query
  command: "<CR>*standbynet=?#<CR>"
  params: []
- id: standby_microphone_on
  label: Standby Microphone On
  kind: action
  command: "<CR>*standbymic=on#<CR>"
  params: []
- id: standby_microphone_off
  label: Standby Microphone Off
  kind: action
  command: "<CR>*standbymic=off#<CR>"
  params: []
- id: standby_microphone_query
  label: Standby Microphone Status Query
  kind: query
  command: "<CR>*standbymic=?#<CR>"
  params: []
- id: standby_monitor_out_on
  label: Standby Monitor Out On
  kind: action
  command: "<CR>*standbymnt=on#<CR>"
  params: []
- id: standby_monitor_out_off
  label: Standby Monitor Out Off
  kind: action
  command: "<CR>*standbymnt=off#<CR>"
  params: []
- id: standby_monitor_out_query
  label: Standby Monitor Out Status Query
  kind: query
  command: "<CR>*standbymnt=?#<CR>"
  params: []

# --- Baud rate ---
- id: set_baud_2400
  label: Set Baud Rate 2400
  kind: action
  command: "<CR>*baud=2400#<CR>"
  params: []
- id: set_baud_4800
  label: Set Baud Rate 4800
  kind: action
  command: "<CR>*baud=4800#<CR>"
  params: []
- id: set_baud_9600
  label: Set Baud Rate 9600
  kind: action
  command: "<CR>*baud=9600#<CR>"
  params: []
- id: set_baud_14400
  label: Set Baud Rate 14400
  kind: action
  command: "<CR>*baud=14400#<CR>"
  params: []
- id: set_baud_19200
  label: Set Baud Rate 19200
  kind: action
  command: "<CR>*baud=19200#<CR>"
  params: []
- id: set_baud_38400
  label: Set Baud Rate 38400
  kind: action
  command: "<CR>*baud=38400#<CR>"
  params: []
- id: set_baud_57600
  label: Set Baud Rate 57600
  kind: action
  command: "<CR>*baud=57600#<CR>"
  params: []
- id: set_baud_115200
  label: Set Baud Rate 115200
  kind: action
  command: "<CR>*baud=115200#<CR>"
  params: []
- id: baud_rate_query
  label: Current Baud Rate Query
  kind: query
  command: "<CR>*baud=?#<CR>"
  params: []

# --- Lamp control ---
- id: lamp_hour_query
  label: Lamp Hour Query
  kind: query
  command: "<CR>*ltim=?#<CR>"
  params: []
- id: lamp2_hour_query
  label: Lamp2 Hour Query
  kind: query
  command: "<CR>*ltim2=?#<CR>"
  params: []
- id: lamp_mode_normal
  label: "Lamp Mode Normal"
  kind: action
  command: "<CR>*lampm=lnor#<CR>"
  params: []
- id: lamp_mode_eco
  label: "Lamp Mode Eco"
  kind: action
  command: "<CR>*lampm=eco#<CR>"
  params: []
- id: lamp_mode_smart_eco
  label: "Lamp Mode Smart Eco"
  kind: action
  command: "<CR>*lampm=seco#<CR>"
  params: []
- id: lamp_mode_dual_brightest
  label: "Lamp Mode Dual Brightest (dual-lamp)"
  kind: action
  command: "<CR>* lampm =dualbr#<CR>"  # verbatim from source incl. spaces; canonical form likely *lampm=dualbr#
  params: []
- id: lamp_mode_dual_reliable
  label: "Lamp Mode Dual Reliable (dual-lamp)"
  kind: action
  command: "<CR>* lampm =dualre#<CR>"  # verbatim from source incl. spaces
  params: []
- id: lamp_mode_single_alternative
  label: "Lamp Mode Single Alternative (dual-lamp)"
  kind: action
  command: "<CR>* lampm =single#<CR>"  # verbatim from source incl. spaces
  params: []
- id: lamp_mode_single_alternative_eco
  label: "Lamp Mode Single Alternative Eco (dual-lamp)"
  kind: action
  command: "<CR>* lampm =singleeco#<CR>"  # verbatim from source incl. spaces
  params: []
- id: lamp_mode_query
  label: Lamp Mode Status Query
  kind: query
  command: "<CR>*lampm=?#<CR>"
  params: []

# --- Miscellaneous ---
- id: model_name_query
  label: Model Name Query
  kind: query
  command: "<CR>*modelname=?#<CR>"
  params: []
- id: blank_on
  label: Blank On
  kind: action
  command: "<CR>*blank=on#<CR>"
  params: []
- id: blank_off
  label: Blank Off
  kind: action
  command: "<CR>*blank=off#<CR>"
  params: []
- id: blank_query
  label: Blank Status Query
  kind: query
  command: "<CR>*blank=?#<CR>"
  params: []
- id: freeze_on
  label: Freeze On
  kind: action
  command: "<CR>*freeze=on#<CR>"
  params: []
- id: freeze_off
  label: Freeze Off
  kind: action
  command: "<CR>*freeze=off#<CR>"
  params: []
- id: freeze_query
  label: Freeze Status Query
  kind: query
  command: "<CR>*freeze=?#<CR>"
  params: []
- id: menu_on
  label: Menu On
  kind: action
  command: "<CR>*menu=on#<CR>"
  params: []
- id: menu_off
  label: Menu Off
  kind: action
  command: "<CR>*menu=off#<CR>"
  params: []
- id: nav_up
  label: Up
  kind: action
  command: "<CR>*up#<CR>"
  params: []
- id: nav_down
  label: Down
  kind: action
  command: "<CR>*down#<CR>"
  params: []
- id: nav_right
  label: Right
  kind: action
  command: "<CR>*right#<CR>"
  params: []
- id: nav_left
  label: Left
  kind: action
  command: "<CR>*left#<CR>"
  params: []
- id: nav_enter
  label: Enter
  kind: action
  command: "<CR>*enter#<CR>"
  params: []
- id: three_d_sync_off
  label: 3D Sync Off
  kind: action
  command: "<CR>*3d=off#<CR>"
  params: []
- id: three_d_auto
  label: 3D Auto
  kind: action
  command: "<CR>*3d=auto#<CR>"
  params: []
- id: three_d_sync_top_bottom
  label: 3D Sync TopBottom
  kind: action
  command: "<CR>*3d=tb#<CR>"
  params: []
- id: three_d_sync_frame_sequential
  label: 3D Sync Frame Sequential
  kind: action
  command: "<CR>*3d=fs#<CR>"
  params: []
- id: three_d_frame_packing
  label: 3D Framepacking
  kind: action
  command: "<CR>*3d=fp#<CR>"
  params: []
- id: three_d_side_by_side
  label: 3D Side by Side
  kind: action
  command: "<CR>*3d=sbs#<CR>"
  params: []
- id: three_d_inverter_disable
  label: 3D Inverter Disable
  kind: action
  command: "<CR>*3d=da#<CR>"
  params: []
- id: three_d_inverter
  label: 3D Inverter
  kind: action
  command: "<CR>*3d=iv#<CR>"
  params: []
- id: two_d_to_three_d
  label: 2D to 3D
  kind: action
  command: "<CR>*3d=2d3d#<CR>"
  params: []
- id: three_d_nvidia
  label: 3D nVIDIA
  kind: action
  command: "<CR>*3d=nvidia#<CR>"
  params: []
- id: three_d_sync_query
  label: 3D Sync Status Query
  kind: query
  command: "<CR>*3d=?#<CR>"
  params: []
- id: remote_receiver_front_rear
  label: "Remote Receiver Front+Rear"
  kind: action
  command: "<CR>*rr=fr#<CR>"
  params: []
- id: remote_receiver_front
  label: Remote Receiver Front
  kind: action
  command: "<CR>*rr=f#<CR>"
  params: []
- id: remote_receiver_rear
  label: Remote Receiver Rear
  kind: action
  command: "<CR>*rr=r#<CR>"
  params: []
- id: remote_receiver_query
  label: Remote Receiver Status Query
  kind: query
  command: "<CR>*rr=?#<CR>"
  params: []
- id: instant_on_on
  label: Instant On On
  kind: action
  command: "<CR>*ins=on#<CR>"
  params: []
- id: instant_on_off
  label: Instant On Off
  kind: action
  command: "<CR>*ins=off#<CR>"
  params: []
- id: instant_on_query
  label: Instant On Status Query
  kind: query
  command: "<CR>*ins=?#<CR>"
  params: []
- id: lamp_saver_on
  label: LampSaver Mode On
  kind: action
  command: "<CR>*lpsaver=on#<CR>"
  params: []
- id: lamp_saver_off
  label: LampSaver Mode Off
  kind: action
  command: "<CR>*lpsaver=off#<CR>"
  params: []
- id: lamp_saver_query
  label: LampSaver Mode Status Query
  kind: query
  command: "<CR>*lpsaver=?#<CR>"
  params: []
- id: projection_login_code_on
  label: Projection Log In Code On
  kind: action
  command: "<CR>*prjlogincode=on#<CR>"
  params: []
- id: projection_login_code_off
  label: Projection Log In Code Off
  kind: action
  command: "<CR>*prjlogincode=off#<CR>"
  params: []
- id: projection_login_code_query
  label: Projection Log In Code Status Query
  kind: query
  command: "<CR>*prjlogincode=?#<CR>"
  params: []
- id: broadcasting_on
  label: Broadcasting On
  kind: action
  command: "<CR>*broadcasting=on#<CR>"
  params: []
- id: broadcasting_off
  label: Broadcasting Off
  kind: action
  command: "<CR>*broadcasting=off#<CR>"
  params: []
- id: broadcasting_query
  label: Broadcasting Status Query
  kind: query
  command: "<CR>*broadcasting=?<CR>"  # verbatim from source; '#' terminator missing in source (likely typo)
  params: []
- id: amx_device_discovery_on
  label: AMX Device Discovery On
  kind: action
  command: "<CR>*amxdd=on#<CR>"
  params: []
- id: amx_device_discovery_off
  label: AMX Device Discovery Off
  kind: action
  command: "<CR>*amxdd=off#<CR>"
  params: []
- id: amx_device_discovery_query
  label: AMX Device Discovery Status Query
  kind: query
  command: "<CR>*amxdd=?#<CR>"
  params: []
- id: mac_address_query
  label: Mac Address Query
  kind: query
  command: "<CR>*macaddr=?#<CR>"
  params: []
- id: high_altitude_on
  label: High Altitude Mode On
  kind: action
  command: "<CR>*Highaltitude=on#<CR>"
  params: []
- id: high_altitude_off
  label: High Altitude Mode Off
  kind: action
  command: "<CR>*Highaltitude=off#<CR>"
  params: []
- id: high_altitude_query
  label: High Altitude Mode Status Query
  kind: query
  command: "<CR>*Highaltitude=?#<CR>"
  params: []

Feedbacks

# Device echoes each input character; echo text equals the command executed (uppercase),
# except queries which return the value instead.
- id: command_echo
  type: string
  description: >-
    Echo of executed command, e.g. send "*pow=on#" -> "> *pow=on#" then "*POW=ON#".
    Hex for power-on echo: 3E 2A 70 6F 77 3D 6F 6E 23 0D 0D 0A 2A 50 4F 57 3D 4F 4E 23 0D 0A
- id: power_state
  type: enum
  values: [on, off, cooling, standby]
  description: 'Response to *pow=?# - e.g. "*POW=ON#" / "*POW=OFF#"; states noted: standby, power on, cooling'
- id: ready_prompt
  type: fixed
  description: 'On Enter (ASCII 13) with no command, echoes 3E,00 - projector ready to accept RS-232 command'
- id: timeout_echo
  type: fixed
  description: 'If no command within 5 seconds, echoes 0D,0A,00 (5 sec timeout)'
- id: error_illegal_format
  type: fixed
  description: 'Echoes "Illegal format" when command format is illegal'
- id: error_unsupported_item
  type: fixed
  description: 'Echoes "Unsupported item" when format correct but not valid for this model'
- id: error_block_item
  type: fixed
  description: 'Echoes "Block item" when format correct but cannot execute in current condition'
# UNRESOLVED: exact response strings for non-power queries (sour=?, vol=?, etc.) not shown in source

Variables

- id: volume
  type: integer
  description: Speaker volume; stepped via *vol=+/-, read via *vol=?
  # UNRESOLVED: numeric range not stated in source
- id: mic_volume
  type: integer
  description: Microphone volume; stepped via *micvol=+/-, read via *micvol=?
  # UNRESOLVED: numeric range not stated in source
- id: contrast
  type: integer
  description: Contrast; stepped via *con=+/-, read via *con=?
  # UNRESOLVED: numeric range not stated in source
- id: brightness
  type: integer
  description: Brightness; stepped via *bri=+/-, read via *bri=?
  # UNRESOLVED: numeric range not stated in source
- id: color
  type: integer
  description: Color; stepped via *color=+/-, read via *color=?
  # UNRESOLVED: numeric range not stated in source
- id: sharpness
  type: integer
  description: Sharpness; stepped via *sharp=+/-, read via *sharp=?
  # UNRESOLVED: numeric range not stated in source
- id: lamp_hours
  type: integer
  description: Lamp 1 hours; read via *ltim=?
- id: lamp2_hours
  type: integer
  description: Lamp 2 hours (dual-lamp models); read via *ltim2=?
- id: baud_rate
  type: enum
  values: [2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200]
  description: RS-232 baud rate; default 115200; set via *baud=<n>#, read via *baud=?

Events

# No unsolicited notifications documented; device only responds to commands (echo/timeout behavior).
# UNRESOLVED: no events stated in source

Macros

# UNRESOLVED: no multi-step sequences described in source

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or power-on
# sequencing requirements. Power off during cooling behavior not described.

Notes

  • Command framing: every command wrapped as <CR>*command#<CR> (hex 0D ... 23 0D). Worked example from source: <CR>*pow=on#<CR> = 0D 2A 70 6F 77 3D 6F 6E 23 0D.
  • RS232 pin assignment (D-sub 9): 1 NC, 2 RXD, 3 TXD, 4 NC, 5 GND, 6 NC, 7 RTS, 8 CTS, 9 NC.
  • Each input character echoed; upper- and lower-case input both acted on.
  • "Unsupported item" and "Block item" responses not supported in power saving mode (standby power < 1W); all status commands and power on command work in low power mode (< 0.5W).
  • Sending power on/off when already in that state re-echoes the same response (no error).
  • Volume bar display supported on device.
  • If system has LAN over RS232 function, RS232 commands are supported over it.
  • Dual-lamp commands (* lampm =dualbr# etc.) printed with spaces in source; copied verbatim — canonical form likely without spaces.
  • Broadcasting status query printed in source without # terminator; copied verbatim.
  • Source is the shared BenQ RS-232 command document listing SH963 as suitable; per-model command availability varies (source, audio settings, aspect ratio, etc.).

Provenance

source_domains:
  - benqimage.blob.core.windows.net
  - manualslib.com
source_urls:
  - "https://benqimage.blob.core.windows.net/driver-us-file/RS232-commands_all%20Product%20Lines.pdf"
  - https://www.manualslib.com/manual/550936/Benq-Dx819st.html
  - https://www.manualslib.com/manual/3088967/Benq-Sh963.html
retrieved_at: 2026-08-16T18:18:36.805Z
last_checked_at: 2026-08-19T08:59:26.494Z

Verification Summary

verdict: verified
checked_at: 2026-08-19T08:59:26.494Z
matched_actions: 173
action_count: 173
confidence: medium
summary: "All 173 spec command literals appear verbatim in the source command table and transport parameters match exactly; bidirectional coverage is 1.00. (10 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "source is a shared BenQ RS232 doc, not SH963-exclusive; per-model command availability varies (\"The above function will be vary from model to model\"). Firmware compatibility, physical/electrical specs beyond serial settings, and network control details are not stated."
- "exact response strings for non-power queries (sour=?, vol=?, etc.) not shown in source"
- "numeric range not stated in source"
- "no events stated in source"
- "no multi-step sequences described in source"
- "source contains no safety warnings, interlock procedures, or power-on"
- "firmware version compatibility not stated in source"
- "numeric ranges/steps for volume, contrast, brightness, color, sharpness not stated"
- "response formats for most query commands (only power query response shown)"
- "whether SH963 is dual-lamp; dual-lamp rows marked 雙燈 (dual lamp) in source"

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