← Back to game

Server Setup

One-time setup on your Steam Deck. Takes about 5 minutes.

1

Get a free ngrok account

ngrok creates a public URL so phones can reach the Steam Deck over the internet. Sign up free at ngrok.com, then copy your Auth Token from the dashboard — you'll need it in step 3.

2

Install Node.js

Switch to Desktop Mode. Install Node.js via the Discover store, or download it from nodejs.org. No other dependencies needed — the virtual controller uses Python, which is already built into SteamOS.

3

Download and configure the server

Open a terminal in Desktop Mode and run:

git clone https://github.com/Jun1perjack/Buzzd.git
cd Buzzd/server
npm install
cp .env.example .env

Then open .env in a text editor and fill in:

NGROK_AUTHTOKEN=your_token_here
VERCEL_URL=https://buzzd-xi.vercel.app
4

Allow access to the virtual controller (once)

The server creates a virtual gamepad via /dev/uinput. Run these three commands to grant access:

echo 'KERNEL=="uinput", GROUP="input", MODE="0660"' | sudo tee /etc/udev/rules.d/99-uinput.rules
sudo udevadm control --reload-rules && sudo udevadm trigger
sudo usermod -aG input $USER

Then log out and back in (or reboot) for the change to take effect.

5

Start the server

cd Buzzd/server
npm start

A QR code will appear in the terminal. Players scan it with their phone to join instantly — no URL or room code to type.

Start the server before opening PCSX2 so the virtual controller is detected at launch.

🎮

Configure PCSX2

The server creates a virtual gamepad called Buzz Controller. Start the server first so PCSX2 can detect it.

In PCSX2: Settings → Controllers → USB → set port 1 to BuzzController → Configure.

Bind each input by clicking it in PCSX2, then pressing the matching button on your phone in the Buzzd app:

PCSX2 input Press on phone
Player 1 / RedP1 — big red BUZZ
Player 1 / BlueP1 — Blue
Player 1 / OrangeP1 — Orange
Player 1 / GreenP1 — Green
Player 1 / YellowP1 — Yellow
↑ Repeat for Players 2, 3, 4 ↑
⬇ Download PCSX2 config snippet

The download includes the full button mapping and instructions for merging it directly into PCSX2.ini if you prefer to skip manual binding.

Or run this script to patch PCSX2.ini automatically — it detects the correct device index and writes all 20 bindings for you:

python3 ~/Buzzd/server/setup-pcsx2.py
Make sure the Buzzd server is running before you run this, and that PCSX2 has been opened at least once (so its config file exists). Your existing PCSX2.ini is backed up automatically.