Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HID error on macOS 13.3 #281

Closed
oscarsommerer opened this issue Mar 31, 2023 · 6 comments · Fixed by #290
Closed

HID error on macOS 13.3 #281

oscarsommerer opened this issue Mar 31, 2023 · 6 comments · Fixed by #290

Comments

@oscarsommerer
Copy link

oscarsommerer commented Mar 31, 2023

Description

Ever since updating to macOS Ventura 13.3 a few days ago headsetcontrol has stopped working for me. I'm getting some very generic sound error messages, eg:

$ headsetcontrol -b
Found Corsair Headset Device!
Requested/supported HID device not found or system error.
 HID Error: Success

I'm not really sure how to debug this further, so any input is appreciated 😄

Headset Name

Corsair VOID PRO Wireless

On which OS does the problem happen?

MacOS

Device information

Detailed Device Information
Device Found
 VendorID: 0x1b1c
ProductID: 0x0a1a
 path: DevSrvsID:4294980423
 serial_number:
 Manufacturer: Corsair
 Product:      Corsair VOID PRO Wireless Gaming Headset
 Interface:    0
 Usage-Page: 0xc Usageid: 0x1

Device Found
 VendorID: 0x1b1c
ProductID: 0x0a1a
 path: DevSrvsID:4294980423
 serial_number:
 Manufacturer: Corsair
 Product:      Corsair VOID PRO Wireless Gaming Headset
 Interface:    0
 Usage-Page: 0xffc5 Usageid: 0x1

Device Found
 VendorID: 0x1b1c
ProductID: 0x0a1a
 path: DevSrvsID:4294980423
 serial_number:
 Manufacturer: Corsair
 Product:      Corsair VOID PRO Wireless Gaming Headset
 Interface:    0
 Usage-Page: 0xff00 Usageid: 0x1
@Sapd
Copy link
Owner

Sapd commented Mar 31, 2023

I verified it, and its a bit weird. Seems that with the new Mac update the interface id changed (to 0), while on a Linux VM it is still 3. So I simply changed it to 0 in the latest master which means that simply the first interface will be used.

@oscarsommerer
Copy link
Author

Ha! Interesting development.

I've installed the latest version and can confirm it started working again. Thanks for the quick fix! 😄

@elaw-fastly
Copy link

elaw-fastly commented Apr 26, 2023

Same issue applies to SteelSeries Arctis 7 on macOS 13.3.1
changing .interface = 0x05 to 0x00 fixed it.

I found someone referencing the issue here: https://developer.apple.com/forums/thread/728001

@Sapd
Copy link
Owner

Sapd commented Apr 27, 2023

Same issue applies to SteelSeries Arctis 7 on macOS 13.3.1 changing .interface = 0x05 to 0x00 fixed it.

I found someone referencing the issue here: https://developer.apple.com/forums/thread/728001

That could be indeed an Apple bug. Maybe it also makes sense to create an issue at the libusb/hidapi repo, so that they also can check.

In theory we can also simply set interfaceid to 0 for all devices which only use one.

@Sapd
Copy link
Owner

Sapd commented Apr 30, 2023

I thought about it again, and I think the best way to fix it, is to change this function:

char* get_hid_path(uint16_t vid, uint16_t pid, int iid, uint16_t usagepageid, uint16_t usageid)

and set iid to 0 for macos. Will reopen the issue until it is done

@Sapd Sapd reopened this Apr 30, 2023
@Sapd Sapd closed this as completed in #290 May 1, 2023
@Sapd
Copy link
Owner

Sapd commented May 19, 2024

WIll keep the code-as is, but for further reference should an issue arise:

Fixed here in HIDAPI: libusb/hidapi#534
Seems like an undocumented property was used, and Apple removed that during an update: libusb/hidapi#531

rpbaptist pushed a commit to rpbaptist/HeadsetControl that referenced this issue May 31, 2024
Mac seems to user a different
interfaceid now
We simply take now the first
enumerated interfaceid (0)

Fixes Sapd#281
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants