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.44k stars 176 forks source link

Device Request: CORSAIR VIRTUOSO XT Wireless #177

Closed echo2go closed 1 year ago

echo2go commented 3 years ago

I have tried to compile your code for "CORSAIR VIRTUOSO XT Wireless" but it failed. Maybe you can help to add this headset to your code?

== dmesg ==

[  659.853696] usb 1-2: new full-speed USB device number 12 using xhci_hcd
[  660.002805] usb 1-2: New USB device found, idVendor=1b1c, idProduct=0a64, bcdDevice= 0.00
[  660.002811] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  660.002815] usb 1-2: Product: CORSAIR VIRTUOSO XT Wireless Gaming Receiver
[  660.002818] usb 1-2: Manufacturer: Corsair
[  660.002821] usb 1-2: SerialNumber: 167d7765000700da
[  660.265180] input: Corsair CORSAIR VIRTUOSO XT Wireless Gaming Receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.3/0003:1B1C:0A64.0007/input/input31
[  660.320857] input: Corsair CORSAIR VIRTUOSO XT Wireless Gaming Receiver Consumer Control as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.3/0003:1B1C:0A64.0007/input/input32
[  660.321137] input: Corsair CORSAIR VIRTUOSO XT Wireless Gaming Receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.3/0003:1B1C:0A64.0007/input/input33
[  660.321403] input: Corsair CORSAIR VIRTUOSO XT Wireless Gaming Receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.3/0003:1B1C:0A64.0007/input/input34
[  660.321661] input: Corsair CORSAIR VIRTUOSO XT Wireless Gaming Receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.3/0003:1B1C:0A64.0007/input/input35
[  660.322167] hid-generic 0003:1B1C:0A64.0007: input,hiddev96,hidraw0: USB HID v1.11 Device [Corsair CORSAIR VIRTUOSO XT Wireless Gaming Receiver] on usb-0000:00:14.0-2/input3
[  660.324282] hid-generic 0003:1B1C:0A64.0008: hiddev97,hidraw1: USB HID v1.11 Device [Corsair CORSAIR VIRTUOSO XT Wireless Gaming Receiver] on usb-0000:00:14.0-2/input4

== dmesg END ==
~/HeadsetControl-master $ lsusb | grep -i corsair
Bus 001 Device 012: ID 1b1c:0a64 Corsair CORSAIR VIRTUOSO XT Wireless Gaming Receiver
~/HeadsetControl-master $ 
~/HeadsetControl-master $ 
~/HeadsetControl-master $ cat /etc/udev/rules.d/headsets.rules 
# CORSAIR VIRTUOSO XT Wireless Gaming Receiver
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1b1c", ATTRS{idProduct}=="0a64", TAG+="uaccess"
#SUBSYSTEM=="hidraw", SUBSYSTEM=="usb", ATTRS{idVendor}=="1b1c", ATTRS{idProduct}=="0a64", MODE="0666"
~/HeadsetControl-master $ 
~/HeadsetControl-master $ 
~/HeadsetControl-master $ grep -ni virtuoso src/devices/corsair_void.c 
27:#define ID_CORSAIR_VIRTUOSO_XT_Wireless_Gaming_Receiver    0x0a64
44:    ID_CORSAIR_VIRTUOSO_XT_Wireless_Gaming_Receiver
~/HeadsetControl-master $ 
~/HeadsetControl-master $ 
~/HeadsetControl-master $ ./build/headsetcontrol -b
Found Corsair Headset Device!

Couldn't open device.
~/HeadsetControl-master $
~/HeadsetControl-master $
Sapd commented 2 years ago

Does the same happen, when running it with sudo?

echo2go commented 2 years ago

As root the command didn't came back console.txt

/tmp/HeadsetControl-master/build # whoami
root
/tmp/HeadsetControl-master/build #
/tmp/HeadsetControl-master/build # ./headsetcontrol -h
Headsetcontrol written by Sapd (Denis Arnst)
        https://github.com/Sapd

Parameters
  -s level      Sets sidetone, level must be between 0 and 128
  -b            Checks the battery level
  -n soundid    Makes the headset play a notifiation
  -l 0|1        Switch lights (0 = off, 1 = on)
  -c            Cut unnecessary output
  -i time       Sets inactive time in minutes, time must be between 0 and 90, 0 disables the feature.
  -m            Retrieves the current chat-mix-dial level setting between 0 and 128. Below 64 is the game side and above is the chat side.
  -v 0|1        Turn voice prompts on or off (0 = off, 1 = on)
  -r 0|1        Turn rotate to mute feature on or off (0 = off, 1 = on)

  -u            Outputs udev rules to stdout/console

/tmp/HeadsetControl-master/build #
/tmp/HeadsetControl-master/build # time ./headsetcontrol -b
Found Corsair Headset Device!

^C

real    10m43,082s
user    0m0,000s
sys     0m0,006s
LeonardoNozaki commented 2 years ago

I'm trying to use HeadsetControl with Corsair Virtuoso SE, but something wrong :(

I'm using Ubuntu 20.04, I tested with Corsair Virtuoso SE USB and Corsair Virtuoso SE Wifi, but both returns "No supported headset found"

Any suggestion?

~  HeadsetControl git:(master) sudo whoami
root
~
~  HeadsetControl git:(master) sudo lsusb | grep -i corsair 
Bus 001 Device 011: ID 1b1c:0a3f Corsair CORSAIR VIRTUOSO SE USB Gaming Headset
Bus 001 Device 008: ID 258a:002a Corsair CORSAIR VIRTUOSO SE USB Gaming Headset
~
~  HeadsetControl git:(master) sudo cat /etc/udev/rules.d/headsets.rules
cat: /etc/udev/rules.d/headsets.rules: No such file or directory
~  HeadsetControl git:(master) sudo grep -ni virtuoso src/devices/corsair_void.c
~  HeadsetControl git:(master) sudo ./build/headsetcontrol -b
No supported headset found
~  HeadsetControl git:(master) sudo time ./build/headsetcontrol -b
No supported headset found
Command exited with non-zero status 1
0.00user 0.01system 0:00.01elapsed 92%CPU (0avgtext+0avgdata 2672maxresident)k
0inputs+0outputs (0major+117minor)pagefaults 0swaps
~  HeadsetControl git:(master) sudo ./build/headsetcontrol -h
Headsetcontrol written by Sapd (Denis Arnst)
    https://github.com/Sapd

Parameters
  -s, --sidetone level      Sets sidetone, level must be between 0 and 128
  -b, --battery         Checks the battery level
  -n, --notificate soundid  Makes the headset play a notifiation
  -l, --light 0|1       Switch lights (0 = off, 1 = on)
  -c, --short-output        Use more machine-friendly output 
  -i, --inactive-time time  Sets inactive time in minutes, time must be between 0 and 90, 0 disables the feature.
  -m, --chatmix         Retrieves the current chat-mix-dial level setting between 0 and 128. Below 64 is the game side and above is the chat side.
  -v, --voice-prompt 0|1    Turn voice prompts on or off (0 = off, 1 = on)
  -r, --rotate-to-mute 0|1  Turn rotate to mute feature on or off (0 = off, 1 = on)
  -?, --capabilities        Print every feature headsetcontrol supports of the connected headset

  -u    Outputs udev rules to stdout/console

~  HeadsetControl git:(master)
echo2go commented 2 years ago

Did you see that line?

~  HeadsetControl git:(master) sudo cat /etc/udev/rules.d/headsets.rules
cat: /etc/udev/rules.d/headsets.rules: No such file or directory

Seems the rule does not exists.

and this one?

~  HeadsetControl git:(master) sudo grep -ni virtuoso src/devices/corsair_void.c

no match found in your source.

echo2go commented 2 years ago

I have found https://github.com/Sapd/HeadsetControl/wiki/Development#adding-a-new-headset and try to capture the data. First I download USBlyzer and installed in Windows 10 with iCUE v4.22.203. Then looked for the sidetone slider and play around it. I have made a screenshot and a dump of the trace. Hope it helps.

usbliz

corsair_virtuoso_xt_tracert.zip

migmolrod commented 2 years ago

I'm also trying the Corsair Virtuoso XT in Wireless mode, device id = 0x0a64 (in USB mode it's 0x0a63, I think).

> grep -ni virtuoso src/devices/corsair_void.c
27:#define ID_CORSAIR_VIRTUOSO_XT_RECEIVER    0x0a64
44:    ID_CORSAIR_VIRTUOSO_XT_RECEIVER,

What I've tried: Just headsetcontrol (after make install, ie, using /usr/local/bin/headsetcontrol), without and with sudo:

> headsetcontrol -b
Found Corsair Headset Device!
Failed to set/request battery status, because of timeout, try again.

> sudo !!
sudo headsetcontrol -b
Found Corsair Headset Device!
Failed to set/request battery status, because of timeout, try again.

Using the built script (also without and with sudo)

> ./build/headsetcontrol -b
Found Corsair Headset Device!
Failed to set/request battery status, because of timeout, try again.

> sudo !!
sudo ./build/headsetcontrol -b
Found Corsair Headset Device!
Failed to set/request battery status, because of timeout, try again.

I suppose these have a different protocol or internal interfaces or whatever, right?

rsimai commented 2 years ago

FWIW seeing exactly the same. I'd love to at least read the battery.

rsimai commented 2 years ago

for the sake of sharing pain and if anyone wants to join the "constant dropping" party, I approached Corsair support to ask for the protocols and they have been responsive, but finally received the expected:

Unfortunately we can not refer you any further in this matter.
Linux is not supported by any of our software in any capacity at this time.
We have already reached out to the engineering team to find out if the requested information can be provided -- this request was denied.

We appreciate your patience, but unfortunately this is simply something that we are not able to assist you with.
github-actions[bot] commented 1 year ago

This issue is stale because it has been open 300 days with no activity. Remove stale label or comment or this will be closed in 60 days.

github-actions[bot] commented 1 year ago

This issue was closed because it has been stalled with no activity.