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
- In the projector OSD, enable Network Standby and RS-232 control.
- Note the projector's IP address and the control TCP port.
- In GEM navigate to /admin/devices and add a device with driver BenQ Projector.
- Fill in the projector IP. Leave
portat 8899 unless the OSD shows otherwise. - If your model uses the wider native 0–100 volume range, set
volume_maxto 100. - 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
| Attribute | Type | Direction | Notes |
|---|---|---|---|
ip | string | required | Projector IP or hostname. |
port | int | optional | Control TCP port. Default 8899. |
volume_max | int | optional | Native volume max on the projector. Default 20; set 100 for wider-range models. |
status_interval | int (ms) | optional | Status sweep cadence. Default 30000. |
model_name | string | readonly | Populated by the model-name query on connect. |
power_state | enum | readonly | on / off. |
input | enum | readonly | Current source. |
volume | int (0-100) | readonly | Scaled to GEM's 0-100 slider range. |
mute_state | enum | readonly | on / off. |
brightness | int (0-100) | readonly | Picture brightness. |
contrast | int (0-100) | readonly | Picture contrast. |
blank_state | enum | readonly | on when the projector image is blanked. |
freeze_state | enum | readonly | on when the image is frozen. |
aspect | string | readonly | Current aspect setting. |
mode_3d | string | readonly | Current 3D mode. |
lamp_hours | int (h) | readonly, history | Cumulative 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=50on a 0–20 model becomesvol=10on the wire.vol=10in from the projector becomesvolume=50in 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 withillegal 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=+andvol=-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_maxto 100 if your model uses the wider range.
Related
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.