Skip to main content

BenQ Projector (RS-232 over LAN)

Drive BenQ projectors — home cinema (W-series, HT-series), installation (LU-series, LK-series, LH-series), and business (MX/MW/MH-series) — using the well-established BenQ RS-232 command set carried over TCP. The command language is the same one BenQ documents for their DB-9 serial port; the LAN interface simply carries the ASCII protocol on a TCP socket.

What this driver supports

  • Power on / off with live power-state readback.
  • Input source select — HDMI 1/2/3, RGB (VGA), DisplayPort, component (YPbPr), composite, S-video, USB, network.
  • Volume 0–100 with automatic scaling into the projector's native 0–20 (or 0–100) range.
  • Mute on / off / toggle.
  • Video blank (image mute) and freeze.
  • Brightness and contrast set, plus aspect ratio and 3D mode.
  • Auto-adjust (analog inputs) and OSD menu control.
  • Diagnostics telemetry — lamp / light-source hours (history-enabled) and model name.

Prerequisites

  • Firmware that speaks the standard BenQ RS-232 command set (any BenQ projector with a network / RS-232 port from the last decade).
  • Network Standby enabled: Menu → System Setup → Network → Standby Setting → On. Without it, the LAN port sleeps whenever the projector is off and control-plane commands time out.
  • RS-232 control enabled: Menu → System Setup → Control Method → RS-232. On LAN-only models this is enforced automatically.
  • Static IP or DHCP reservation for the projector. Confirm the control port under Menu → System Setup → Network — usually 8899 for installation models, 4661 for some home-cinema models.

Setup

  1. In the projector OSD, enable Network Standby and RS-232 control.
  2. Note the projector's IP address and the control TCP port.
  3. In GEM navigate to /admin/devices and add a device with driver BenQ Projector.
  4. Fill in the projector IP. Leave port at 8899 unless the OSD shows otherwise.
  5. If your model uses the wider native 0–100 volume range, set volume_max to 100.
  6. Save. On connect the driver runs an initial sweep (model, power, input, volume, mute, lamp hours) then polls every 30 seconds.

Zone address format

Not used. One projector = one device row. Link the projector to an AV zone via volume_device_id if the zone should surface projector volume/mute.

Attribute reference

AttributeTypeDirectionNotes
ipstringrequiredProjector IP or hostname.
portintoptionalControl TCP port. Default 8899.
volume_maxintoptionalNative volume max on the projector. Default 20; set 100 for wider-range models.
status_intervalint (ms)optionalStatus sweep cadence. Default 30000.
model_namestringreadonlyPopulated by the model-name query on connect.
power_stateenumreadonlyon / off.
inputenumreadonlyCurrent source.
volumeint (0-100)readonlyScaled to GEM's 0-100 slider range.
mute_stateenumreadonlyon / off.
brightnessint (0-100)readonlyPicture brightness.
contrastint (0-100)readonlyPicture contrast.
blank_stateenumreadonlyon when the projector image is blanked.
freeze_stateenumreadonlyon when the image is frozen.
aspectstringreadonlyCurrent aspect setting.
mode_3dstringreadonlyCurrent 3D mode.
lamp_hoursint (h)readonly, historyCumulative lamp / light-source hours.

Commands

Power: power_on, power_off, get_power.

Input: set_input / input accepting one of hdmi, hdmi2, hdmi3, rgb, rgb2, ypbr, dvia, vid, svid, dp, network, usbreader, usbdisplay.

Audio: volume (0-100), volume_up, volume_down, mute_on, mute_off, mute_toggle, get_volume, get_mute.

Image: brightness, contrast (0-100), set_aspect (auto / 4:3 / 16:9 / 16:10 / wide / letter / anamorphic / real), set_3d (off / sbs / tab / fs / auto).

Utility: blank_on, blank_off, freeze_on, freeze_off, auto_adjust, menu_on, menu_off.

Diagnostics: get_lamp_hours, get_model.

Volume scaling

BenQ's native volume range is 0–20 on most models (0–100 on some installation projectors). GEM's slider is always 0–100. The driver scales incoming 0–100 into the native range on writes and back on reads:

  • volume=50 on a 0–20 model becomes vol=10 on the wire.
  • vol=10 in from the projector becomes volume=50 in the attribute.

If your projector uses the wider 0–100 native range, set volume_max to 100 and the driver becomes a pass-through.

Known limitations

  • No support for the passphrase-protected variant of the RS-232-over-LAN protocol that appears on a small number of enterprise BenQ models. If your projector rejects the initial pow=? query with illegal format, check the projector's Network menu for a Control Password field and disable it.
  • Warm-up window (30–60 seconds after power-on) — the projector accepts the power-on command instantly but ignores subsequent commands until the light source is ready. GEM does not artificially delay; the next status tick will resync state.
  • Video-wall / edge-blend commissioning commands (blend region, geometry correction) are intentionally out of scope. These are commissioning-time OSD operations, not runtime control.
  • Model-name reporting is best-effort. A handful of newer laser-phosphor models return a numeric family code rather than the marketing model string.

Troubleshooting

  • Connection refused / drops immediately. Network Standby is off. Enable Menu → System Setup → Network → Standby Setting → On.
  • Commands work only when the projector is already on. The Standby menu path varies by year; if you cannot find Network Standby, install the latest firmware from the BenQ Business support site.
  • vol=+ and vol=- do nothing. The projector's audio source is set to something without a controllable amplifier (e.g., HDMI audio passthrough). Volume commands apply to the internal amp only.
  • Volume slider jumps 5 points per native step. Expected — native range is 0–20. Set volume_max to 100 if your model uses the wider range.
  • docs/admin/drivers/epson_projector.md — Epson's ESC/VP.net projector protocol.
  • docs/admin/drivers/jvc_projector.md — JVC projectors via TCP.
  • docs/admin/drivers/pjlink.md — cross-brand projector control with a smaller command surface; use PJLink if you only need power/input on a mixed-brand fleet.