b8fd652cb8
Steam Input only adopts the virtual Steam Deck controller when it arrives as a real USB device (raw_gadget or usbip/vhci transports); the UHID fallback has no USB interface and Steam ignores it. On a stock host neither precondition for usbip held: vhci-hcd isn't loaded, and its sysfs attach/detach files are root-only while the host runs as a user service — so every session silently fell back to UHID and 'no controller appears on the host' (live-debugged 2026-07-08: client events all arrived, the pad existed, Steam just refused it). Ship both preconditions with the host packages: * modules-load.d/punktfunk.conf loads vhci-hcd at boot (rpm/deb/arch; Bazzite gets it via the RPM payload + a modprobe in the sysext post-merge hook) * a udev rule in 60-punktfunk.rules grants the input group write on vhci_hcd's attach/detach whenever the device appears Verified end-to-end on a live host: usbip in-process attach, hid-steam binds all three interfaces, 'Steam Deck' + motion evdev appear, and Steam adopts the pad (client-mode grab + its own virtual X360 emission). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
20 lines
1.3 KiB
Plaintext
20 lines
1.3 KiB
Plaintext
# udev rules for the punktfunk streaming host (mirrors Sunshine's 60-sunshine.rules).
|
|
#
|
|
# Grants the `input` group access to /dev/uinput (virtual X-Box-360 gamepads) and /dev/uhid
|
|
# (virtual DualSense via the kernel hid-playstation driver — LED, adaptive triggers, touchpad,
|
|
# gyro). `static_node` makes the nodes exist before their modules load.
|
|
#
|
|
# Install:
|
|
# sudo cp scripts/60-punktfunk.rules /etc/udev/rules.d/
|
|
# sudo usermod -aG input $USER # then re-login (or reboot)
|
|
# sudo udevadm control --reload-rules && sudo udevadm trigger
|
|
KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", GROUP="input", MODE="0660", TAG+="uaccess"
|
|
KERNEL=="uhid", SUBSYSTEM=="misc", OPTIONS+="static_node=uhid", GROUP="input", MODE="0660", TAG+="uaccess"
|
|
|
|
# usbip vhci attach/detach for the virtual Steam Deck controller. Steam Input only
|
|
# adopts the virtual Deck when it arrives as a USB device (usbip/vhci or raw_gadget);
|
|
# the UHID fallback has no USB interface and Steam ignores it. The sysfs attach files
|
|
# are root-only by default while the host runs as a user service — grant the `input`
|
|
# group write when vhci_hcd appears (module autoload: modules-load.d/punktfunk.conf).
|
|
ACTION=="add", SUBSYSTEM=="platform", KERNEL=="vhci_hcd.*", RUN+="/bin/sh -c 'chgrp input /sys%p/attach /sys%p/detach && chmod 0660 /sys%p/attach /sys%p/detach'"
|