How to connect your toy to Counter-Strike 2
cs2-buttplug uses CS2's Game State Integration to trigger toy responses on kills, deaths, and headshots. Anti-cheat safe.
Counter-Strike 2 has a feature called Game State Integration (GSI) that publishes match events to external apps. The community plugin cs2-buttplug uses GSI to map CS2 events (kills, deaths, headshots, bomb plants) to toy responses.
Because GSI uses Valve's official integration path rather than memory hooks or DLL injection, it does not trigger anti-cheat. Safe for competitive play.
cs2-buttplug talks to Buttplug.io, which connects directly to ToyControl through the Intiface bridge.
What you need
- Counter-Strike 2 installed (free on Steam).
- cs2-buttplug from its GitHub.
- A toy paired with ToyControl in your browser.
- The ToyControl helper app running.
- The Intiface bridge turned on in ToyControl's Game Link tab. Quit Intiface Central first if you have it installed; the two cannot share the port.
Step 1: Install cs2-buttplug
- Download cs2-buttplug from its GitHub releases page (search "cs2-buttplug" in the Awesome Intiface list).
- Run the installer. It is a small GUI tool.
Step 2: Enable CS2 Game State Integration
cs2-buttplug installs a CS2 GSI config file in your CS2 directory (typically Counter-Strike Global Offensive/game/csgo/cfg/gamestate_integration_buttplug.cfg). It tells CS2 to send GSI events to a local port the cs2-buttplug app listens on.
This step is automatic with the installer. If it does not work, the installer's docs cover manual placement.
Step 3: Point cs2-buttplug at ToyControl
- Open cs2-buttplug.
- In the Buttplug server field, enter ToyControl's Intiface bridge URL (visible in ToyControl's Game Link tab).
- Click Connect.
cs2-buttplug talks to ToyControl, which announces your paired toys.
Step 4: Play
Launch CS2. As matches play out, cs2-buttplug receives GSI events and forwards them as toy commands.
The default mapping:
- Kill: Short intensity burst.
- Death: Longer, lower-intensity buzz (or whatever the config says).
- Headshot: Stronger burst.
- Bomb plant / defuse: Configurable triggers.
Adjust the config to taste.
Tuning the feel
CS2 events fire fast in tense matches. Start with Multiplier 0.5x in ToyControl's bottom bar.
If you find yourself dying a lot (we all do), the death response can get tedious. Lower it in the config.
Anti-cheat compatibility
cs2-buttplug uses GSI, which is Valve's official feature for third-party apps. It does not:
- Inject into the CS2 process.
- Read CS2 memory.
- Modify CS2 files (only adds a config file in a folder Valve designed for this).
VAC (Valve Anti-Cheat) does not trigger on GSI use. Many streamers and esports tools use GSI. Use cs2-buttplug freely.
Troubleshooting
cs2-buttplug receives no events
- Confirm the GSI config file exists in
csgo/cfg/. CS2 reads it on game launch. - Restart CS2 after installing.
- Make sure cs2-buttplug is running before you launch CS2.
Connected but no toy response
- Confirm ToyControl is running with the helper app.
- Verify the Buttplug URL in cs2-buttplug matches ToyControl's.
- Click Test toy in ToyControl.
Match starts and toy fires immediately
The default config may map round-start to an event. Edit the config to disable or reduce.
Privacy
GSI runs entirely on your computer. CS2 sends events to a local port on localhost; cs2-buttplug reads them; ToyControl drives the toy. No data goes to Valve or anywhere else specifically for this integration.