You are not logged in.
I've been trying to use my Xbox One S controller over bluetooth the past couple of days to play games to no avail. When I connect it, `/dev/input/js[0-9]` is created and when catting it everything seems fine as well as the fact that https://gamepad-tester.com/ works. Though when trying to test the controller with Wine, Steam, and every game I have tried. the controller does not work at all. There is no file under `/dev/input/by-id/` for the controller
When I connect the controller via microusb it does work, though the permissions are not set correctly and I need to manually chmod `/dev/input/js[0-9]` and `/dev/input/by-id/*-joystick` to make it work correctly.
I have tried installing xpadneo, and xboxdrv. xboxdrv did not appear to change anything and xpadneo just made the recognition problem persist even when plugging in via microusb.
How should I go about further troubleshooting, or potentially solving this issue?
Last edited by aflyingpumpkin (2022-11-14 03:35:25)
Offline
"Files" under /dev/input/by-id/ are just symlinks to /dev/input/event* nodes. These links should be created by udev. I'm not sure why it's failing when connecting over bluetooth (I have near zero experience w/ bluetooth devices in linux). But you could create the symlink yourself, and if you can confirm this works, you could write a udev rule to automate the link creation whenever the device is connected (and removal upon disconnect).
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
Creating a symlink manually worked, though for some reason the `/dev/input/event` was not automatically set to be readable by my user. Do you have any resources on how I can go about fixing the permissions and automating the creation of a symlink? I tried installing `game-devices-udev` as recommended by the wiki, though it has not done anything to fix this issue.
Offline
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
Thanks for the link!
I was somehow able to hack together this udev rule to get it solved:
KERNEL=="js[0-9]", ENV{ID_BUS}=="bluetooth", SUBSYSTEM=="input", MODE="0664", TAG+="uaccess", SYMLINK+="input/by-id/$env{ID_BUS}-controller-%n-joystick"
KERNEL=="event[0-9]*", ENV{ID_BUS}=="bluetooth", SUBSYSTEM=="input", MODE="0664", TAG+="uaccess", SYMLINK+="input/by-id/$env{ID_BUS}-controller-%n-event-joystick"
Offline