Off-Topic > Off-Topic - Tiny Core Lounge
[Solved] xbox controller not working on TCL16 x86_64
GNUser:
--- Quote from: patrikg on December 30, 2025, 02:01:09 PM ---I think you can solved it with strace, but i think you need a lot of storage :)
--- End quote ---
strace of game with and without sudo is attached. Before stopping the strace I used the gamepad at game's title screen.
patrikg:
I think when you start the game with the shell script, it fork's it self.
So you need to strace with the follow options to also trace to child's.
--- Code: ---strace -f
--- End code ---
GNUser:
--- Quote from: patrikg on December 30, 2025, 02:46:17 PM ---So you need to strace with the follow options to also trace to child's.
--- Code: ---strace -f
--- End code ---
--- End quote ---
Oops. Of course. I used the -f flag this time. As expected, the output is much more extensive. I uploaded the results here:
http://files.dantas.airpost.net/public/sudo.txt
http://files.dantas.airpost.net/public/no_sudo.txt
GNUser:
Hi patrikg. Your idea of running strace -f led me to the answer :) :) :)
There's a bunch of "Permission denied" lines in no_sudo.txt:
--- Code: ---[pid 1770] stat("/dev/input/event1", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 65), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event1", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event2", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 66), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event2", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event0", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 64), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event0", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event3", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 67), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event3", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event4", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 68), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event4", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event5", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 69), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event5", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event6", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 70), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event6", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event7", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 71), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event7", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event11", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 75), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event11", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event10", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 74), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event10", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event9", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 73), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event9", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event14", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 78), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event14", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event8", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 72), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event8", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event12", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 76), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event12", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event13", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 77), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event13", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event15", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 79), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event15", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event16", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 80), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event16", O_RDONLY) = -1 EACCES (Permission denied)
--- End code ---
So it seems that the game needs permission to access more than just /dev/input/js0 inside of /dev/input/ for the gamepad to work.
The solution turned out to be simple, just running these commands (after plugging in the gamepad, before launching the game):
--- Code: ---$ sudo chown -R root:staff /dev/input
$ sudo chmod -R 777 /dev/input
--- End code ---
After that, the gamepad works without needing to use sudo when launching the game.
patrikg, thank you for leading me to the solution. And many thanks to you, Rich, as always, for your natural intelligence, time, and goodwill :)
Thread may be marked as Solved! ;D
patrikg:
Funny thing I was writing this, you was faster and posted your solution:
Strace to the resq.That app has solved lots of my problems.
Do you see
(Permission denied)
Maybe you need to change the rights to that directory.
--- Code: ---$ grep /dev/input no_sudo.txt
[pid 1770] inotify_add_watch(8, "/dev/input", IN_ATTRIB|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE) = 1
[pid 1770] stat("/dev/input", {st_mode=S_IFDIR|0775, st_size=540, ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 9
[pid 1770] stat("/dev/input/event1", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 65), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event1", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event2", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 66), ...}) = 0
[pid 1770] openat(AT_FDCWD, "/dev/input/event2", O_RDONLY) = -1 EACCES (Permission denied)
[pid 1770] stat("/dev/input/event0", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 64), ...}) = 0
--- End code ---
--- Code: ---$ grep /dev/input sudo.txt
[pid 2058] inotify_add_watch(8, "/dev/input", IN_ATTRIB|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE) = 1
[pid 2058] stat("/dev/input", {st_mode=S_IFDIR|0775, st_size=540, ...}) = 0
[pid 2058] openat(AT_FDCWD, "/dev/input", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 9
[pid 2058] stat("/dev/input/event1", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 65), ...}) = 0
[pid 2058] openat(AT_FDCWD, "/dev/input/event1", O_RDONLY) = 10
[pid 2058] stat("/dev/input/event2", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 66), ...}) = 0
[pid 2058] openat(AT_FDCWD, "/dev/input/event2", O_RDONLY) = 10
[pid 2058] stat("/dev/input/event0", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 64), ...}) = 0
[pid 2058] openat(AT_FDCWD, "/dev/input/event0", O_RDONLY) = 10
[pid 2058] stat("/dev/input/event3", {st_mode=S_IFCHR|0640, st_rdev=makedev(13, 67), ...}) = 0
--- End code ---
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version