Sapd / HeadsetControl

Sidetone and Battery status for Logitech G930, G533, G633, G933 SteelSeries Arctis 7/PRO 2019 and Corsair VOID (Pro) in Linux and MacOSX
GNU General Public License v3.0
1.43k stars 174 forks source link

Support for HyperX Cloud III (with wire) #346

Closed AdamGardelov closed 4 months ago

AdamGardelov commented 4 months ago

Description

I would really appreciate if could add support for the wired version of HyperX Cloud III. I need to be able to turn of the mic monitoring/side signal

Headset Name

HyperX Cloud III

Device information

Detailed Device Information ``` Device Found VendorID: 0x03f0 ProductID: 0x089d path: /dev/hidraw6 serial_number: 000000000000 Manufacturer: HP, Inc Product: HyperX Cloud III Interface: 3 Usage-Page: 0xc Usageid: 0x1 Device Found VendorID: 0x03f0 ProductID: 0x089d path: /dev/hidraw6 serial_number: 000000000000 Manufacturer: HP, Inc Product: HyperX Cloud III Interface: 3 Usage-Page: 0x1c0 Usageid: 0x1 Device Found VendorID: 0x03f0 ProductID: 0x089d path: /dev/hidraw6 serial_number: 000000000000 Manufacturer: HP, Inc Product: HyperX Cloud III Interface: 3 Usage-Page: 0x170f Usageid: 0x1 Device Found VendorID: 0x03f0 ProductID: 0x089d path: /dev/hidraw6 serial_number: 000000000000 Manufacturer: HP, Inc Product: HyperX Cloud III Interface: 3 Usage-Page: 0xffc0 Usageid: 0x1 ```

New Device Implementation Checklist

github-actions[bot] commented 4 months ago

Hello 👋

Thank you for reaching out and expressing interest in having support for a new headset. We appreciate your willingness to contribute to the project!

In order to create a implementation for a specific headset, we need to be able to reverse-engineer and test the implementation on that particular device. Explicitly speaking, only people who actually own the headset, can implement that request.

👉 If you're interested in adding support for a specific headset, we recommend taking a look at our wiki to get started.

📝 If you encounter any problems while using WireShark, we would be more than happy to help. Simply post screenshots and data on your progress.

AdamGardelov commented 4 months ago

This is my finding from Wireshark.

ON

00000000  20 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  
0000002E  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00                                                                                            . . . . . . . . . . . . . . . .                                                              

OFF

00000000  20 86 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  
0000002E  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Sapd commented 4 months ago

The headers are missing. What does WireShark tell you on the "Setup Data" section?

AdamGardelov commented 4 months ago

This is off:

image

0000   1c 00 70 02 56 31 8d 9a ff ff 00 00 00 00 1b 00   ..p.V1..........
0010   00 02 00 09 00 00 02 46 00 00 00 00 21 09 20 03   .......F....!. .
0020   03 00 3e 00 20 86 00 00 00 00 00 00 00 00 00 00   ..>. ...........
0030   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0040   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0050   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0060   00 00                                             ..

This is on, witch makes 2 requests:

1. image

0000   1c 00 70 02 56 31 8d 9a ff ff 00 00 00 00 1b 00   ..p.V1..........
0010   00 02 00 09 00 00 02 46 00 00 00 00 21 09 20 03   .......F....!. .
0020   03 00 3e 00 20 05 00 00 00 00 00 00 00 00 00 00   ..>. ...........
0030   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0040   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0050   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0060   00 00                                             ..
  1. image

0000   1c 00 10 b5 c7 3a 8d 9a ff ff 00 00 00 00 1b 00   .....:..........
0010   00 02 00 09 00 00 02 46 00 00 00 00 21 09 20 03   .......F....!. .
0020   03 00 3e 00 20 86 01 00 00 00 00 00 00 00 00 00   ..>. ...........
0030   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0040   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0050   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0060   00 00                                             ..

Forgot to add that the function i need is to turn of the sidetone. It is a on/off-switch in their software.

Sapd commented 4 months ago

I think this should work, you can try:

headsetcontrol --dev -- --device 0x03f0:0x089d  --send-feature "0x20 0x05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"

and

headsetcontrol --dev -- --device 0x03f0:0x089d  --send-feature "0x20 0x86 0x01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
AdamGardelov commented 4 months ago

Sadly this gives "Couldn't open device."

Sapd commented 4 months ago

Sadly this gives "Couldn't open device."

You might have to run it as root if you do not have the udev rules installed

AdamGardelov commented 4 months ago

Thanks, running as root worked. But none of the commands turned sideton off unfortunately

Sapd commented 4 months ago

I didnt see that you had 3 payloads there.

What about

headsetcontrol --dev -- --device 0x03f0:0x089d  --send-feature "0x20 0x86 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
AdamGardelov commented 4 months ago

It worked!! if you want to add this device to the repo:

This is On:

headsetcontrol --dev -- --device 0x03f0:0x089d  --send-feature "0x20 0x86 0x01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"

And this is off:

headsetcontrol --dev -- --device 0x03f0:0x089d  --send-feature "0x20 0x86 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"

Thanks for your help man, really appreciate it! Support 10/10!

Sapd commented 4 months ago

I included it in the hyperx branch: https://github.com/Sapd/HeadsetControl/pull/348. Can you try it?

First delete the build folder: rm -r build Then:

git pull
git checkout hyperx
mkdir build
cd build
cmake ..
make
AdamGardelov commented 4 months ago

Works perfect! Thanks!