Closed carloscbl closed 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
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
thank you
Thanks. That decodes to
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.
Result
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
Hi,
GUI
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')}
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.
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
.
There is a new version of PR #1378. After you try the above try this new version.
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.
Battery status unavailable. is this not possible to read? or to deduce?
Thanks
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.
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 👍
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.
Information
1.1.0
Distribution: Ubuntu 21.04
Kernel version (ex.
uname -srmo
): Linux 5.11.0-41-generic x86_64 GNU/Linuxsolaar: error: Traceback (most recent call last): File "/usr/share/solaar/lib/solaar/cli/init.py", line 200, in run raise Exception('No devices found') Exception: No devices found
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