Closed Akhenaton closed 3 years ago
I had same problem, but I'm using an M150 + K220 kit.
I still have the same problem too.....
Well, i think this Solaar project is dead now... Nothing has been done since months :-)
You could just type in a terminal
solaar-cli show -v
Since I've done that I found out that I need a new usb-receiver (not nano but unifying, cost 8$ as bulk)
I have same combo with very same receiver and another receiver that is unifying for sure:
$ lsusb -d 046d:
Bus 005 Device 013: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 005 Device 012: ID 046d:c534 Logitech, Inc. Unifying Receiver
@Lekensteyn ,
I added c534 as nano receiver in the lib/logitech_receiver/base_usb.py but after it solaar show
fails with an AttributeError
exception "Receiver object does not have _devices" property.
If you guide a little I can get some more information. I can code python and have good knowledge on linux, but I don't know much about hid subsystem.
Information gathered from this USB receiver:
Kernel Log:
$ dmesg
[11659.044743] usb 5-4: new full-speed USB device number 5 using ohci-pci
[11659.217304] usb 5-4: New USB device found, idVendor=046d, idProduct=c534
[11659.217316] usb 5-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[11659.217323] usb 5-4: Product: USB Receiver
[11659.217329] usb 5-4: Manufacturer: Logitech
[11659.226259] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:13.0/usb5/5-4/5-4:1.0/0003:046D:C534.000D/input/input27
[11659.281582] hid-generic 0003:046D:C534.000D: input,hidraw8: USB HID v1.11 Keyboard [Logitech USB Receiver] on usb-0000:00:13.0-4/input0
[11659.287700] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:13.0/usb5/5-4/5-4:1.1/0003:046D:C534.000E/input/input28
[11659.341407] hid-generic 0003:046D:C534.000E: input,hiddev0,hidraw9: USB HID v1.11 Mouse [Logitech USB Receiver] on usb-0000:00:13.0-4/input1
The /dev/ files:
ls /dev/hidraw? -l
[...]
crw-rw----+ 1 root root 248, 8 Out 15 02:15 /dev/hidraw8
crw-rw----+ 1 root root 248, 9 Out 15 02:15 /dev/hidraw9
Solaar (master branch):
$ tools/scan-registers.sh FF /dev/hidraw9
# Old notification flags: 000000
>> ( 0.022) [10 FF 8100 000900] '\x10\xff\x81\x00\x00\t\x00'
<< ( 0.020) [10 FF 8102 000000] '\x10\xff\x81\x02\x00\x00\x00'
>> ( 0.024) [10 FF 8102 000217] '\x10\xff\x81\x02\x00\x02\x17'
--
<< ( 4.600) [10 FF 81D0 000000] '\x10\xff\x81\xd0\x00\x00\x00'
>> ( 4.604) [10 FF 81D0 000000] '\x10\xff\x81\xd0\x00\x00\x00'
--
<< ( 4.626) [10 FF 81D2 000000] '\x10\xff\x81\xd2\x00\x00\x00'
>> ( 4.628) [10 FF 8F81 D20300] '\x10\xff\x8f\x81\xd2\x03\x00'
--
<< ( 4.650) [10 FF 81D4 000000] '\x10\xff\x81\xd4\x00\x00\x00'
>> ( 4.652) [10 FF 8F81 D40300] '\x10\xff\x8f\x81\xd4\x03\x00'
--
<< ( 4.674) [10 FF 81D6 000000] '\x10\xff\x81\xd6\x00\x00\x00'
>> ( 4.678) [10 FF 81D6 090000] '\x10\xff\x81\xd6\t\x00\x00'
--
<< ( 4.876) [10 FF 81E6 000000] '\x10\xff\x81\xe6\x00\x00\x00'
>> ( 4.878) [10 FF 81E6 000000] '\x10\xff\x81\xe6\x00\x00\x00'
--
<< ( 5.012) [10 FF 81F1 000000] '\x10\xff\x81\xf1\x00\x00\x00'
>> ( 5.016) [10 FF 8F81 F10300] '\x10\xff\x8f\x81\xf1\x03\x00'
<< ( 2.256) [10 FF 83B5 000000] '\x10\xff\x83\xb5\x00\x00\x00'
>> ( 2.259) [10 FF 8F83 B50300] '\x10\xff\x8f\x83\xb5\x03\x00'
--
<< ( 2.660) [10 FF 83D5 000000] '\x10\xff\x83\xd5\x00\x00\x00'
>> ( 2.663) [11 FF 83D5 00465B31CB2015011700000000000000] '\x11\xff\x83\xd5\x00F[1\xcb \x15\x01\x17\x00\x00\x00\x00\x00\x00\x00'
Same command over /dev/hidraw8 returns a "broken pipe" exception.
Modified Solaar as:
$ git diff lib/logitech_receiver/base_usb.py
diff --git a/lib/logitech_receiver/base_usb.py b/lib/logitech_receiver/base_usb.py
index 7280579..69f0e50 100644
--- a/lib/logitech_receiver/base_usb.py
+++ b/lib/logitech_receiver/base_usb.py
@@ -48,6 +48,7 @@ NANO_RECEIVER_C521 = _nano_receiver(0xc521)
NANO_RECEIVER_C525 = _nano_receiver(0xc525)
NANO_RECEIVER_C526 = _nano_receiver(0xc526)
NANO_RECEIVER_C52e = _nano_receiver(0xc52e)
+NANO_RECEIVER_C534 = _nano_receiver(0xc534)
del _unifying_receiver, _nano_receiver
@@ -65,4 +66,5 @@ ALL = (
NANO_RECEIVER_C525,
NANO_RECEIVER_C526,
NANO_RECEIVER_C52e,
+ NANO_RECEIVER_C534,
)
Then run it:
$ bin/solaar -D /dev/hidraw9 show
Exception AttributeError: "'Receiver' object has no attribute '_devices'" in <object repr() failed> ignored
solaar: error: Logitech receiver not found
System:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial
Linux Wolf 4.4.0-42-generic #62-Ubuntu SMP Fri Oct 7 23:11:45 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Now I need to understand what Solaar is looking for and why it is not getting it. I will try figure this out when I come back from my business trip.
There is a duplicate issue #294 I opened before find this one. Could someone mark it as duplicate?
Regards, Benito.
Hey @jrbenito, thanks for your investigation. Your changes to Solaar should be sufficient. Can you run solaar show
with --debug
and look for hints? The attribute _devices
should really exist (see lib/logitech_receiver/receiver.py
, class Receiver
).
@Lekensteyn ,
Yes, I will do it and update this issue. However this will take until next week, due to bis trip I have no access to the receiver on this machine.
BRs Jrbenito
Relates to #222 and #152 (different combo with same unrecognized receiver C534)
Tried the same approach @jrbenito presented (adding C534 to base_usb.py), got different error.
My device is at hidraw1
:
$ ls /dev/hidraw? -l
crw------- 1 root root 245, 0 Out 25 15:24 /dev/hidraw0
crw------- 1 root root 245, 1 Out 25 15:24 /dev/hidraw1
crw------- 1 root root 245, 2 Out 25 14:15 /dev/hidraw2
crw------- 1 root root 245, 3 Out 25 14:15 /dev/hidraw3
$ bin/solaar -D /dev/hidraw1 show
solaar: error: 'ascii' codec can't decode byte 0xc3 in position 18: ordinal not in range(128)
@miguelpeixe ,
Did you got this using root
user or regular user? Because you permission does not allow regular users to open the device node on /dev
.
Also, did you perform the test using master
branch on this repo?
Thanks and regards
@Lekensteyn and others,
here is the debug:
$ ./bin/solaar -dd show
11:33:25,962 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 FF 83B5 030000]
11:33:25,964 DEBUG [MainThread] logitech_receiver.base: (3) => r[10 FF 8F83 B50300]
11:33:25,964 DEBUG [MainThread] logitech_receiver.base: (3) device 0xFF error on request {83B5}: 3 = invalid value
11:33:25,965 ERROR [MainThread] logitech_receiver.receiver: open DeviceInfo(path=u'/dev/hidraw3', vendor_id=u'046d', product_id=u'c534', serial=u'\nMODALIAS=hid:b0003g0001v0000046Dp0000C534', release='2900', manufacturer='Logitech', product='USB Receiver', interface=1, driver=u'hid-generic')
Traceback (most recent call last):
File "/home/jbenito/projetos/projs-python/Solaar/lib/logitech_receiver/receiver.py", line 525, in open
return Receiver(handle, device_info)
File "/home/jbenito/projetos/projs-python/Solaar/lib/logitech_receiver/receiver.py", line 340, in __init__
assert serial_reply
AssertionError
Exception AttributeError: "'Receiver' object has no attribute '_devices'" in <object repr() failed> ignored
11:33:25,965 DEBUG [MainThread] solaar.cli: [/dev/hidraw3] => None
solaar: error: Logitech receiver not found
Seems related to registers I guess, am I right? Keep looking.
Good news!
Based on debug information I could figure out that reading serial number from device is failing (return none due to error). Solaar figures the maximum supported devices through the serial number, so also max_devices properties need to have a value. I cheated by hard coding serial number to zero and max_devices to 2 (this receive supports only two interfaces):
diff --git a/lib/logitech_receiver/receiver.py b/lib/logitech_receiver/receiver.py
index 1a01ba3..aff1ce9 100644
--- a/lib/logitech_receiver/receiver.py
+++ b/lib/logitech_receiver/receiver.py
@@ -336,10 +336,14 @@ class Receiver(object):
# read the serial immediately, so we can find out max_devices
# this will tell us if it's a Unifying or Nano receiver
- serial_reply = self.read_register(_R.receiver_info, 0x03)
- assert serial_reply
- self.serial = _strhex(serial_reply[1:5])
- self.max_devices = ord(serial_reply[6:7])
+ if self.product_id != 'c534':
+ serial_reply = self.read_register(_R.receiver_info, 0x03)
+ assert serial_reply
+ self.serial = _strhex(serial_reply[1:5])
+ self.max_devices = ord(serial_reply[6:7])
+ else:
+ self.max_devices = 2
+ self.serial = 0
Solaar now reports:
$ bin/solaar show
Unifying Receiver
Device path : /dev/hidraw3
USB id : 046d:c534
Serial : 0
Firmware : 29.00.B0015
Has 2 paired device(s) out of a maximum of 2.
Notifications: (none)
1:
Codename :
Kind : keyboard
Wireless PID : 4023
Protocol : unknown (device is offline)
Polling rate : 20 ms (50Hz)
Serial number: 00000000
Battery: unknown (device is offline).
2: Wireless Mouse
Codename :
Kind : mouse
Wireless PID : 4038
Protocol : HID++ 2.0
Polling rate : 8 ms (125Hz)
Serial number: 00000000
Firmware: RQM 54.00.B0004
Supports 22 HID++ 2.0 features:
0: ROOT {0000}
1: FEATURE SET {0001}
2: DEVICE FW VERSION {0003}
3: DEVICE NAME {0005}
4: BATTERY STATUS {1000}
5: unknown:1830 {1830} internal, hidden
6: unknown:1850 {1850} internal, hidden
7: unknown:1860 {1860} internal, hidden
8: unknown:1890 {1890} internal, hidden
9: unknown:18A0 {18A0} internal, hidden
10: unknown:18C0 {18C0} internal, hidden
11: WIRELESS DEVICE STATUS {1D4B}
12: unknown:1DF3 {1DF3} internal, hidden
13: REPROG CONTROLS {1B00}
14: unknown:1DF0 {1DF0} hidden
15: unknown:1E00 {1E00} hidden
16: unknown:1E80 {1E80} internal, hidden
17: unknown:1E90 {1E90} internal, hidden
18: unknown:1F03 {1F03} internal, hidden
19: VERTICAL SCROLLING {2100}
20: MOUSE POINTER {2200}
21: unknown:18B0 {18B0} internal, hidden
Has 3 reprogrammable keys:
0: LEFT CLICK => LeftClick mse, reprogrammable
1: RIGHT CLICK => RightClick mse, reprogrammable
2: MIDDLE BUTTON => MiddleMouseButton mse, reprogrammable
Battery: 70%, discharging.
Next Steps:
The maximum number of devices is apparently not reliable, see for example #292. I have not seen the situation where the serial number can also not be retrieved, I guess showing zeroes for the serial and printing a warning is better than crashing. Not exactly sure how to handle the maximum though, do we know for sure that the maximum is always 2 for this receiver?
The device name should be retrievable via the Device Name feature (0x0005). This should already be implemented, see lib/logitech_receiver/hidpp20.py:405
. Its specification is in https://lekensteyn.nl/files/logitech/logitech_hidpp_2.0_specification_draft_2012-06-04.pdf
@Lekensteyn .
No, we do not know for sure it only supports 2 devices but it is an educated guess based on the fact that, Logitech setpoint software does recognize those 2 devices, all combos at Logitech site are composed by 2 devices and, Logitech unifying windows software does not recognize this receiver (what, IMHO means I cannot pair/unpair devices to it. However, this is still just a guess.
The serial number reading is returning a error as command unknown, and the try catch is translating this to none. I also agree that fallback to zero filed serial number and a warning is better than crash. But we will have to handle max devices too because it is derived from serial number.
I was reading the hid++ 2.0 spec on your site, will investigate deep to find why it is not being retrieved.
@Lekensteyn ,
I withdraw my guess above. Logitech provides a "re-connect software" for the nano receivers and indeed this software allow me to pair new devices. Now it reports 1 keyboard and 1 mouse connect (the combo itself). But I dumped the information it provides and found the receiver also supports 6 devices. The software also did not show any serial number for receiver nor for mouse and keyboard, maybe this is not supported here.
Based on the bold above, I believe worth to setup a USB spy + windows virtual machine to dump USB communication from this software to the Nano receiver, we might find how does it figures the maximum allowed devices.
Out of curiosity, Logitech software reports firmware version '029.000.00015' and Solaar reports '029.000.B0015'. Where does that B comes from? Yet to discover. Same for the mouse, logitech´´s '054.000.00004' while Solaar 'RQM 054.000.B0004'.
Software reference: Logitech support site for MK270
Re-Connect Software Version : 2.00.3
Dj Api Version : 2, 20, 7
Receiver
Name : wireless receiver
ModelId : 0x46dc534
Serial Number :
Handle : 0xff000004
Wireless Status : 0x3
Firmware version : 029.000.00015
Bootloader version :
Dfu Status : 0x1
Is Dfu Cancellable : Yes
Max Device Capacity : 6
Full dump on next message.
Bootloader version :
Dfu Status : 0x1
Is Dfu Cancellable : Yes
Max Device Capacity : 6
Mouse
Name :
ModelId : 0x0
Serial Number : 4038-00-00-00-00
Handle : 0x2000006
Wireless Status : 0x0
Firmware version : 054.000.00004
Bootloader version :
Dfu Status : 0x1
Is Dfu Cancellable : No
Battery Status : 0x3
Parent Handle : 0xff000004
Keyboard
Name :
ModelId : 0x0
Serial Number : 4023-00-00-00-00
Handle : 0x1000005
Wireless Status : 0x1
Firmware version : 000.000.00000
Bootloader version :
Dfu Status : 0x0
Is Dfu Cancellable : No
Battery Status : 0x0
Parent Handle : 0xff000004
[16:40:52:0806]: ----------[09-13-2016]------------------------- Unifying API ------------------------------------
[16:40:52:0806]: <9824>Unifying Loaded DLL: 2.50.25
[16:41:21:0573]: -------------------------------------------------------------------------------------------------
[01:24:35:0042]: ----------[10-17-2016]------------------------- Unifying API ------------------------------------
[01:24:35:0042]: <8740>Unifying Loaded DLL: 2.50.25
[01:24:49:0335]: <6644>New Pairing successful: Device [K270 - 4003-3D-75-04-FA]
[01:25:10:0713]: -------------------------------------------------------------------------------------------------
[15:43:24:0311]: ----------[10-17-2016]------------------------- Unifying API ------------------------------------
[15:43:24:0317]: <8764>Unifying Loaded DLL: 2.50.25
[15:44:09:0542]: -------------------------------------------------------------------------------------------------
[11:12:41:0506]: ----------[11-09-2016]------------------------- Unifying API ------------------------------------
[11:12:41:0506]: <10680>Unifying Loaded DLL: 2.50.25
[11:12:42:0236]: <9440>HID++ contention false positive error detected (Idx:0xFF. Threshold:1.0 ms).
[11:12:46:0595]: <12516>Failed to read activity counter. Polling thread aborted.
[11:13:18:0250]: <10396>Failed to read activity counter. Polling thread aborted.
[11:13:51:0815]: <8400>Failed to read activity counter. Polling thread aborted.
[15:49:48:0560]: ----------[11-09-2016]------------------------- Unifying API ------------------------------------
[15:49:48:0571]: <12628>Unifying Loaded DLL: 2.20.7
[15:50:05:0568]: <10424>HID++ contention false positive error detected (Idx:0xFF. Threshold:1.0 ms).
[15:50:11:0688]: <13084>Failed to read activity counter. Polling thread aborted.
Log content displays the 100% of the available one.
Would be nice if you can create a pcap of the USB traffic :)
Either capture it using using something like USBPcap on Windows or use a VM as described at https://lekensteyn.nl/logitech-unifying.html
I am wondering if this device shouldn´t be bind by 'logitech-djreceiver' driver instead of 'hid_generic... even the re-connection software has some
DJ APIand
Unifying DLL`.
Keyboard was read at home as well
1: Wireless Keyboard
Codename :
Kind : keyboard
Wireless PID : 4023
Protocol : HID++ 2.0
Polling rate : 20 ms (50Hz)
Serial number: 00000000
Firmware: RQK 49.00.B0029
Supports 18 HID++ 2.0 features:
0: ROOT {0000}
1: FEATURE SET {0001}
2: DEVICE FW VERSION {0003}
3: DEVICE NAME {0005}
4: BATTERY STATUS {1000}
5: REPROG CONTROLS {1B00}
6: WIRELESS DEVICE STATUS {1D4B}
7: FN INVERSION {40A0}
8: ENCRYPTION {4100}
9: KEYBOARD LAYOUT {4520}
10: unknown:1810 {1810} internal, hidden
11: unknown:1830 {1830} internal, hidden
12: unknown:1890 {1890} internal, hidden
13: unknown:18A0 {18A0} internal, hidden
14: unknown:18B0 {18B0} internal, hidden
15: unknown:1DF3 {1DF3} internal, hidden
16: unknown:1E00 {1E00} hidden
17: unknown:1868 {1868} internal, hidden
Has 11 reprogrammable keys:
0: MY HOME => HomePage FN sensitive, is FN, reprogrammable
1: Mail => Email FN sensitive, is FN, reprogrammable
2: SEARCH => Search FN sensitive, is FN, reprogrammable
3: Calculator => Calculator FN sensitive, is FN, reprogrammable
4: MEDIA PLAYER => Music FN sensitive, is FN, reprogrammable
5: Previous => Previous FN sensitive, is FN
6: Play/Pause => Play/Pause FN sensitive, is FN
7: Next => Next FN sensitive, is FN
8: Mute => Mute FN sensitive, is FN
9: Volume Down => Volume Down FN sensitive, is FN
10: Volume Up => Volume Up FN sensitive, is FN
Battery: 30%, discharging.
Support for hid-logitech-dj
makes it possible to expose multiple, independent devices. The dmesg shows two devices, one keyboard and one mouse. So unless you pair more than two devices of the same kind, I think it is not needed.
Regarding your earlier question on the letter B
in the firmware version, I observed this in earlier logs from the Logitech software for my device. It is added in lib/logitech_receiver/hidpp20.py:376
Thanks for inputs, I tried to get pcap yesterday night but a thunderstorm made electrical power to oscillate so I gave up. Today I hope do it. If we can figure out other way to differentiate nano receivers from unifying ones would be great since the "max_devices" method is not reliable.
For the records, I got USB pcap but no time to analyze it.
@Github won´t let me attach it even zipped.
Just an outsider here reporting some basic testing info....
I just purchased a K270/M185 combo for an Ubuntu 16.10 system. The master branch doesn't detect the receiver at all. With the changes from PR #318 , the receiver is detected.
The keyboard battery info isn't available:
Unifying Receiver
Device path : /dev/hidraw6
USB id : 046d:c534
Serial : 0
Firmware : 29.00.B0015
Has 2 paired device(s) out of a maximum of 6.
Notifications: wireless, software present (0x000900)
1: Wireless Keyboard K270
Codename : K270
Kind : keyboard
Wireless PID : 4023
Protocol : HID++ 2.0
Polling rate : 20 ms (50Hz)
Serial number: E7B2CB9E
Battery status unavailable.
2: Wireless Mouse
Codename : Wireless Mouse
Kind : mouse
Wireless PID : 4055
Protocol : HID++ 4.5
Polling rate : 8 ms (125Hz)
Serial number: 3F2A7C92
Firmware: RQM 66.00.B0001
The power switch is located on the base.
Supports 22 HID++ 2.0 features:
0: ROOT {0000}
1: FEATURE SET {0001}
2: DEVICE FW VERSION {0003}
3: DEVICE NAME {0005}
4: RESET {0020}
5: BATTERY STATUS {1000}
6: unknown:1810 {1810} internal, hidden
7: unknown:1830 {1830} internal, hidden
8: unknown:1802 {1802} internal, hidden
9: unknown:1862 {1862} internal, hidden
10: unknown:1890 {1890} internal, hidden
11: unknown:18A0 {18A0} internal, hidden
12: unknown:18B1 {18B1} internal, hidden
13: REPROG CONTROLS V4 {1B04}
14: WIRELESS DEVICE STATUS {1D4B}
15: unknown:1DF0 {1DF0} hidden
16: unknown:1DF3 {1DF3} internal, hidden
17: unknown:1E00 {1E00} hidden
18: unknown:1EB0 {1EB0} internal, hidden
19: unknown:1F03 {1F03} internal, hidden
20: LOWRES WHEEL {2130}
21: POINTER SPEED {2205}
Battery: 70%, discharging.
(On a side note, that is a brand new Duracell battery... 70% really!?)
The GUI doesn't show any device details..
Log from solaar -d : solaar.txt
I understand that there are some concerns about overall implementations per the comments in the PR...
I would love to see this working! I'm not a python guy, but I can test and generate more info if needed...
Thanks for your efforts!
Like @kmscode I also tested the patch from PR #318, and can confirm it works with the K270/M185 pair. I also don't get any battery status info, nor do any details show up in the GUI.
Unifying Receiver
Device path : /dev/hidraw1
USB id : 046d:c534
Serial : 0
Firmware : 29.01.B0016
Has 2 paired device(s) out of a maximum of 6.
Notifications: wireless, software present (0x000900)
1: Wireless Keyboard K270
Codename : K270
Kind : keyboard
Wireless PID : 4023
Protocol : HID++ 2.0
Polling rate : 20 ms (50Hz)
Serial number: AF8FFCDC
Battery status unavailable.
2: Wireless Mouse M185
Codename : M185
Kind : mouse
Wireless PID : 4054
Protocol : HID++ 4.5
Polling rate : 8 ms (125Hz)
Serial number: 00000000
Firmware: RQM 64.00.B0008
The power switch is located on the base.
Supports 20 HID++ 2.0 features:
0: ROOT {0000}
1: FEATURE SET {0001}
2: DEVICE FW VERSION {0003}
3: DEVICE NAME {0005}
4: RESET {0020}
5: REPROG CONTROLS V4 {1B04}
6: WIRELESS DEVICE STATUS {1D4B}
7: LOWRES WHEEL {2130}
8: POINTER SPEED {2205}
9: unknown:1802 {1802} internal, hidden
10: unknown:1810 {1810} internal, hidden
11: unknown:1830 {1830} internal, hidden
12: unknown:1850 {1850} internal, hidden
13: unknown:1869 {1869} internal, hidden
14: unknown:1890 {1890} internal, hidden
15: unknown:18B1 {18B1} internal, hidden
16: unknown:1DF3 {1DF3} internal, hidden
17: unknown:1E00 {1E00} hidden
18: unknown:1F03 {1F03} internal, hidden
19: unknown:1E80 {1E80} internal, hidden
Battery status unavailable.
We have the same model of device, but mine lists different functions. I suspect that may be because for some reason mine is using the hid-generic
kernel driver rather than the hid-logitech-dj
one, and I can't for the life of me figure out why this is so.
Interestingly enough though, I'm no longer getting dropped keypresses or a lagging mouse, which I was before. Still happens, to the extent that the keyboard is almost unusable on a bad day.
Hi, I have the same problem with w10 and logitech sw. I think it's a dongle problem and not a solaar problem. The dongle get stuck with a device and cannot pair another one.
PR #337 also do same as PR #318
I submitted PR #342 that depends on PR #337 , I tested locally and it works.
Recent changes to solaar have improved support for the c534 receiver. This receiver can pair only two devices, probably one M185 and one K270. It cannot unpair. Trying to pair replaces an existing pairing. The receiver can only pair a limited number of times.
Hello Sorry for the inconvenience, but I have a problem with my MK220 combo, I installed version 1.0.5 and I have the following result:
drack@drack-pc:~$ solaar show
Nano Receiver
Device path : /dev/hidraw1
USB id : 046d:C534
Serial : None
Firmware : 29.00.B0015
Has 2 paired device(s) out of a maximum of 2.
Has 17 successful pairing(s) remaining.
Notifications: software present (0x000800)
1: Wireless Keyboard MK270
Device path : None
WPID : 4023
Codename : MK270
Kind : keyboard
Protocol : HID++ 2.0
Polling rate : 20 ms (50Hz)
Serial number: 7121A5F5
Model ID: 000000000000
Unit ID: 00000000
Firmware: RQK 49.00.B0029
Supports 18 HID++ 2.0 features:
0: ROOT {0000}
1: FEATURE SET {0001}
2: DEVICE FW VERSION {0003}
Firmware: Firmware RQK 49.00.B0029 4023
Unit ID: 00000000 Model ID: 000000000000 Transport IDs: {}
3: DEVICE NAME {0005}
Name: Wireless Keyboard
Kind: keyboard
4: BATTERY STATUS {1000}
Battery: 30%, discharging, next level 5%.
5: REPROG CONTROLS {1B00}
6: WIRELESS DEVICE STATUS {1D4B}
7: FN INVERSION {40A0}
Swap Fx function : False
8: ENCRYPTION {4100}
9: KEYBOARD LAYOUT {4520}
10: unknown:1810 {1810} internal, hidden
11: unknown:1830 {1830} internal, hidden
12: unknown:1890 {1890} internal, hidden
13: unknown:18A0 {18A0} internal, hidden
14: unknown:18B0 {18B0} internal, hidden
15: unknown:1DF3 {1DF3} internal, hidden
16: unknown:1E00 {1E00} hidden
17: unknown:1868 {1868} internal, hidden
Has 11 reprogrammable keys:
0: My Home => HomePage is FN, FN sensitive, reprogrammable
1: Mail => Email is FN, FN sensitive, reprogrammable
2: Search => Search is FN, FN sensitive, reprogrammable
3: Calculator => Calculator is FN, FN sensitive, reprogrammable
4: Media Player => Music is FN, FN sensitive, reprogrammable
5: Previous => Previous is FN, FN sensitive
6: Play/Pause => Play/Pause is FN, FN sensitive
7: Next => Next is FN, FN sensitive
8: Mute => Mute is FN, FN sensitive
9: Volume Down => Volume Down is FN, FN sensitive
10: Volume Up => Volume Up is FN, FN sensitive
Battery: 30%, discharging, next level 5%.
2: Wireless Mouse M150
Device path : None
WPID : 4022
Codename : M150
Kind : mouse
Protocol : HID++ 2.0
Polling rate : 8 ms (125Hz)
Serial number: 00000000
Model ID: 000000000000
Unit ID: 00000000
Firmware: RQM 38.00.B0044
Supports 18 HID++ 2.0 features:
0: ROOT {0000}
1: FEATURE SET {0001}
2: DEVICE FW VERSION {0003}
Firmware: Firmware RQM 38.00.B0044 4022
Unit ID: 00000000 Model ID: 000000000000 Transport IDs: {}
3: DEVICE NAME {0005}
Name: Wireless Mouse
Kind: mouse
4: BATTERY STATUS {1000}
Battery: 30%, discharging, next level 5%.
5: REPROG CONTROLS {1B00}
6: WIRELESS DEVICE STATUS {1D4B}
7: VERTICAL SCROLLING {2100}
Roller type: standard
Ratchet per turn: 24
Scroll lines: 0
8: MOUSE POINTER {2200}
DPI: 1000
Acceleration: low
Override OS ballistics
No vertical tuning, standard mice
9: unknown:1810 {1810} internal, hidden
10: unknown:1830 {1830} internal, hidden
11: unknown:1850 {1850} internal, hidden
12: unknown:1890 {1890} internal, hidden
13: unknown:18B0 {18B0} internal, hidden
14: unknown:1DF3 {1DF3} internal, hidden
15: unknown:1868 {1868} internal, hidden
16: unknown:1869 {1869} internal, hidden
17: unknown:1E00 {1E00} hidden
Has 3 reprogrammable keys:
0: Left Button => Left Click mse, reprogrammable
1: Right Button => Right Click mse, reprogrammable
2: Middle Button => Mouse Middle Button mse, reprogrammable
Battery: 30%, discharging, next level 5%.
drack@drack-pc:~$ solaar --version
solaar 1.0.5
drack@drack-pc:~$
i have been looking at post #287 and i got here. to clarify, the keyboard says k220 and the mouse M150.
Thank you for your support
Please run solaar -d
and post the output. I suspect that there is some error happening.
However, I have nearly the same setup (receiver c534, keyboard MK270, mouse M185) so I'm not sure what is going on.
Please run
solaar -d
and post the output. I suspect that there is some error happening.However, I have nearly the same setup (receiver c534, keyboard MK270, mouse M185) so I'm not sure what is going
drack@drack-pc:~$ sudo solaar -d
12:23:32,086 INFO [MainThread] root: language es_CO (UTF-8), translations path None
12:23:32,872 INFO [MainThread] solaar.upower: connected to system dbus, watching for suspend/resume events
12:23:33,571 INFO [MainThread] solaar.listener: starting receiver listening threads
12:23:33,651 INFO [MainThread] solaar.listener: receiver event add DeviceInfo(path=u'/dev/hidraw1', vendor_id=u'046d', product_id=u'c534', serial=u'', release='2900', manufacturer='Logitech', product='USB Receiver', interface=1, driver=u'logitech-djreceiver')
12:23:33,654 INFO [ReceiverListener:hidraw1] logitech_receiver.listener: started with <UnifyingReceiver(/dev/hidraw1,13)> (13)
12:23:33,654 INFO [ReceiverListener:hidraw1] solaar.listener: <UnifyingReceiver(/dev/hidraw1,13)>: notifications listener has started (13)
12:23:33,657 INFO [ReceiverListener:hidraw1] logitech_receiver.receiver: <UnifyingReceiver(/dev/hidraw1,13)>: receiver notifications enabled => ('software present',)
12:23:33,660 INFO [ReceiverListener:hidraw1] solaar.listener: status_changed <UnifyingReceiver(/dev/hidraw1,13)>: present, No paired devices. (0)
Hmm, no error there. Please try solaar -dd
. That will produce lots of output.
Hmm, no error there. Please try
solaar -dd
. That will produce lots of output.12:49:22,282 INFO [MainThread] root: language es_CO (UTF-8), translations path None 12:49:22,649 DEBUG [MainThread] solaar.ui.tray: using AppIndicator3 12:49:22,893 INFO [MainThread] solaar.upower: connected to system dbus, watching for suspend/resume events 12:49:23,215 DEBUG [MainThread] solaar.ui: startup registered=True, remote=False 12:49:23,229 DEBUG [AsyncUI] solaar.tasks: started 12:49:23,240 DEBUG [MainThread] solaar.ui.icons: sys.path[0] = /usr/local/bin 12:49:23,240 DEBUG [MainThread] solaar.ui.icons: looking for icons in /usr/local/icons 12:49:23,240 DEBUG [MainThread] solaar.ui.icons: looking for icons in /usr/local/share/solaar/icons 12:49:23,249 DEBUG [MainThread] solaar.ui.icons: looking for icons in /home/drack/.local/share/solaar/icons 12:49:23,249 DEBUG [MainThread] solaar.ui.icons: looking for icons in /home/drack/.local/lib/python2.7/share/solaar/icons 12:49:23,249 DEBUG [MainThread] solaar.ui.icons: looking for icons in /usr/local/share/solaar/icons 12:49:23,249 DEBUG [MainThread] solaar.ui.icons: looking for icons in /usr/share/solaar/icons 12:49:23,249 DEBUG [MainThread] solaar.ui.icons: icon theme paths: ['/usr/local/share/solaar/icons', '/home/drack/.local/share/solaar/icons', '/usr/local/share/solaar/icons', '/home/drack/.local/share/icons', '/home/drack/.icons', '/usr/local/share/icons', '/usr/share/icons', '/usr/local/share/pixmaps', '/usr/share/pixmaps'] 12:49:23,269 DEBUG [MainThread] solaar.ui.icons: detected icon sets: Mint True, gpm True, oxygen False, gnome True, elementary False 12:49:23,289 INFO [MainThread] solaar.listener: starting receiver listening threads 12:49:23,368 INFO [MainThread] solaar.listener: receiver event add DeviceInfo(path=u'/dev/hidraw1', vendor_id=u'046d', product_id=u'c534', serial=u'', release='2900', manufacturer='Logitech', product='USB Receiver', interface=1, driver=u'logitech-djreceiver') 12:49:23,383 DEBUG [MainThread] logitech_receiver.base: (13) <= w[10 FF 80B2 000000] 12:49:23,384 DEBUG [MainThread] logitech_receiver.base: (13) => r[10 FF 8F80 B20300] 12:49:23,384 DEBUG [MainThread] logitech_receiver.base: (13) device 0xFF error on request {80B2}: 3 = invalid value 12:49:23,385 INFO [ReceiverListener:hidraw1] logitech_receiver.listener: started with <UnifyingReceiver(/dev/hidraw1,13)> (13) 12:49:23,385 INFO [ReceiverListener:hidraw1] solaar.listener: <UnifyingReceiver(/dev/hidraw1,13)>: notifications listener has started (13) 12:49:23,386 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) <= w[10 FF 8000 100900] 12:49:23,388 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) => r[10 FF 8000 000000] 12:49:23,389 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) <= w[10 FF 8100 000000] 12:49:23,390 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) => r[10 FF 8100 000800] 12:49:23,391 INFO [ReceiverListener:hidraw1] logitech_receiver.receiver: <UnifyingReceiver(/dev/hidraw1,13)>: receiver notifications enabled => ('software present',) 12:49:23,391 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) <= w[10 FF 8002 020000] 12:49:23,392 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) => r[10 FF 8002 000000] 12:49:23,392 INFO [ReceiverListener:hidraw1] solaar.listener: status_changed <UnifyingReceiver(/dev/hidraw1,13)>: present, No paired devices. (0) 12:49:23,412 DEBUG [MainThread] solaar.ui: activate 12:49:23,413 DEBUG [MainThread] solaar.ui: status changed: <UnifyingReceiver(/dev/hidraw1,13)> (NONE) None 12:49:30,475 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) => r[10 FF 80B2 000000] 12:49:35,275 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) => r[10 FF 80B2 000000]
the last lines are intents of pair new device
That trace looks weird. Please check that you are actually running version 1.0.5 by running solaar --version
That trace looks weird. Please check that you are actually running version 1.0.5 by running
solaar --version
drack@drack-pc:~$ solaar --version
solaar 1.0.5
drack@drack-pc:~$
Another thing is to make sure that you are running Python 3. The reason I'm suspicious is that I'm seeing string quotes with a u in front of them. If you are running Python 3 try
solaar --version
solaar -dd
I uninstalled python 2.7.17(only python 3.6.9 was left) and deleted past versions of solaar along with residual files, I get this:
drack@drack-pc:~$ solaar --version
solaar 1.0.5
drack@drack-pc:~$ solaar -dd
14:00:17,022 INFO [MainThread] root: language es_CO (UTF-8), translations path None
14:00:17,214 DEBUG [MainThread] solaar.ui.tray: using AppIndicator3
14:00:17,229 INFO [MainThread] solaar.upower: connected to system dbus, watching for suspend/resume events
drack@drack-pc:~$ sudo solaar -dd
[sudo] contraseña para drack:
sudo: no se puede ejecutar /usr/local/bin/solaar: No existe el archivo o el directorio
drack@drack-pc:~$ python3 -V
Python 3.6.9
drack@drack-pc:~$
Solaar checks to see if it is already running, so you have to quit other copies of it.
Well I think I've ended up with a major problem, by uninstalling and installing things, I've damaged the ubuntu GUI, I'll reinstall ubuntu and let you know if the error persists. I think one of the problems I had was that both versions of python (2.7 and 3.6) were installed, also that I did not clean the temporary files of the previous versions of Solaar. Y no se si tenia algo que ver, pero la combinacion que tenia no coincidia con los combos establecidos (MK270 y M150). Sorry for the inconvenience, I will come back if I encounter any problems.
It is surprising how much of Linux distributions depend on Python. I run Fedora, and I don't think that there is any dependence on Python 2 any more. Anyway, good luck and let me know if the problem recurs.
I'm back, but with more problems, the pairing error persists and when I put solaar --dd
a rules warning appears, I already copied the file to /etc/udev/rules.d
and updated the udev
. It is running only python3 and solaar 1.0.5.
drack@drack-pc:~$ sudo solaar -dd
[sudo] contraseña para drack:
17:40:31,380 INFO [MainThread] root: language es_CO (UTF-8), translations path None
17:40:31,534 WARNING [MainThread] logitech_receiver.diversion: X11 not available - rules will not be activated
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/logitech_receiver/diversion.py", line 51, in <module>
disp_prog = Display()
File "/usr/local/lib/python3.8/dist-packages/Xlib/display.py", line 89, in __init__
self.display = _BaseDisplay(display)
File "/usr/local/lib/python3.8/dist-packages/Xlib/display.py", line 71, in __init__
protocol_display.Display.__init__(self, *args, **keys)
File "/usr/local/lib/python3.8/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 ":0": b'No protocol specified\n'
17:40:31,538 DEBUG [MainThread] solaar.ui.tray: using Ayatana AppIndicator3
17:40:31,554 INFO [MainThread] solaar.upower: connected to system dbus, watching for suspend/resume events
drack@drack-pc:~$ solaar --version
solaar 1.0.5
drack@drack-pc:~$
This error occurs because you are running solaar with sudo. That's not allowed anymore - I'll update the documentation.
What you should do is install the Solaar udev rule, if it is not already installed. Then you don't need to use sudo to run Solaar.
ok, udev
is already installed and when running solaar -dd
without sudo I have this:
drack@drack-pc:~$ solaar -dd
18:06:46,842 INFO [MainThread] root: language es_CO (UTF-8), translations path None
18:06:47,102 DEBUG [MainThread] solaar.ui.tray: using Ayatana AppIndicator3
18:06:47,116 INFO [MainThread] solaar.upower: connected to system dbus, watching for suspend/resume events
You need to kill other instances of Solaar.
Oops didn't know that, sorry
drack@drack-pc:~$ solaar -dd
18:23:02,955 INFO [MainThread] root: language es_CO (UTF-8), translations path None
18:23:03,128 DEBUG [MainThread] solaar.ui.tray: using Ayatana AppIndicator3
18:23:03,143 INFO [MainThread] solaar.upower: connected to system dbus, watching for suspend/resume events
18:23:03,207 DEBUG [MainThread] solaar.ui: startup registered=True, remote=False
18:23:03,241 DEBUG [AsyncUI] solaar.tasks: started
18:23:03,242 INFO [MainThread] solaar.ui.notify: starting desktop notifications
18:23:03,247 DEBUG [MainThread] solaar.ui.icons: sys.path[0] = /home/drack/.local/bin
18:23:03,247 DEBUG [MainThread] solaar.ui.icons: looking for icons in /home/drack/.local/icons
18:23:03,247 DEBUG [MainThread] solaar.ui.icons: looking for icons in /home/drack/.local/share/solaar/icons
18:23:03,261 DEBUG [MainThread] solaar.ui.icons: icon theme paths: ['/home/drack/.local/share/solaar/icons', '/home/drack/.local/share/icons', '/home/drack/.icons', '/usr/share/ubuntu/icons', '/usr/local/share/icons', '/usr/share/icons', '/var/lib/snapd/desktop/icons', '/usr/share/ubuntu/pixmaps', '/usr/local/share/pixmaps', '/usr/share/pixmaps', '/var/lib/snapd/desktop/pixmaps']
18:23:03,336 INFO [MainThread] solaar.listener: starting receiver listening threads
18:23:03,343 INFO [MainThread] solaar.listener: receiver event add DeviceInfo(path='/dev/hidraw1', vendor_id='046D', product_id='C534', serial='', release=None, manufacturer=None, product=None, interface=1, driver='logitech-djreceiver', bus_id=3, isDevice=None)
18:23:03,343 DEBUG [MainThread] logitech_receiver.base: (17) <= w[10 FF 83B5 030000]
18:23:03,346 DEBUG [MainThread] logitech_receiver.base: (17) => r[10 FF 8F83 B50300]
18:23:03,346 DEBUG [MainThread] logitech_receiver.base: (17) device 0xFF error on request {83B5}: 3 = invalid value
18:23:03,346 INFO [ReceiverListener:hidraw1] logitech_receiver.listener: started with <NanoReceiver(/dev/hidraw1,17)> (17)
18:23:03,346 INFO [ReceiverListener:hidraw1] solaar.listener: <NanoReceiver(/dev/hidraw1,17)>: notifications listener has started (17)
18:23:03,347 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (17) <= w[10 FF 8000 100900]
18:23:03,350 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (17) => r[10 FF 8000 000000]
18:23:03,350 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (17) <= w[10 FF 8100 000000]
18:23:03,352 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (17) => r[10 FF 8100 000800]
18:23:03,352 INFO [ReceiverListener:hidraw1] logitech_receiver.receiver: <NanoReceiver(/dev/hidraw1,17)>: receiver notifications enabled => ('software present',)
18:23:03,366 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (17) <= w[10 FF 8002 020000]
18:23:03,368 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (17) => r[10 FF 8002 000000]
18:23:03,368 INFO [ReceiverListener:hidraw1] solaar.listener: status_changed <NanoReceiver(/dev/hidraw1,17)>: present, No paired devices. (0)
18:23:03,369 DEBUG [MainThread] solaar.ui: activate
18:23:03,376 DEBUG [MainThread] solaar.ui: status changed: <NanoReceiver(/dev/hidraw1,17)> (NONE) None
18:23:03,378 DEBUG [MainThread] solaar.ui.window: new receiver row ('/dev/hidraw1', 0, True, 'Nano Receiver', None, None, None, <NanoReceiver(/dev/hidraw1,17)>)
18:23:05,614 DEBUG [MainThread] logitech_receiver.base: (24) <= w[10 FF 8102 000000]
18:23:05,618 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (17) => r[10 FF 8102 000214]
18:23:05,618 DEBUG [MainThread] logitech_receiver.base: (24) => r[10 FF 8102 000214]
18:23:07,558 DEBUG [MainThread] solaar.ui.pair_window: prepare <Gtk.Assistant object at 0x7ff67007c740 (GtkAssistant at 0x1be86e0)> 0 <Gtk.VBox object at 0x7ff67067f500 (GtkVBox at 0x1bf89d0)>
18:23:07,558 DEBUG [MainThread] logitech_receiver.base: (24) <= w[10 FF 80B2 01001E]
18:23:07,562 DEBUG [MainThread] logitech_receiver.base: (24) => r[10 FF 80B2 000000]
18:23:07,562 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (17) => r[10 FF 80B2 000000]
18:23:09,064 DEBUG [MainThread] solaar.ui.pair_window: <NanoReceiver(/dev/hidraw1,17)> fail: failed to open pairing lock
18:23:09,068 DEBUG [MainThread] solaar.ui.pair_window: prepare <Gtk.Assistant object at 0x7ff67007c740 (GtkAssistant at 0x1be86e0)> 1 <Gtk.VBox object at 0x7ff670088dc0 (GtkVBox at 0x1bf8df0)>
18:23:14,443 DEBUG [MainThread] solaar.ui.pair_window: finish <Gtk.Assistant object at 0x7ff67007c740 (GtkAssistant at 0x1be86e0)>
Your receiver doesn't support connection notifications which the Solaar GUI needs. You may be able to fix that by updating the firmware on your receiver, if you can figure out how to update the firmware on it. Be careful, though, incorrectly updating firmware can brick devices.
I'm going to add a check so that Solaar at least complains about this problem.
I understand the situation, I didn't expect my keyboard and mouse combo to be so special, thanks for the help, and for the moment I don't think I'll do the firmware update as I don't know much about it. Thanks again
[Bus 001 Device 003: ID 046d:c534 Logitech, Inc.]
Solaar doesn't recognize this receiver.