Skip to content
VRTEFVKT edited this page Oct 21, 2026 · 1 revision

Linux

Tested on Arch/CachyOS (KDE Plasma) and Zorin OS 18 (Ubuntu 24.04, GNOME on Wayland). The release package runs on Ubuntu 20.04 and newer, Debian 11+, Mint, Zorin, Pop!_OS and current Arch and Fedora.

Release package

tar xzf padbridge-<version>-linux-x86_64.tar.gz
install -Dm755 padbridge-<version>-linux-x86_64/padbridge ~/.local/bin/padbridge
padbridge            # with window

Then set up the permissions below.

Permissions for pads and virtual devices

PadBridge runs as a normal user. It needs read access to the pads (/dev/input/event*) and write access to /dev/uinput for the virtual pad and the virtual keyboard/mouse. Both go through the input group. If Sunshine is installed, the uinput rule is usually there already. Otherwise:

echo 'KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", GROUP="input", MODE="0660", TAG+="uaccess"' \
  | sudo tee /etc/udev/rules.d/60-padbridge-uinput.rules
sudo usermod -aG input "$USER"     # then log out and back in
sudo udevadm control --reload && sudo udevadm trigger

Every game pad Linux knows shows up in the monitor, also when plugged in or out: the Xbox 360 controller through the kernel driver xpad, the PS4 controller through hid-playstation, and other pads too.

LED ring and light bar

By default the kernel lets only root set controller LEDs. These rules give the input group write access. Replug the pad afterwards.

Xbox 360 (LED ring):

echo 'ACTION=="add", SUBSYSTEM=="leds", KERNEL=="xpad*", RUN+="/bin/chgrp input /sys%p/brightness", RUN+="/bin/chmod 0664 /sys%p/brightness"' \
  | sudo tee /etc/udev/rules.d/71-padbridge-xpad-led.rules
sudo udevadm control --reload

PS4 controller (light bar):

echo 'ACTION=="add", SUBSYSTEM=="leds", KERNEL=="*054C:*|*:rgb:indicator", RUN+="/bin/chgrp input /sys%p/brightness", RUN+="/bin/chmod 0664 /sys%p/brightness", RUN+="/bin/chgrp input /sys%p/multi_intensity", RUN+="/bin/chmod 0664 /sys%p/multi_intensity"' \
  | sudo tee /etc/udev/rules.d/72-padbridge-ds4-led.rules
sudo udevadm control --reload

Without these rules everything else still works; the monitor then shows "Nicht verfügbar" (not available) for the LED ring.

Build from source

PadBridge needs a current Rust. The cargo/rustc packages of Ubuntu and Debian are too old, so install Rust with rustup:

# Arch / CachyOS
sudo pacman -S --needed rustup alsa-lib pkgconf && rustup default stable
# Debian / Ubuntu / Mint / Zorin
sudo apt install build-essential libasound2-dev pkg-config curl
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

git clone https://github.com/ThrowingSnow/PadBridge.git
cd PadBridge/rust
cargo build --release -p padbridge
install -Dm755 target/release/padbridge ~/.local/bin/padbridge

A binary built on a rolling-release system (Arch) needs that system's newest glibc and does not start on Ubuntu. For a package that runs everywhere, scripts/build-linux.sh builds in an Ubuntu 20.04 container (needs Docker).

Clone this wiki locally