Closed pfps closed 2 years ago
@adatum As far as I can see this should work for the backlight feature. Can you try running Solaar as bin/solaar -ddd
. See whether a setting for backlight shows up for your K830. See whether you can change the value. Post output from Solaar from when you tried to make changes.
I don't see a setting for backlight:
bin/solaar -ddd
output with 1.1.1-117-ge271c09: https://gist.github.com/adatum/2ad271175086308a31510f3135c6e9f4
OK. Figuring out how to support this setting is going to require direct probing of the device. Stay tuned.
Here are instructions on how to probe the device, in the hopes that we can find out just how to set the backlight values.
First find out the path (Device path) and device number (the number at the beginning of the output for the device) for the keyboard from solaar show
. The device path should be in the form /dev/hidrawN for some N. I'm assuming that the device number is still 2. If not, change 02 below to the number (with a 0 in front of it).
Then from the Solaar clone directory run ./tools/hidconsole /dev/hidrawN then enter the following lines
11 02 0701 00000000000000000000000000000000
10 02 0702 000000
11 02 0713 05000000000000000000000000000000
10 02 0714 050000
11 02 0715 02000000000000000000000000000000
10 02 0716 020000
11 02 0717 0A000000000000000000000000000000
10 02 0718 0A0000
11 02 0719 14000000000000000000000000000000
10 02 071A 140000
11 02 071B 18000000000000000000000000000000
10 02 071C 180000
Capture and post the output.
It might be painful to do this as the tool tries to be "smart". What is important is what was sent and what was received.
What the above is trying to do is to send two different kinds of commands (the 11 and 10) with different lengths. The first two commands then try to get the current value of the backlight feature. The other commands try to set the backlight feature to various values.
You want the device number of the K830 keyboard (/dev/hidraw4), not the Unifying receiver (/dev/hidraw2), correct?
Here is the output, though it is a bit tricky because any interaction with the keyboard (eg. pressing enter) is taken as input and printed by ./tools/hidconsole
. Also, the prompt gets messed up after each input. I tried to copy what seems to be the relevant input and output as cleanly as possible: https://gist.github.com/adatum/beec7a8d3b719c5c91fdaef760dd8bea
Either /dev/hidraw4 or /dev/hidraw2 should work, but /dev/hidraw4 will only show interactions with the keyboard.
However, the other number (the device number) is the one that goes in the messages. It looks as if you used 04, which produced error responses because there is no device number 4 to talk to. So please try again but use 02 (or whatever the device number is) in the commands.
What I've done to get nice looking output is to run hidconsole in a terminal window and cut and paste into it.
However, the other number (the device number) is the one that goes in the messages. It looks as if you used 04, which produced error responses because there is no device number 4 to talk to. So please try again but use 02 (or whatever the device number is) in the commands.
The device number for the K830 keyboard is 04, which is why I used that. 02 is unusable because every mouse movement registers as input.
I used the middle mouse button to paste into the terminal window running hidconsole, but when I hit enter on the keyboard, that keystroke also registers as an input to the program. If I try Ctrl+V it is much worse.
I seem to remember that your K830 was device number 2. To see the device number from the GUI click on the information icon. The device number is shown there as the value for Index.
You should be able to get better output by putting the commands in a file and using the file as the input of hidconsole as in
./tools/hidconsole /dev/hidraw4 << foo
Ok, I mistakenly thought you meant the device number would be the same as N from /dev/hidrawN.
Here is the output using /dev/hidraw4
and the device index 02 as you provided earlier:
$ ./tools/hidconsole /dev/hidraw4 < /tmp/input.txt
.. Opening device /dev/hidraw4
.. Opened handle 3, vendor b'Logitech' product b'USB Receiver' serial None.
.. Logitech receiver detected, HID++ validation enabled.
<< ( 0.018) [11 02 0701 00000000000000000000000000000000] b'\x11\x02\x07\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.033) [11 02 0701 05000000000000000000000000000000] b'\x11\x02\x07\x01\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.041) [01 00 0000 00000000] b'\x01\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.734) [10 02 0702 000000] b'\x10\x02\x07\x02\x00\x00\x00'
>> ( 0.749) [11 02 0702 05000000000000000000000000000000] b'\x11\x02\x07\x02\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 1.450) [11 02 0713 05000000000000000000000000000000] b'\x11\x02\x07\x13\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 1.468) [11 02 FF07 13090000000000000000000000000000] b'\x11\x02\xff\x07\x13\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 2.168) [10 02 0714 050000] b'\x10\x02\x07\x14\x05\x00\x00'
>> ( 2.183) [11 02 FF07 14090000000000000000000000000000] b'\x11\x02\xff\x07\x14\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 2.884) [11 02 0715 02000000000000000000000000000000] b'\x11\x02\x07\x15\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 2.902) [11 02 FF07 15090000000000000000000000000000] b'\x11\x02\xff\x07\x15\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 3.602) [10 02 0716 020000] b'\x10\x02\x07\x16\x02\x00\x00'
>> ( 3.618) [11 02 FF07 16090000000000000000000000000000] b'\x11\x02\xff\x07\x16\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 4.319) [11 02 0717 0A000000000000000000000000000000] b'\x11\x02\x07\x17\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 4.336) [11 02 FF07 17090000000000000000000000000000] b'\x11\x02\xff\x07\x17\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 5.037) [10 02 0718 0A0000] b'\x10\x02\x07\x18\n\x00\x00'
>> ( 5.052) [11 02 FF07 18090000000000000000000000000000] b'\x11\x02\xff\x07\x18\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 5.753) [11 02 0719 14000000000000000000000000000000] b'\x11\x02\x07\x19\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 5.770) [11 02 FF07 19090000000000000000000000000000] b'\x11\x02\xff\x07\x19\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 6.471) [10 02 071A 140000] b'\x10\x02\x07\x1a\x14\x00\x00'
>> ( 6.498) [11 02 FF07 1A090000000000000000000000000000] b'\x11\x02\xff\x07\x1a\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 7.199) [11 02 071B 18000000000000000000000000000000] b'\x11\x02\x07\x1b\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 7.244) [11 02 FF07 1B090000000000000000000000000000] b'\x11\x02\xff\x07\x1b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 7.945) [10 02 071C 180000] b'\x10\x02\x07\x1c\x18\x00\x00'
>> ( 7.990) [11 02 FF07 1C090000000000000000000000000000] b'\x11\x02\xff\x07\x1c\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
.. Closing handle 3
Thanks very much.
Unfortunately all the attempts to see the backlight duration caused errors. I'll need to ask someone for help here, which may take a while.
No worries, there's no rush. Thanks for your persistence with fixing bugs and implementing new capabilities.
A bit off topic, but would you know anything about this very irritating bug affecting many models where the mouse wheel scrolling often becomes extremely slow after the mouse goes to sleep and wakes up? It started with the HID++ high resolution scrolling changes introduced in the linux kernel 5.0 and has still not been resolved to date. Having Solaar running can help but doesn't completely prevent the issue. https://bugzilla.redhat.com/show_bug.cgi?id=1701322
I expect that this is a timing issue when the mouse wakes up and the command to set high-resolution scrolling is not accepted by the mouse.
My recommendation is to not use Solaar to fix this problem as that can introduce more timing problems. In fact, it may be that these timings problems are the cause and that you might not have any problems if you set Scroll Wheel Resolution to ignore. This is described in the Solaar documentation.
The bug is identical in behavior to having Scroll Wheel Resolution disabled. Very slow, requiring 4-8 notches of the scroll wheel to have one scroll event. Enabled is simply normal, not fast or enhanced in any way.
I have now set Scroll Wheel Resolution to ignore, and turned the mouse off/on as mentioned in the documentation. Unfortunately the bug still occurs, whether Solaar is running or not.
Does Solaar need to be running for the "ignore" to be effective? Actually, I'm not even sure exactly what ignore does.
Ignore means that Solaar will not try to change the setting at all, so if the bug happens then it's not a Solaar problem.
I used to have the problem with Solaar and the driver interfering with each other, which is why the ignore status was added.
If the problem is happening on resume then it sound to me like somehow the driver is changing the mouse to hi-resolution (smooth) scrolling. I suspect that either somehow the mouse is sending messages that the driver isn't picking up on or the mouse isn't processing the command that the driver sends.
One thing you could do is to run Solaar with the setting set on ignore and see what responses the mouse provides to messages sent by the driver. To do this you need to run Solaar as solaar -ddd
and look for read messages from the mouse that don't correspond to something that Solaar sends. It is not going to be easy, because there will be a lot of traffic.
Now that I think about it, hidconsole is a better tool to see what is going on. It is in the Solaar tools directory.
Oh, I doubt the bug is related to Solaar. This was discussed in https://github.com/pwr-Solaar/Solaar/issues/519 Seems to be a kernel issue as it occurs only on kernel 5.x, which is where relevant changes were introduced.
Unfortunately I have no idea how to diagnose the slow scrolling issue. It happens frequently, many times per day, but I can't reproduce it consistently at will.
Anyway, it is off topic for this Solaar issue. I just wondered if anything relevant might stand out after all this time since you are so familiar with these settings.
@adatum
If you want, you can try to figure out what is going wrong by using hidconsole. If you run it in a regular terminal it will gather all messages coming from a receiver or device. You need to know the /dev/hidraw node for the receiver or device, which you can find out from Solaar, but don't have Solaar running when you are trying to diagnose the situation because you will then see responses to the commands that Solaar sends.
Your setup appears to be an M720 mouse on a unifying receiver, at device number 1. The mouse has the following feature:
34: HIRES WHEEL {2121}
You can find information on how this feature works by Googling logitech x2121 hires wheel lekensteyn
and downloading the PDF document.
What you are looking for are messages about this feature. The most important looks something like
>> ( 98.189) [11 01 2220 02000000000000000000000000000000] ...
This is a response message from the device for a command message telling it to set the HIRES WHEEL to high resolution mode, indicating that device did so. The command message itself is not picked up by hidconsole.
The fields of messages are: length (11 for long or 10 for short); device number (here 01); register or feature index (here 22, which is the index on your mouse for the HIRES WHEEL, my mouse uses 0E); the command (here 2, which means to set the wheel mode); response number (here 0, which it shouldn't be but the device is just echoing what the driver sent); and the data (here 020000, for responses very often the same as in the command). The set bit in the data indicates that the command was to set the wheel to high-resolution mode.
You will also see lots of messages about mouse movements, which will start with 20.
Here is what I see for my MX Master 3 mouse when I turn the mouse off and on. Turn the mouse off:
>> ( 92.633) [10 01 4104 728240] ...
Turn the mouse on
>> ( 98.105) [10 01 4104 B28240] ...
>> ( 98.109) [11 01 0400 01010100000000000000000000000000] ...
>> ( 98.117) [11 01 0800 64320000000000000000000000000000] ...
>> ( 98.133) [11 01 0800 64320000000000000000000000000000] ...
>> ( 98.141) [11 01 0810 0404C078050000000000000000000000] ...
>> ( 98.165) [11 01 0001 0E000100000000000000000000000000] ...
>> ( 98.189) [11 01 0E20 02000000000000000000000000000000] ...
>> ( 98.213) [11 01 0001 0E000100000000000000000000000000] ...
>> ( 98.239) [11 01 0E00 0F1C1818000000000000000000000000] ...
The messages with 41 say that the mouse is disconnecting and then connecting. They come from the receiver itself. The message with 04 (also 04 for the M720) is a WIRELESS DEVICE STATUS notification from the mouse saying that it has been off and needs to be set up again. The messages with 08 (also 08 for the M720) are BATTERY STATUS notifications (or responses) from the mouse. All these appear to me to be ignored by the Linux driver (but I might be wrong).
The message with 00 (also 00 for the M720) is a response saying that some feature has index 0E and is version 01. For the MX Master 3 this is the HIRES WHEEL. You should see a similar response but containing 22. This is undoubtably the driver finding out how to control the HIRES WHEEL.
Then there is the response to a command to set the wheel to high resolution.
Then there is another discovery for HIRES WHEEL.
Then there is a response to a command to discover information about the HIRES WHEEL. The response says that the multiplier is 0F and the rest is likely flags, most of which I don't have documentation for. The two that I know show that the wheel can report inverted and has a ratchet. It looks as if the only thing the driver module cares about is the multiplier.
What to do with this? See if the communication looks different, particularly whether it is missing the responses to the HIRES WHEEL commands or missing the notification requesting setup. The former would indicate a problem with the driver; the latter might mean a problem with the mouse but could also mean that the mouse didn't need setup and then maybe the driver doesn't do the right thing. This final possibility could result if your computer sleeps for only a short time and the mouse doesn't go into a power-saving mode.
The question is then how to get someone's attention. The HIDPP driver module is at https://github.com/torvalds/linux/blob/master/drivers/hid/hid-logitech-hidpp.c but I don't see any problems in it. Hires srcolling appears to be enabled at every connection (hidpp_connect_event) so I would expect to see the four HIRES WHEEL interactions each time the mouse connects. Your best bet is to send a short email with a quick analysis of the situation and request who to contact for more help to Nestor Lopez Casado who is listed as an author of the module and still works at Logitech.
@pfps Thanks so much for your time and effort in writing that amazingly detailed explanation!
At a glance, the messages I see are very similar to your example.
Device 1 is the M720 mouse. Device 2 is the K830 keyboard. I left messages for both in case there are any hints.
Collected with hidconsole /dev/hidraw2
which is the node for the Unifying receiver.
Turning the mouse off:
>> ( 8.332) [10 01 4104 725E40] ...
>> ( 8.334) [20 01 4201 0000000000000000000000] ...
Turning the mouse back on:
>> ( 10.550) [10 01 4104 B25E40] ...
>> ( 10.552) [20 01 4200 0000000000000000000000] ...
>> ( 10.554) [11 01 0400 01010100000000000000000000000000] ...
>> ( 10.576) [11 01 0800 32140000000000000000000000000000] ...
>> ( 10.592) [11 01 0810 0400C21C0A0000000000000000000000] ...
>> ( 10.608) [11 01 0001 22000000000000000000000000000000] ...
>> ( 10.624) [11 01 2220 02000000000000000000000000000000] ...
>> ( 10.640) [11 01 0001 22000000000000000000000000000000] ...
>> ( 10.658) [11 01 2200 080C0000000000000000000000000000] ...
It appears normal to me, though the problem was not present at that moment. It never is when the mouse is just turned on. I could leave hidconsole
running, but I'm not sure how to match the messages to when the problem happens.
I also found many instances of this message in the system logs:
logitech-hidpp-device 0003:046D:405E.0006: Couldn't get wheel multiplier (error -110)
But the slow scrolling problem occurs much more frequently than the timestamps of that message, and I don't know if the messages and problem coincide.
The system log message is indicative of some sort of error. Matching this error against the output of hidconsole would provide more information, but the message itself should be reported. (Where? Fedora bugzilla at least.)
What you want to do is to wait until the problem occurs. Then try to determine the last connection interactions shown in hidconsole and see whether they are like the good interaction you have provided above.
The error comes from https://github.com/torvalds/linux/blob/master/drivers/hid/hid-logitech-hidpp.c The code probably means timeout
Log for K810 with similar error:
19:47:04,555 DEBUG [MainThread] logitech_receiver.base: (22) <= w[11 FF 0009 19810000000000000000000000000000]
19:47:04,566 DEBUG [MainThread] logitech_receiver.base: (22) => r[11 FF 0009 08000000000000000000000000000000]
19:47:18,897 DEBUG [AsyncUI] logitech_receiver.base: (25) <= w[11 FF 081B 02000000000000000000000000000000]
19:47:19,326 DEBUG [AsyncUI] logitech_receiver.base: (25) => r[11 FF FF08 1B050000000000000000000000000000]
19:47:19,326 ERROR [AsyncUI] logitech_receiver.base: (25) device 255 error on feature request {081B}: 5 = logitech internal
@pfps do you need additional info for the k810?
@Jerther More information would be helpful.
Could you try sending commands to your K810 using hidconsole?
What you need to find out is the path for the HID raw node for the keyboard and its index (device number). Both can be found from Solaar, in the device information pane that is shown when you click on the information button near the bottom of the main Solaar window. This will show the Path and Index. Then you need to feed a file of commands for the device into hidconsole, which is ./tools/hidconsole from the directory you get when you clone this repository. Also check that the feature index for the BACKLIGHT feature is 08 by running solaar show
and looking for a line like:
8: BACKLIGHT {1981}
You then need to prepare the commands. Replace the second column (third and fourth digits) in the lines below with the index of the keyboard. (It's hexadecimal so use FF for an index of 255.) If the feature index for BACKLIGHT is not 8, then change the fifth and sixth digits to that number in hex.
10 02 080B 000000
10 02 081C 050000
11 02 0801 00000000000000000000000000000000
11 02 0812 00000000000000000000000000000000
11 02 0813 02000000000000000000000000000000
11 02 0814 05000000000000000000000000000000
11 02 0815 0A000000000000000000000000000000
11 02 0816 14000000000000000000000000000000
11 02 0817 3C000000000000000000000000000000
11 02 0818 B4000000000000000000000000000000
11 02 0819 03000000000000000000000000000000
11 02 081A 04000000000000000000000000000000
Put the commands in a file somewhere.
Then run the following (where PATH is the path of the keyboard and FILE is the file that you stored the modified commands in)
./tools/hidconsole PATH < FILE
and post the output here.
The commands try to retrieve (seventh hex digit is 0) and set (seventh hex digit is 1) the backlight feature (feature index 08 on the K810) using both short and long HID++ commands,
solaar show
...
8: BACKLIGHT {1981}
Backlight (saved): VeryLong
Backlight : Varying
...
$ ./tools/hidconsole /dev/hidraw3 < commands.txt
.. Opening device /dev/hidraw3
.. Opened handle 3, vendor None product None serial None.
<< ( 0.022) [10 03 080B 000000] b'\x10\x03\x08\x0b\x00\x00\x00'
<< ( 0.022) [10 03 081C 050000] b'\x10\x03\x08\x1c\x05\x00\x00'
<< ( 0.022) [11 03 0801 00000000000000000000000000000000] b'\x11\x03\x08\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.022) [11 03 0812 00000000000000000000000000000000] b'\x11\x03\x08\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.022) [11 03 0813 02000000000000000000000000000000] b'\x11\x03\x08\x13\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.022) [11 03 0814 05000000000000000000000000000000] b'\x11\x03\x08\x14\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.022) [11 03 0815 0A000000000000000000000000000000] b'\x11\x03\x08\x15\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.022) [11 03 0816 14000000000000000000000000000000] b'\x11\x03\x08\x16\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.022) [11 03 0817 3C000000000000000000000000000000] b'\x11\x03\x08\x17<\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.022) [11 03 0818 B4000000000000000000000000000000] b'\x11\x03\x08\x18\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.022) [11 03 0819 03000000000000000000000000000000] b'\x11\x03\x08\x19\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.022) [11 03 081A 04000000000000000000000000000000] b'\x11\x03\x08\x1a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.456) [11 03 080B 02000000000000000000000000000000] b'\x11\x03\x08\x0b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.460) [11 03 FF08 1C050000000000000000000000000000] b'\x11\x03\xff\x08\x1c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.461) [11 03 0801 02000000000000000000000000000000] b'\x11\x03\x08\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.471) [11 03 FF08 12050000000000000000000000000000] b'\x11\x03\xff\x08\x12\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.472) [11 03 FF08 13050000000000000000000000000000] b'\x11\x03\xff\x08\x13\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.473) [11 03 FF08 14050000000000000000000000000000] b'\x11\x03\xff\x08\x14\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.474) [11 03 FF08 15050000000000000000000000000000] b'\x11\x03\xff\x08\x15\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.482) [11 03 FF08 16050000000000000000000000000000] b'\x11\x03\xff\x08\x16\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.483) [11 03 FF08 17050000000000000000000000000000] b'\x11\x03\xff\x08\x17\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.484) [11 03 FF08 18050000000000000000000000000000] b'\x11\x03\xff\x08\x18\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.486) [11 03 FF08 19050000000000000000000000000000] b'\x11\x03\xff\x08\x19\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.495) [11 03 FF08 1A050000000000000000000000000000] b'\x11\x03\xff\x08\x1a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
.. Closing handle 3
I ran this command several times to see if there was a difference on the backlight of the keyboard and sometimes I also get this result:
$ ./tools/hidconsole /dev/hidraw3 < commands.txt
.. Opening device /dev/hidraw3
.. Opened handle 3, vendor None product None serial None.
<< ( 0.015) [10 03 080B 000000] b'\x10\x03\x08\x0b\x00\x00\x00'
<< ( 0.015) [10 03 081C 050000] b'\x10\x03\x08\x1c\x05\x00\x00'
<< ( 0.015) [11 03 0801 00000000000000000000000000000000] b'\x11\x03\x08\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.015) [11 03 0812 00000000000000000000000000000000] b'\x11\x03\x08\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.015) [11 03 0813 02000000000000000000000000000000] b'\x11\x03\x08\x13\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.015) [11 03 0814 05000000000000000000000000000000] b'\x11\x03\x08\x14\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.015) [11 03 0815 0A000000000000000000000000000000] b'\x11\x03\x08\x15\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.015) [11 03 0816 14000000000000000000000000000000] b'\x11\x03\x08\x16\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.015) [11 03 0817 3C000000000000000000000000000000] b'\x11\x03\x08\x17<\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.015) [11 03 0818 B4000000000000000000000000000000] b'\x11\x03\x08\x18\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.015) [11 03 0819 03000000000000000000000000000000] b'\x11\x03\x08\x19\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.015) [11 03 081A 04000000000000000000000000000000] b'\x11\x03\x08\x1a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.095) [01 00 0000 0000000000] b'\x01\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.103) [11 03 080B 02000000000000000000000000000000] b'\x11\x03\x08\x0b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.108) [11 03 FF08 1C050000000000000000000000000000] b'\x11\x03\xff\x08\x1c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.109) [11 03 0801 02000000000000000000000000000000] b'\x11\x03\x08\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.110) [11 03 FF08 12050000000000000000000000000000] b'\x11\x03\xff\x08\x12\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.119) [11 03 FF08 13050000000000000000000000000000] b'\x11\x03\xff\x08\x13\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.120) [11 03 FF08 14050000000000000000000000000000] b'\x11\x03\xff\x08\x14\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.122) [11 03 FF08 15050000000000000000000000000000] b'\x11\x03\xff\x08\x15\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.124) [11 03 FF08 16050000000000000000000000000000] b'\x11\x03\xff\x08\x16\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.129) [11 03 FF08 17050000000000000000000000000000] b'\x11\x03\xff\x08\x17\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.130) [11 03 FF08 18050000000000000000000000000000] b'\x11\x03\xff\x08\x18\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.132) [11 03 FF08 19050000000000000000000000000000] b'\x11\x03\xff\x08\x19\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.140) [11 03 FF08 1A050000000000000000000000000000] b'\x11\x03\xff\x08\x1a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
.. Closing handle 3
And sometimes this
$ ./tools/hidconsole /dev/hidraw3 < commands.txt
.. Opening device /dev/hidraw3
.. Opened handle 3, vendor None product None serial None.
<< ( 0.024) [10 03 080B 000000] b'\x10\x03\x08\x0b\x00\x00\x00'
<< ( 0.025) [10 03 081C 050000] b'\x10\x03\x08\x1c\x05\x00\x00'
>> ( 0.025) [01 00 0000 0000000000] b'\x01\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.025) [11 03 0801 00000000000000000000000000000000] b'\x11\x03\x08\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.025) [11 03 0812 00000000000000000000000000000000] b'\x11\x03\x08\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.025) [11 03 0813 02000000000000000000000000000000] b'\x11\x03\x08\x13\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.025) [11 03 0814 05000000000000000000000000000000] b'\x11\x03\x08\x14\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.025) [11 03 0815 0A000000000000000000000000000000] b'\x11\x03\x08\x15\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.025) [11 03 0816 14000000000000000000000000000000] b'\x11\x03\x08\x16\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.025) [11 03 0817 3C000000000000000000000000000000] b'\x11\x03\x08\x17<\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.025) [11 03 0818 B4000000000000000000000000000000] b'\x11\x03\x08\x18\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.025) [11 03 0819 03000000000000000000000000000000] b'\x11\x03\x08\x19\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<< ( 0.025) [11 03 081A 04000000000000000000000000000000] b'\x11\x03\x08\x1a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.526) [11 03 080B 02000000000000000000000000000000] b'\x11\x03\x08\x0b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.531) [11 03 FF08 1C050000000000000000000000000000] b'\x11\x03\xff\x08\x1c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.532) [11 03 0801 02000000000000000000000000000000] b'\x11\x03\x08\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.533) [11 03 FF08 12050000000000000000000000000000] b'\x11\x03\xff\x08\x12\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.538) [11 03 FF08 13050000000000000000000000000000] b'\x11\x03\xff\x08\x13\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.540) [11 03 FF08 14050000000000000000000000000000] b'\x11\x03\xff\x08\x14\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.542) [11 03 FF08 15050000000000000000000000000000] b'\x11\x03\xff\x08\x15\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.543) [11 03 FF08 16050000000000000000000000000000] b'\x11\x03\xff\x08\x16\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.545) [11 03 FF08 17050000000000000000000000000000] b'\x11\x03\xff\x08\x17\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.546) [11 03 FF08 18050000000000000000000000000000] b'\x11\x03\xff\x08\x18\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.547) [11 03 FF08 19050000000000000000000000000000] b'\x11\x03\xff\x08\x19\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.548) [11 03 FF08 1A050000000000000000000000000000] b'\x11\x03\xff\x08\x1a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
.. Closing handle 3
At some point I thought the results were pretty random... I hope it makes sens to you.
It also does not seem to affect the backlight of the keyboard.
These all show the same behaviour. The device reports the backlight setting but commands that try to change it result in errors. The variation is some sort of HID report from the keyboard, not related to the commands being sent.
The only other thing to try is to just send one command at a time. Create a file with only
11 03 0814 05000000000000000000000000000000
and send that to the keyboard using hidconsole.
$ ./tools/hidconsole /dev/hidraw3 < command2.txt
.. Opening device /dev/hidraw3
.. Opened handle 3, vendor None product None serial None.
<< ( 0.022) [11 03 0814 05000000000000000000000000000000] b'\x11\x03\x08\x14\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>> ( 0.508) [11 03 FF08 14050000000000000000000000000000] b'\x11\x03\xff\x08\x14\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
.. Closing handle 3
OK. I'll have to get more information about this feature.
Also I have Windows 10 installed on my machine. I could install the Logitech software (SetPoint I believe it is) and sniff the communication with the device, if that's possible. But I have no idea how to do that. Let me know :)
I don't know how to do that in Windows either, I'm afraid.
Ok so I took some time to try and sniff the communication between Windows and the keyboard and I was unsuccessful for personal reasons*.
However, here's a screenshot of Logitech's SetPoint software for the K810. As you can see there's nothing but a notification option:
*: I found this sniffer that should sniff bluetooth as well as USB. But it needs .Net Framework 3.5, which I don't have. Windows 10 then needs Windows Update to install it, but I voluntarily turned it off for personal reasons and there's no way I'm turning it on again. Anyway even the offline installer for dotnet35 won't work without Windows Update enabled, there's no guarantee the sniffer will install, let alone work on W10, and there's no guarantee I'll be able to sniff anything since SetPoint doesn't show any control. So at that point I gave up. Oh well :)
So it appears that you can't change the backlight on these devices, even though documentation on the feature seems to indicate so. Solaar 1.1.2 has the setting commented out, so I'm going to close this issue.
Error when trying to set backlight for K830