pwr-Solaar / Solaar

Linux device manager for Logitech devices
https://pwr-solaar.github.io/Solaar
GNU General Public License v2.0
5.54k stars 410 forks source link

Mute issues with Logitech G935 with "Divert G Keys" enabled #1829

Closed yesrod closed 2 years ago

yesrod commented 2 years ago

Information

``` Solaar version 1.1.7 USB and Bluetooth Devices 1: G935 Gaming Headset Device path : /dev/hidraw2 USB id : 046d:0A87 Codename : G935 Headset Kind : headset Protocol : HID++ 4.2 Serial number: Model ID: 000000000A87 Unit ID: FFFFFFFF Firmware: U1 29.00.B0012 Supports 9 HID++ 2.0 features: 0: ROOT {0000} V0 1: FEATURE SET {0001} V0 2: DEVICE FW VERSION {0003} V2 Firmware: Firmware U1 29.00.B0012 0A87 Unit ID: FFFFFFFF Model ID: 000000000A87 Transport IDs: {'btid': '0000', 'btleid': '0000'} 3: DEVICE NAME {0005} V0 Name: G935 Gaming Headset Kind: None 4: COLOR LED EFFECTS {8070} V0 5: GKEY {8010} V0 Divert G Keys (saved): False Divert G Keys : False 6: EQUALIZER {8310} V0 7: SIDETONE {8300} V0 Sidetone (saved): 0 Sidetone : 0 8: ADC MEASUREMENT {1F20} V0 Battery status unavailable. Battery status unavailable. ```
``` - 1.1.7 - _NAME: G935 Gaming Headset _absent: [hi-res-scroll, lowres-scroll-mode, hires-smooth-invert, hires-smooth-resolution, hires-scroll-mode, smart-shift, thumb-scroll-invert, thumb-scroll-mode, onboard_profiles, report_rate, pointer_speed, dpi, speed-change, backlight, backlight-timed, fn-swap, reprogrammable-keys, persistent-remappable-keys, divert-keys, disable-keyboard-keys, crown-smooth, divert-crown, m-key-leds, mr-key-led, multiplatform, change-host, gesture2-gestures, gesture2-divert, gesture2-params, equalizer, scroll-ratchet] _battery: 0 _modelId: 000000000A87 _sensitive: {divert-gkeys: true} _unitId: FFFFFFFF divert-gkeys: true sidetone: 0 ```

Describe the bug When "Divert G Keys" is enabled for a Logitech G935 headset:

To Reproduce Steps to reproduce the behavior:

  1. Enable "Divert G Keys" for a G935 headset
  2. Press the mute button on the microphone. Observe that the microphone is not muted.
  3. Lift the microphone boom. Observe that the microphone is muted. Lower the microphone boom, and observe that the microphone does not unmute as expected.
  4. Disable "Divert G Keys" for the headset. Observe that all mic muting/unmuting functions work as expected again.

Screenshots N/A

Additional context I am unable to provide any relevant logs. Neither the mute button nor the mic boom lift/lower actions provide any output when Solaar is run with the -ddd parameter.

I also could not find a way to manually assign either the mic mute button or the mic boom lift/lower actions to a rule to workaround the issue.

pfps commented 2 years ago

It is entirely possible that this is just what diverting the G keys on the G935 does. There are lots of quirks in this kind of hardware.

What output is produced by the other buttons when the G keys are diverted?

It would also be useful to know how many G keys are on the headset - not the number labelled with Gn but the number the device reports. To find out you need to clone this repository using git, cd to the cloned directory, and run the hidconsole tool. Run ./tools/hidconsole /dev/hidrawN where N makes the path for the headset (from solaar show). Send the command 11 01 0500 and post the result.

yesrod commented 2 years ago

What output is produced by the other buttons when the G keys are diverted?

If you mean debug output from solaar -ddd, nothing. I get no output from the mute button or from raising/lowering the mic.

It would also be useful to know how many G keys are on the headset - not the number labelled with Gn but the number the device reports. To find out you need to clone this repository using git, cd to the cloned directory, and run the hidconsole tool. Run ./tools/hidconsole /dev/hidrawN where N makes the path for the headset (from solaar show). Send the command 11 01 0500 and post the result.

Output is pasted below. In theory, there are only three G keys on this headset, though the hardware may believe differently.

(Edit: re-ran and updated the command output, original output was corrupted a bit for some reason (terminal width?))

adam@abaddon-linux:~/git/Solaar$ solaar show
Solaar version 1.1.7

USB and Bluetooth Devices

  1: G935 Gaming Headset
     Device path  : /dev/hidraw7
     USB id       : 046d:0A87
     Codename     : G935 Headset
     Kind         : headset
     Protocol     : HID++ 4.2
     Serial number: 
     Model ID:      000000000A87
     Unit ID:       FFFFFFFF
          Firmware: U1  29.00.B0012
     Supports 9 HID++ 2.0 features:
         0: ROOT                   {0000} V0     
         1: FEATURE SET            {0001} V0     
         2: DEVICE FW VERSION      {0003} V2     
            Firmware: Firmware U1  29.00.B0012 0A87
            Unit ID: FFFFFFFF  Model ID: 000000000A87  Transport IDs: {'btid': '0000', 'btleid': '0000'}
         3: DEVICE NAME            {0005} V0     
            Name: G935 Gaming Headset
            Kind: None
         4: COLOR LED EFFECTS      {8070} V0     
         5: GKEY                   {8010} V0     
            Divert G Keys (saved): True
            Divert G Keys        : False
         6: EQUALIZER              {8310} V0     
         7: SIDETONE               {8300} V0     
            Sidetone (saved): 0
            Sidetone        : 0
         8: ADC MEASUREMENT        {1F20} V0     
            Battery status unavailable.
     Battery status unavailable.
adam@abaddon-linux:~/git/Solaar$ ./tools/hidconsole /dev/hidraw7 
.. Opening device /dev/hidraw7
.. Opened handle 3, vendor b'Logitech' product b'G935 Gaming Headset' serial None.
.. Press ^C/^D to exit, or type hex bytes to write to the device.
?? Input: 11 01 0500
<< (   3.462) [11 01 0500 ] b'\x11\x01\x05\x00'
>> (   3.464) [11 FF FF05 000A0000000000000000000000000000] b'\x11\xff\xff\x05\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
?? Input: 
.. Closing handle 3
adam@abaddon-linux:~/git/Solaar$ 
pfps commented 2 years ago

Are there keys on the headset marked with G1, ...? If so, what do they produce when G keys are diverted.

The hidconsole test didn't produce useful output. Please try with 11 FF 0500 000000000000.

yesrod commented 2 years ago

Are there keys on the headset marked with G1, ...? If so, what do they produce when G keys are diverted.

There are three keys on the headset marked G1 through G3. When G keys are diverted, I can create rules for them and program them as expected. That part is actually working great.

The hidconsole test didn't produce useful output. Please try with 11 FF 0500 000000000000.

adam@abaddon-linux:~/git/Solaar$ ./tools/hidconsole /dev/hidraw7 
.. Opening device /dev/hidraw7
.. Opened handle 3, vendor b'Logitech' product b'G935 Gaming Headset' serial None.
.. Press ^C/^D to exit, or type hex bytes to write to the device.
?? Input: 11 FF 0500 000000000000
<< (   2.949) [11 FF 0500 000000000000] b'\x11\xff\x05\x00\x00\x00\x00\x00\x00\x00'
>> (   2.990) [11 FF 0500 03000000000000000000000000000000] b'\x11\xff\x05\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
?? Input: 
.. Closing handle 3
pfps commented 2 years ago

OK that is saying that there are 3 G keys, which appears to match the number of G keys on the headset.

But there is that side effect of diverting G keys. It appears that that is just how the headset works and there is nothing that Solaar can do about it. So this is not a Solaar bug.

yesrod commented 2 years ago

That's disappointing. Thanks for checking.