pwr-Solaar / Solaar

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

logitech g pro x wireless support #1376

Closed carloscbl closed 2 years ago

carloscbl commented 2 years ago

Information

Hi amazing work! Logitech g pro x wireless https://www.logitechg.com/es-es/products/gaming-audio/pro-x-wireless-headset.html Checking this new headset which is fairly new. Should be already supported or working implicitly or will need support? Thanks

pfps commented 2 years ago

Solaar only handles devices that use Logitech's HID++ interface. This covers most Logitech keyboards, mice, and tablets. There are likely some Logitech headsets that are covered, but most or all are not. How is your headset connected - USB dongle or BlueTooth?

To find out for sure whether your device uses HID++ requires parsing its report descriptors. First, you need to install hidrd-convert. On Fedora this is done via sudo dnf install hidrd - on Ubuntu it is probably sudo apt install hidrd. Then run this script while the headset is connected and active and post the result

#!/usr/bin/bash

for f in /sys/class/hidraw/hidraw*
do
    echo DEVICE $f
    cat $f/device/uevent
    hidrd-convert -o spec $f/device/report_descriptor
    echo
done
carloscbl commented 2 years ago

Hi, it is USB dongle uevent: DRIVER=hid-generic HID_ID=0003:0000046D:00000ABA HID_NAME=Logitech PRO X Wireless Gaming Headset HID_PHYS=usb-0000:03:00.0-3/input3 HID_UNIQ= MODALIAS=hid:b0003g0001v0000046Dp00000ABA

The descriptor i've been unable to install anything related to hidrd in ubuntu > 18.04 seems no longer supported Find attached as txt the file, i just : sudo cat /sys/class/hidraw/hidraw4/device/report_descriptor | tee descriptor.txt

descriptor.txt

thank you

pfps commented 2 years ago

Thanks. That decodes to

``` Usage Page (Consumer), ; Consumer (0Ch) Usage (Consumer Control), ; Consumer control (01h, application collection) Collection (Application), Report ID (1), Usage (Volume Inc), ; Volume increment (E9h, re-trigger control) Usage (Volume Dec), ; Volume decrement (EAh, re-trigger control) Report Size (1), Report Count (2), Logical Minimum (0), Logical Maximum (1), Input (Variable), Report Size (6), Report Count (1), Input (Constant, Variable), Report Size (24), Input (Constant, Variable), End Collection, Usage Page (FF43h), ; FF43h, vendor-defined Usage (0202h), Collection (Application), Report ID (17), Report Count (19), Report Size (8), Logical Maximum (255), Usage (02h), Input, Usage (02h), Output, End Collection, Usage Page (FF00h), ; FF00h, vendor-defined Usage (01h), Collection (Application), Usage (0Ah), Collection (Logical), Report ID (255), Report Count (1), Report Size (32), Usage (0Bh), Logical Minimum (-2147483647), Logical Maximum (2147483647), Input (Variable), End Collection, Usage (22h), Collection (Logical), Report ID (144), Usage (33h), Report Size (8), Logical Minimum (0), Logical Maximum (255), Input (Variable), Usage (34h), Input (Variable), Usage Page (Desktop), ; Generic desktop controls (01h) Usage (Byte Count), ; Byte count (3Bh, dynamic value) Report Size (16), Logical Maximum (65535), Input (Variable), Usage Page (FF00h), ; FF00h, vendor-defined Usage (0Ah), Collection (Logical), Usage Page (Ordinal), ; Ordinal (0Ah) Usage Minimum (01h), Usage Maximum (0Ah), Report Count (10), Report Size (8), Logical Maximum (255), Input (Variable), End Collection, End Collection, Usage Page (FF00h), ; FF00h, vendor-defined Usage (22h), Collection (Logical), Report ID (144), Usage (33h), Report Count (1), Output (Variable), Usage (34h), Output (Variable), Usage Page (Desktop), ; Generic desktop controls (01h) Usage (Byte Count), ; Byte count (3Bh, dynamic value) Report Size (16), Logical Maximum (65535), Output (Variable), Usage Page (FF00h), ; FF00h, vendor-defined Usage (0Ah), Collection (Logical), Usage Page (Ordinal), ; Ordinal (0Ah) Usage Minimum (01h), Usage Maximum (0Ah), Report Count (10), Report Size (8), Logical Maximum (255), Output (Variable), End Collection, End Collection, Usage Page (FF00h), ; FF00h, vendor-defined Usage (22h), Collection (Logical), Report ID (196), Usage (33h), Report Count (1), Input (Variable), Usage (34h), Input (Variable), Usage Page (Desktop), ; Generic desktop controls (01h) Usage (Byte Count), ; Byte count (3Bh, dynamic value) Report Size (16), Logical Maximum (65535), Input (Variable), Usage Page (FF00h), ; FF00h, vendor-defined Usage (0Ah), Collection (Logical), Usage Page (Ordinal), ; Ordinal (0Ah) Usage Minimum (01h), Usage Maximum (3Bh), Report Count (59), Report Size (8), Logical Maximum (255), Input (Variable), End Collection, End Collection, Usage Page (FF00h), ; FF00h, vendor-defined Usage (22h), Collection (Logical), Report ID (196), Usage (33h), Report Count (1), Output (Variable), Usage (34h), Output (Variable), Usage Page (Desktop), ; Generic desktop controls (01h) Usage (Byte Count), ; Byte count (3Bh, dynamic value) Report Size (16), Logical Maximum (65535), Output (Variable), Usage Page (FF00h), ; FF00h, vendor-defined Usage (0Ah), Collection (Logical), Usage Page (Ordinal), ; Ordinal (0Ah) Usage Minimum (01h), Usage Maximum (3Bh), Report Count (59), Report Size (8), Logical Maximum (255), Output (Variable), End Collection, End Collection, Usage Page (FF00h), ; FF00h, vendor-defined Usage (0Ch), Collection (Logical), Report ID (255), Usage Page (Desktop), ; Generic desktop controls (01h) Usage (Byte Count), ; Byte count (3Bh, dynamic value) Report Count (1), Feature (Variable), Usage (Counted Buffer), ; Counted buffer (3Ah, logical collection) Collection (Logical), Usage Page (Ordinal), ; Ordinal (0Ah) Usage Minimum (01h), Usage Maximum (3Eh), Report Count (62), Feature (Variable), End Collection, End Collection, Usage Page (FF00h), ; FF00h, vendor-defined Usage (0Ch), Collection (Logical), Report ID (226), Usage Page (Desktop), ; Generic desktop controls (01h) Usage (Byte Count), ; Byte count (3Bh, dynamic value) Report Count (1), Input (Variable), Usage (Counted Buffer), ; Counted buffer (3Ah, logical collection) Collection (Logical), Usage Page (Ordinal), ; Ordinal (0Ah) Usage Minimum (01h), Usage Maximum (3Eh), Report Count (62), Input (Variable), End Collection, End Collection, End Collection ```

The relevant part is

Usage Page (FF43h),                     ; FF43h, vendor-defined
Usage (0202h),
Collection (Application),
    Report ID (17),
    Report Count (19),
    Report Size (8),
    Logical Maximum (255),
    Usage (02h),
    Input,
    Usage (02h),
    Output,
End Collection,

Which seems to indicate that Solaar might be able to control this device.

Please provide output of lsusb -vv -d 046d:0ABA to show which USB interfaces the device presents.

carloscbl commented 2 years ago

Result

``` sudo lsusb -vv -d 046d:0ABA Bus 001 Device 002: ID 046d:0aba Logitech, Inc. PRO X Wireless Gaming Headset Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x046d Logitech, Inc. idProduct 0x0aba bcdDevice 1.00 iManufacturer 3 Logitech iProduct 4 PRO X Wireless Gaming Headset iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0101 bNumInterfaces 4 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 1 Control Device bInterfaceProtocol 0 iInterface 1 PRO X Wireless Gaming Headset AudioControl Interface Descriptor: bLength 10 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdADC 1.00 wTotalLength 0x0047 bInCollection 2 baInterfaceNr(0) 1 baInterfaceNr(1) 2 AudioControl Interface Descriptor: bLength 12 bDescriptorType 36 bDescriptorSubtype 2 (INPUT_TERMINAL) bTerminalID 6 wTerminalType 0x0201 Microphone bAssocTerminal 0 bNrChannels 1 wChannelConfig 0x0000 iChannelNames 0 iTerminal 0 AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 6 (FEATURE_UNIT) bUnitID 3 bSourceID 6 bControlSize 1 bmaControls(0) 0x03 Mute Control Volume Control bmaControls(1) 0x00 iFeature 0 AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 7 wTerminalType 0x0101 USB Streaming bAssocTerminal 0 bSourceID 3 iTerminal 0 AudioControl Interface Descriptor: bLength 12 bDescriptorType 36 bDescriptorSubtype 2 (INPUT_TERMINAL) bTerminalID 1 wTerminalType 0x0101 USB Streaming bAssocTerminal 0 bNrChannels 2 wChannelConfig 0x0003 Left Front (L) Right Front (R) iChannelNames 0 iTerminal 0 AudioControl Interface Descriptor: bLength 10 bDescriptorType 36 bDescriptorSubtype 6 (FEATURE_UNIT) bUnitID 2 bSourceID 1 bControlSize 1 bmaControls(0) 0x03 Mute Control Volume Control bmaControls(1) 0x00 bmaControls(2) 0x00 iFeature 0 AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 5 wTerminalType 0x0301 Speaker bAssocTerminal 0 bSourceID 2 iTerminal 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 AudioStreaming Interface Descriptor: bLength 7 bDescriptorType 36 bDescriptorSubtype 1 (AS_GENERAL) bTerminalLink 7 bDelay 0 frames wFormatTag 0x0001 PCM AudioStreaming Interface Descriptor: bLength 26 bDescriptorType 36 bDescriptorSubtype 2 (FORMAT_TYPE) bFormatType 1 (FORMAT_TYPE_I) bNrChannels 1 bSubframeSize 2 bBitResolution 16 bSamFreqType 6 Discrete tSamFreq[ 0] 16000 tSamFreq[ 1] 22050 tSamFreq[ 2] 24000 tSamFreq[ 3] 32000 tSamFreq[ 4] 44100 tSamFreq[ 5] 48000 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 13 Transfer Type Isochronous Synch Type Synchronous Usage Type Data wMaxPacketSize 0x0090 1x 144 bytes bInterval 1 bRefresh 0 bSynchAddress 0 AudioStreaming Endpoint Descriptor: bLength 7 bDescriptorType 37 bDescriptorSubtype 1 (EP_GENERAL) bmAttributes 0x01 Sampling Frequency bLockDelayUnits 0 Undefined wLockDelay 0x0000 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 1 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 2 bNumEndpoints 1 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 AudioStreaming Interface Descriptor: bLength 7 bDescriptorType 36 bDescriptorSubtype 1 (AS_GENERAL) bTerminalLink 1 bDelay 0 frames wFormatTag 0x0001 PCM AudioStreaming Interface Descriptor: bLength 26 bDescriptorType 36 bDescriptorSubtype 2 (FORMAT_TYPE) bFormatType 1 (FORMAT_TYPE_I) bNrChannels 2 bSubframeSize 2 bBitResolution 16 bSamFreqType 6 Discrete tSamFreq[ 0] 16000 tSamFreq[ 1] 22050 tSamFreq[ 2] 24000 tSamFreq[ 3] 32000 tSamFreq[ 4] 44100 tSamFreq[ 5] 48000 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 13 Transfer Type Isochronous Synch Type Synchronous Usage Type Data wMaxPacketSize 0x0120 1x 288 bytes bInterval 1 bRefresh 0 bSynchAddress 0 AudioStreaming Endpoint Descriptor: bLength 7 bDescriptorType 37 bDescriptorSubtype 1 (EP_GENERAL) bmAttributes 0x01 Sampling Frequency bLockDelayUnits 0 Undefined wLockDelay 0x0000 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 2 PRO X Wireless Gaming Headset HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 384 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 1 can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0000 (Bus Powered) ```
pfps commented 2 years ago

With any luck, PR #1378 should provide support for this device. Set up this PR and run bin/solaar -d show and then post the output.

To download and use Solar from its GitHub repository

git clone https://github.com/pwr-Solaar/Solaar.git
cd Solaar

Run Solaar as bin/solaar from this directory.

To run PR #1378, first clone Solaar if you have not already done so and cd to the clone directory. The first time you download the pull request, fetch it into a new branch and checkout that branch, as in:

git fetch origin pull/1378/head:pull_1378
git checkout pull_1378

To download a new version of the pull request, fetch it and then set your pull branch to the new fetch, as in:

git checkout pull_1378
git fetch origin pull/1378/head
git reset --hard FETCH_HEAD
carloscbl commented 2 years ago

Hi,

GUI image terminal

:~/Solaar/bin$ sudo ./solaar -d show
10:14:39,673  WARNING [MainThread] logitech_receiver.diversion: X11 not available - rules will not be activated
Traceback (most recent call last):
  File "/home/cbernal/Solaar/lib/logitech_receiver/diversion.py", line 52, in <module>
    disp_prog = Display()
  File "/usr/lib/python3/dist-packages/Xlib/display.py", line 89, in __init__
    self.display = _BaseDisplay(display)
  File "/usr/lib/python3/dist-packages/Xlib/display.py", line 71, in __init__
    protocol_display.Display.__init__(self, *args, **keys)
  File "/usr/lib/python3/dist-packages/Xlib/protocol/display.py", line 166, in __init__
    raise error.DisplayConnectionError(self.display_name, r.reason)
Xlib.error.DisplayConnectionError: Can't connect to display ":1": b'No protocol specified\n'
Wired Devices
10:14:39,692     INFO [MainThread] logitech_receiver.base: New lock 8
10:14:39,999    ERROR [MainThread] logitech_receiver.base: write failed, assuming handle 8 no longer available
solaar: error: Traceback (most recent call last):
  File "/home/cbernal/Solaar/lib/logitech_receiver/base.py", line 217, in write
    _hid.write(int(handle), wdata)
  File "/home/cbernal/Solaar/lib/hidapi/udev.py", line 342, in write
    raise OSError(_errno.EIO, 'written %d bytes out of expected %d' % (bytes_written, len(data)))
OSError: [Errno 5] written 0 bytes out of expected 7

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/cbernal/Solaar/lib/solaar/cli/__init__.py", line 204, in run
    m.run(c, args, _find_receiver, _find_device)
  File "/home/cbernal/Solaar/lib/solaar/cli/show.py", line 293, in run
    _print_device(d, num=dev_num)
  File "/home/cbernal/Solaar/lib/solaar/cli/show.py", line 89, in _print_device
    dev.ping()
  File "/home/cbernal/Solaar/lib/logitech_receiver/device.py", line 400, in ping
    protocol = _base.ping(self.handle or self.receiver.handle, self.number, long_message=self.bluetooth)
  File "/home/cbernal/Solaar/lib/logitech_receiver/base.py", line 520, in ping
    write(ihandle, devnumber, request_data, long_message)
  File "/home/cbernal/Solaar/lib/logitech_receiver/base.py", line 221, in write
    raise NoReceiver(reason=reason)
logitech_receiver.base.NoReceiver: {'reason': OSError(5, 'written 0 bytes out of expected 7')}
pfps commented 2 years ago

Solaar needs write access to the raw device and it looks as if this is not being set up.

Do you still have the Solaar udev rule installed? It is usually installed /etc/udev/rules.d/42-logitech-unify-permissions.rules Do you have write permissions on /dev/hidraw0 (or whichever node is set up for the headset)? The output of ls -l /dev/hidraw0 should have a '+' after the permission bits. If both of these are the case run bin/solaar -dd and post the output.

pfps commented 2 years ago

By the way, Solaar should not normally be run using sudo. i didn't notice this before, which makes my comments about the udev rule and write permissions less important.

Try ensuring that /dev/hidraw? permissions are correctly set up and then run bin/solaar -dd show.

pfps commented 2 years ago

There is a new version of PR #1378. After you try the above try this new version.

carloscbl commented 2 years ago

Hi, i did reinstall the udev rule. And updated to new version:

~/Solaar$ bin/solaar -d  show
Wired Devices
18:49:40,106     INFO [MainThread] logitech_receiver.base: New lock 11
  1: Logitech PRO X Wireless Gaming Headset
     Device path  : /dev/hidraw0
     USB id       : 046d:0ABA
     Codename     : PRO Wireless Headset
     Kind         : headset
     Protocol     : HID++ 4.2
     Serial number: ?
     Model ID:      000000000ABA
     Unit ID:       FFFFFFFF
          Firmware: U1  12.01.B0203
     Supports 7 HID++ 2.0 features:
         0: ROOT                   {0000}   
         1: FEATURE SET            {0001}   
         2: DEVICE FW VERSION      {0003}   
            Firmware: Firmware U1  12.01.B0203 0ABA
            Unit ID: FFFFFFFF  Model ID: 000000000ABA  Transport IDs: {'btid': '0000', 'btleid': '0000'}
         3: DEVICE NAME            {0005}   
            Name: PRO X Wireless Gaming Headset
            Kind: None
         4: EQUALIZER              {8310}   
         5: SIDETONE               {8300}   
         6: ADC MEASUREMENT        {1F20}   
     Battery status unavailable.
``` ~/Solaar$ bin/solaar -dd show 18:49:44,019 DEBUG [MainThread] logitech_receiver.diversion: rule Key assuming action "pressed" for "Brightness Down" 18:49:44,019 DEBUG [MainThread] logitech_receiver.diversion: rule Key assuming action "pressed" for "Brightness Up" 18:49:44,022 DEBUG [MainThread] solaar.ui.tray: using Ayatana AppIndicator3 18:49:44,036 DEBUG [MainThread] hidapi.udev: Found device BID 0003 VID 0000046D PID 0000C07D INTERFACE 0 FILTER 2 18:49:44,036 DEBUG [MainThread] hidapi.udev: Found device BID 0003 VID 0000046D PID 0000C07D INTERFACE 1 FILTER 2 18:49:44,036 DEBUG [MainThread] hidapi.udev: Found device BID 0003 VID 0000046D PID 00000ABA INTERFACE 3 FILTER 3 18:49:44,036 DEBUG [MainThread] solaar.cli: [/dev/hidraw0] => Wired Devices 18:49:44,037 DEBUG [MainThread] logitech_receiver.base: (11) pinging device 255 18:49:44,037 INFO [MainThread] logitech_receiver.base: New lock 11 18:49:44,038 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 001A 00006000000000000000000000000000] 18:49:44,042 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 001A 04026000000000000000000000000000] 1: Logitech PRO X Wireless Gaming Headset Device path : /dev/hidraw0 USB id : 046d:0ABA Codename : PRO Wireless Headset Kind : headset Protocol : HID++ 4.2 18:49:44,042 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 0008 00010000000000000000000000000000] 18:49:44,047 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 0008 01000000000000000000000000000000] 18:49:44,047 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 010D 00000000000000000000000000000000] 18:49:44,052 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 010D 06000000000000000000000000000000] 18:49:44,052 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000C 80600000000000000000000000000000] 18:49:44,057 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000C 00000000000000000000000000000000] Serial number: ? 18:49:44,057 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 0008 00030000000000000000000000000000] 18:49:44,062 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 0008 02000200000000000000000000000000] 18:49:44,062 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 020E 00000000000000000000000000000000] 18:49:44,067 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 020E 01FFFFFFFF0003000000000ABA000000] Model ID: 000000000ABA Unit ID: FFFFFFFF 18:49:44,067 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 020B 00000000000000000000000000000000] 18:49:44,072 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 020B 01FFFFFFFF0003000000000ABA000000] 18:49:44,072 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 021A 00000000000000000000000000000000] 18:49:44,077 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 021A 0055312012010203010ABA0000000000] Firmware: U1 12.01.B0203 Supports 7 HID++ 2.0 features: 18:49:44,077 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000F 21200000000000000000000000000000] 18:49:44,082 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000F 00000000000000000000000000000000] 18:49:44,082 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000A 21300000000000000000000000000000] 18:49:44,087 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000A 00000000000000000000000000000000] 18:49:44,087 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000D 21210000000000000000000000000000] 18:49:44,092 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000D 00000000000000000000000000000000] 18:49:44,092 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 0008 21100000000000000000000000000000] 18:49:44,097 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 0008 00000000000000000000000000000000] 18:49:44,097 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 0008 21110000000000000000000000000000] 18:49:44,102 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 0008 00000000000000000000000000000000] 18:49:44,102 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000A 21500000000000000000000000000000] 18:49:44,107 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000A 00000000000000000000000000000000] 18:49:44,107 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000E 22010000000000000000000000000000] 18:49:44,112 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000E 00000000000000000000000000000000] 18:49:44,112 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000E 1B040000000000000000000000000000] 18:49:44,117 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000E 00000000000000000000000000000000] 18:49:44,117 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000C 22050000000000000000000000000000] 18:49:44,122 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000C 00000000000000000000000000000000] 18:49:44,122 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000D 19820000000000000000000000000000] 18:49:44,127 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000D 00000000000000000000000000000000] 18:49:44,127 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000E 40A00000000000000000000000000000] 18:49:44,132 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000E 00000000000000000000000000000000] 18:49:44,132 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000E 40A20000000000000000000000000000] 18:49:44,137 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000E 00000000000000000000000000000000] 18:49:44,137 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 0008 40A30000000000000000000000000000] 18:49:44,142 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 0008 00000000000000000000000000000000] 18:49:44,142 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000A 45210000000000000000000000000000] 18:49:44,147 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000A 00000000000000000000000000000000] 18:49:44,147 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 0008 46000000000000000000000000000000] 18:49:44,152 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 0008 00000000000000000000000000000000] 18:49:44,152 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000A 80100000000000000000000000000000] 18:49:44,157 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000A 00000000000000000000000000000000] 18:49:44,157 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 0009 45310000000000000000000000000000] 18:49:44,162 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 0009 00000000000000000000000000000000] 18:49:44,162 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000A 45300000000000000000000000000000] 18:49:44,167 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000A 00000000000000000000000000000000] 18:49:44,167 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 0008 18140000000000000000000000000000] 18:49:44,172 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 0008 00000000000000000000000000000000] 18:49:44,172 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 0008 65010000000000000000000000000000] 18:49:44,177 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 0008 00000000000000000000000000000000] 18:49:44,177 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000D 00000000000000000000000000000000] 18:49:44,182 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000D 00000000000000000000000000000000] 0: ROOT {0000} 18:49:44,183 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000E 00010000000000000000000000000000] 18:49:44,187 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000E 01000000000000000000000000000000] 1: FEATURE SET {0001} 18:49:44,188 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 0009 00030000000000000000000000000000] 18:49:44,192 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 0009 02000200000000000000000000000000] 2: DEVICE FW VERSION {0003} 18:49:44,192 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 020D 00000000000000000000000000000000] 18:49:44,197 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 020D 01FFFFFFFF0003000000000ABA000000] 18:49:44,197 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 0219 00000000000000000000000000000000] 18:49:44,202 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 0219 0055312012010203010ABA0000000000] Firmware: Firmware U1 12.01.B0203 0ABA 18:49:44,203 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 0208 00000000000000000000000000000000] 18:49:44,207 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 0208 01FFFFFFFF0003000000000ABA000000] Unit ID: FFFFFFFF Model ID: 000000000ABA Transport IDs: {'btid': '0000', 'btleid': '0000'} 18:49:44,207 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 011F 03000000000000000000000000000000] 18:49:44,212 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 011F 00050000000000000000000000000000] 18:49:44,212 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000C 00050000000000000000000000000000] 18:49:44,217 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000C 03000000000000000000000000000000] 3: DEVICE NAME {0005} 18:49:44,217 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 030E 00000000000000000000000000000000] 18:49:44,222 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 030E 1D000000000000000000000000000000] 18:49:44,222 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 0318 00000000000000000000000000000000] 18:49:44,227 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 0318 50524F205820576972656C6573732047] 18:49:44,227 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 031A 10000000000000000000000000000000] 18:49:44,232 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 031A 616D696E672048656164736574000000] Name: PRO X Wireless Gaming Headset 18:49:44,232 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 032D 00000000000000000000000000000000] 18:49:44,237 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 032D 08000000000000000000000000000000] Kind: None 18:49:44,237 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 011B 04000000000000000000000000000000] 18:49:44,242 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 011B 83100000000000000000000000000000] 18:49:44,242 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000A 83100000000000000000000000000000] 18:49:44,247 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000A 04000100000000000000000000000000] 4: EQUALIZER {8310} 18:49:44,248 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 011E 05000000000000000000000000000000] 18:49:44,252 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 011E 83000000000000000000000000000000] 18:49:44,252 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000C 83000000000000000000000000000000] 18:49:44,257 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000C 05000000000000000000000000000000] 5: SIDETONE {8300} 18:49:44,258 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 011D 06000000000000000000000000000000] 18:49:44,262 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 011D 1F200000000000000000000000000000] 18:49:44,262 DEBUG [MainThread] logitech_receiver.base: (11) <= w[11 FF 000A 1F200000000000000000000000000000] 18:49:44,267 DEBUG [MainThread] logitech_receiver.base: (11) => r[11 FF 000A 06000400000000000000000000000000] 6: ADC MEASUREMENT {1F20} Battery status unavailable. ```

Battery status unavailable. is this not possible to read? or to deduce?

Thanks

pfps commented 2 years ago

What the device provides is given by solaar show

         0: ROOT                   {0000}   
         1: FEATURE SET            {0001}   
         2: DEVICE FW VERSION      {0003}   
            Firmware: Firmware U1  12.01.B0203 0ABA
            Unit ID: FFFFFFFF  Model ID: 000000000ABA  Transport IDs: {'btid': '0000', 'btleid': '0000'}
         3: DEVICE NAME            {0005}   
            Name: PRO X Wireless Gaming Headset
            Kind: None
         4: EQUALIZER              {8310}   
         5: SIDETONE               {8300}   
         6: ADC MEASUREMENT        {1F20}   

so no battery information is available, at least with the interfaces that Solaar uses.

Presumably the last three features can be used to control the device, but I don't have any information on how they work.

Fymyte commented 2 years ago

Hi, I understand that it is not possible (at least for now) to read the battery status from this headset, but do you have any idea if this could be added by a driver update or the headset just doesn't provide this info ?

Thx for your amazing work 👍

pfps commented 2 years ago

It looks as if the headset does not provide this information at all. There are some Logitech mice that similarly do not provide battery information.