A Windows desktop application for controlling BenQ projectors via RS-232 serial connection. Built specifically for golf simulator setups, with automatic power management when your simulator software launches.
- Manual Control: Power, input source, picture modes, aspect ratio, audio, and more
- Auto Power Management: Automatically turn projector on/off when your golf simulator software starts/stops
- Configurable Monitoring: Monitor any .exe file (SkyTrak, GSPro, E6, etc.)
- Windows Startup: Option to run at Windows startup
- Default Settings: Auto-apply your preferred input and picture mode on power-on
- Power-Off Delay: Configurable delay prevents accidental shutdowns if app restarts
- Dark Theme UI: Modern, easy-on-the-eyes interface
![]() |
![]() |
Tested with:
- BenQ AK700ST (Golf Simulator Edition)
Should work with other BenQ projectors that support RS-232 control. The command set is fairly standard across BenQ models.
- USB to RS-232 Adapter (recommended: FTDI-based chipset)
- RS-232 Cable (DB-9 crossover/null modem cable)
- If your projector has a DB-9 female port, you need a DB-9 male to female crossover cable
- Pin 2 (RX) connects to Pin 3 (TX) and vice versa
USB-to-RS232 Adapter Projector RS-232 Port
(DB-9 Male) (DB-9 Female)
┌───────────┐ ┌───────────┐
│ 2 (RX) ──┼────────────────┼── 3 (TX) │
│ 3 (TX) ──┼────────────────┼── 2 (RX) │
│ 5 (GND) ──┼────────────────┼── 5 (GND) │
└───────────┘ └───────────┘
-
Clone the repository:
git clone https://github.com/dmkern03/benq-projector-control.git cd benq-projector-control -
Install dependencies:
pip install -r requirements.txt
-
Run the application:
python projector_control.py
-
Clone and install dependencies (as above)
-
Build the executable:
# Windows build_exe.bat # Or manually pip install pyinstaller pyinstaller --onefile --windowed --name "BenQ_Projector_Control" projector_control.py
-
Find your executable in the
distfolder
Download the latest .exe from the Releases page.
- Connect your USB-to-RS232 adapter
- Launch the application
- Click Settings (gear icon)
- Configure:
- COM Port: Select your adapter (check Device Manager if unsure)
- Baud Rate: Usually 115200 (verify in projector OSD menu)
- Application to Monitor: Browse to your simulator .exe file
| Setting | Description | Default |
|---|---|---|
| Run at Windows startup | Launch app when Windows starts | Off |
| Start minimized | Start in system tray | Off |
| Auto-connect on startup | Connect to projector automatically | On |
| Enable application monitoring | Watch for simulator software | On |
| Power ON when app starts | Turn on projector when simulator launches | On |
| Power OFF when app closes | Turn off projector when simulator exits | On |
| Power off delay | Seconds to wait before powering off | 5 |
| Check interval | How often to check for running apps | 5 sec |
| Default input | Input to switch to on power-on | HDMI 1 |
| Default picture mode | Picture mode to apply on power-on | Game |
- Open Device Manager (Win + X, then Device Manager)
- Expand Ports (COM & LPT)
- Look for your USB-Serial adapter (e.g., "USB Serial Port (COM3)")
- On your projector, go to Settings > Advanced > RS232 Settings
- Note the baud rate (commonly 9600 or 115200)
- Match this in the app settings
Simply click the buttons to control your projector:
- Power: On/Off
- Input Source: HDMI 1, HDMI 2
- Picture Mode: Game (golf), Cinema, Bright, Sport, User 1
- Aspect Ratio: 16:9, 4:3, Auto
- Audio: Mute, Unmute, Volume +/-
- Video: Blank, Freeze, Brightness +/-, Contrast +/-
- 3D: Off, Frame Sequential
Once configured, the app monitors for your simulator software:
-
You launch SkyTrak/GSPro/E6
- App detects the process
- Projector powers on
- Default input and picture mode are applied
-
You close your simulator
- App detects process ended
- Waits for configured delay (in case of restart)
- Projector powers off
- Green dot: Connected to projector
- Gray dot: Disconnected
- Status bar: Shows monitoring status and last action
- Ensure USB-RS232 adapter is plugged in
- Install adapter drivers (usually automatic, but FTDI drivers may need manual install)
- Check Device Manager for the adapter
- Port may be in use by another application
- Try unplugging and reconnecting the adapter
- Restart the application
- Verify baud rate matches projector settings
- Check cable connections
- Ensure you're using a crossover cable, not straight-through
- Try a different USB port
- Projector must be in "Network Standby" mode to accept power-on commands when off
- Check projector's RS-232 settings are enabled
- Some commands only work when projector is fully powered on
- Verify the correct .exe path in Settings
- Ensure "Enable application monitoring" is checked
- Check that psutil is installed:
pip install psutil - The monitored app must be a standard Windows process
For developers or advanced users, here are the BenQ RS-232 commands used:
| Function | Command | Response |
|---|---|---|
| Power On | *pow=on# |
*POW=ON# |
| Power Off | *pow=off# |
*POW=OFF# |
| Power Status | *pow=?# |
*POW=ON# or *POW=OFF# |
| HDMI 1 | *sour=hdmi# |
*SOUR=HDMI# |
| HDMI 2 | *sour=hdmi2# |
*SOUR=HDMI2# |
| Game Mode | *appmod=game# |
*APPMOD=GAME# |
| Cinema Mode | *appmod=cine# |
*APPMOD=CINE# |
| Mute On | *mute=on# |
*MUTE=ON# |
| Mute Off | *mute=off# |
*MUTE=OFF# |
| Lamp Hours | *ltim=?# |
*LTIM=xxxx# |
Commands must be wrapped with <CR> (carriage return): \r*command#\r
See docs/RS232_COMMANDS.md for the complete command list.
benq-projector-control/
├── projector_control.py # Main application
├── requirements.txt # Python dependencies
├── build_exe.bat # Windows build script
├── README.md # This file
├── LICENSE # MIT License
├── .gitignore # Git ignore rules
└── docs/
└── RS232_COMMANDS.md # Complete RS-232 command reference
Contributions are welcome! Please feel free to submit a Pull Request.
git clone https://github.com/dmkern03/benq-projector-control.git
cd benq-projector-control
pip install -r requirements.txt
python projector_control.pyThe RS-232 commands are defined in the COMMANDS dictionary at the top of projector_control.py. To support other BenQ models or brands:
- Find the RS-232 command documentation for your projector
- Update the
COMMANDSdictionary with the correct byte strings - Submit a PR with the model name in the description
This project is licensed under the MIT License - see the LICENSE file for details.
- Built for the golf simulator community
- BenQ for providing RS-232 documentation
- The Python
pyserialandpsutillibraries
Dave Kern (@dmkern03)
Disclaimer: This software is not affiliated with or endorsed by BenQ. Use at your own risk.

