How to use Game Haptics Router to drive your toy from any game
GHR routes Xbox controller rumble to interactive toys. Works with hundreds of mainstream games like Cyberpunk, Elden Ring, Dark Souls, and more.
Game Haptics Router (GHR) reads the rumble values games send to your Xbox controller and forwards them to your toy through ToyControl. Most mainstream games rumble; if yours doesn't, GHR has no signal to read.
Before you start
Four things have to be true before you open GHR. Doing them in this order avoids the dead-end most users hit.
- Quit Intiface Central if it is running. Right-click its system-tray icon (next to the clock on Windows) and choose Quit. ToyControl and Intiface Central both want the same network port; only one can run at a time, and you want it to be ToyControl. If you are not sure whether you have Intiface installed, you do not, skip this step.
- Run the ToyControl helper. Open it from your Start menu. The helper window should show "local bridge running" with the Browser bridge row green. See the helper app page if you do not have it installed yet.
- Pair your toy in ToyControl the way you normally would.
- Turn on the Intiface bridge. In ToyControl, open the Game Link tab. Find the Intiface bridge toggle and turn it on. A connection URL appears next to it (it starts with
ws://). Copy it.
Set up GHR
- Download Game Haptics Router from its releases page and run it.
- In GHR, find the Server URL setting (sometimes labelled WebSocket URL). Paste the URL you copied from the Game Link tab, then click Save.
- Click Connect in GHR. The status should change to "connected".
- Launch your game.
- In GHR, click Attach to Process and pick the game from the list. GHR latches on.
- Play. Whenever your controller would rumble, your toy responds.
Tuning the feel
GHR sends raw rumble values. Shape them in ToyControl:
- Multiplier in the bottom bar. Try 0.5x at first; controller rumble can be intense.
- Speed range to set a floor and ceiling.
- Per-device intensity for each toy.
If you take damage in Dark Souls and the toy goes full blast, lower the Multiplier.
Games that work
GHR works with any game that uses XInput rumble. The community maintains a compatibility list of over 200 confirmed titles.
The fastest way to find setup for a specific game is inside ToyControl itself. Open the Game Link tab and use the search box in the "How to connect a game" panel: type "Cyberpunk", "Elden Ring", "Dark Souls", whatever you play, and the per-game card with full GHR setup steps for that title appears.
A sample of titles confirmed working:
- Cyberpunk 2077
- Elden Ring
- Dark Souls 1, 2, 3
- GTA V
- Doom Eternal
- Resident Evil 4 Remake
- Borderlands 2
- Hades
- Cuphead
- Hollow Knight
- Monster Hunter World
- Sleeping Dogs
- Just Cause 3
- The Ascent
- Halo MCC
- Among Us
- Lies of P
- Armored Core 6
Many more on the full list.
Games that do not work
A few categories:
- Games that disable rumble at the engine level even when an Xbox controller is plugged in. Examples: Beat Saber (use Butt Saber instead), some indie games.
- Games with strict anti-cheat. Examples: Valorant (Vanguard), some League of Legends configurations.
- Games that use older controller-input systems instead of XInput. Older games, certain emulators.
For the games that do not work, check our game list for a per-game plugin instead.
Anti-cheat compatibility
GHR attaches to the game while it runs. Most games don't mind, but some online games with strict anti-cheat block it.
- Easy Anti-Cheat (most games): GHR is generally fine.
- BattlEye (PUBG, ARK, others): may be flagged in some configurations.
- Vanguard (Valorant): will likely refuse to run with GHR attached.
- Solo games (Souls series, Cyberpunk, Elden Ring, Hades): no anti-cheat to worry about.
For online competitive games, do not run GHR. For singleplayer or co-op, you are usually fine.
Console games?
There is a separate console GHR project for routing rumble from an Xbox controller plugged into your PC by USB (so the console game runs on the console, the controller plugs into your PC). Useful if you play a console game on a TV with your PC nearby. Same setup as regular GHR after that, pointed at ToyControl.
If it doesn't work
- The Game Link tab shows no bridge URL after I turn the toggle on. The helper isn't binding the port. The likely cause is Intiface Central is running (re-check your system tray) or a previous ToyControl helper instance is still alive. Close everything, reopen the helper, try again. If you are technical and want a definitive answer, open Command Prompt and run
netstat -ano | findstr 12345; if anything shows up, that process is holding the port. - GHR says "connection refused" or "cannot connect". The Intiface bridge URL in the Game Link tab is the source of truth; copy-paste it again, don't type. If GHR offers a choice between
127.0.0.1andlocalhost, prefer127.0.0.1, some GHR builds resolve them inconsistently. - GHR says "connected" but my toy doesn't move when the game rumbles. Make sure the game actually uses XInput rumble (some recent titles use older controller-input systems or skip rumble entirely). Test by running an obviously-rumbly game like a racing title; if even that doesn't move the toy, the issue is in the rumble side, not the connection side.
- GHR cannot attach to my game. Make sure the game is fully loaded before clicking Attach. Some games have multiple processes (Steam shim, anti-cheat shim, the real game); pick the actual game executable.
- Rumble is too aggressive. Lower the Multiplier in ToyControl to 0.5x or less. Set a Speed range max of 70.
- "Unable to hook XInput" error. The most common GHR error. Usually means the game was launched before GHR attached. Close the game, attach GHR first, then launch the game. If that does not help, update GHR. See the GHR troubleshooting forum thread.
Privacy
GHR runs on your computer. ToyControl runs in your browser on the same computer. They talk to each other locally. No cloud is involved.
GHR does not modify your game's files. It does not bypass any DRM. It just reads rumble events.