Skip to content

Commit

Permalink
Fixed DualSense controllers not being picked up by the HIDAPI driver
Browse files Browse the repository at this point in the history
The hidraw device may take additional time to get the correct permissions for us to open it. In my tests on Steam Deck hardware, this ranges between 5-8ms.
  • Loading branch information
slouken committed Jun 18, 2023
1 parent 4e81b4e commit c6ee978
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion src/hidapi/linux/hid.c
Original file line number Diff line number Diff line change
Expand Up @@ -1096,7 +1096,17 @@ hid_device * HID_API_EXPORT hid_open_path(const char *path)
return NULL;
}

dev->device_handle = open(path, O_RDWR | O_CLOEXEC);
const int MAX_ATTEMPTS = 10;
int attempt;
for (attempt = 1; attempt <= MAX_ATTEMPTS; ++attempt) {
dev->device_handle = open(path, O_RDWR | O_CLOEXEC);
if (dev->device_handle < 0 && errno == EACCES) {
/* udev might be setting up permissions, wait a bit and try again */
usleep(1 * 1000);
continue;
}
break;
}

if (dev->device_handle >= 0) {
int res, desc_size = 0;
Expand Down

0 comments on commit c6ee978

Please sign in to comment.