Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot pair K750 keyboard #997

Closed
dlenski opened this issue Nov 11, 2020 · 13 comments
Closed

Cannot pair K750 keyboard #997

dlenski opened this issue Nov 11, 2020 · 13 comments

Comments

@dlenski
Copy link

dlenski commented Nov 11, 2020

Information

  • Solaar version (solaar --version or git describe --tags if cloned from this repository): solaar 1.0.4
  • Distribution: Ubuntu 18.04
  • Kernel version (ex. uname -srmo): Linux 5.4.0-52-generic x86_64 GNU/Linux
  • Output of solaar show:
Unifying Receiver
  Device path  : /dev/hidraw4
  USB id       : 046d:C52B
  Serial       : 7BAE92F4
    Firmware   : 12.10.B0032
    Bootloader : 02.14
    Other      : AA.AA
  Has 1 paired device(s) out of a maximum of 6.
  Notifications: wireless, software present (0x000900)
  Device activity counters: 1=76

Describe the bug

I have a Logitech K750 solar keyboard, purchased around 2015. For a long time, I could un-pair and re-pair it with new Unifying Receivers.

It remains paired to a specific receiver, but I'm now unable to get it to pair to a different one.

Additional context

I am wondering #205 applies here ("limit of 45 unique connections"). However, the symptoms appear to be different. When I run solaar -d pair and toggle the keyboard's on/off switch repeatedly, I simply get no messages whatsoever about the device:

$ solaar -d pair
…
18:58:13,218     INFO [MainThread] logitech_receiver.notifications: <UnifyingReceiver(/dev/hidraw4,7)>: pairing lock is open
Pairing: turn your new device on (timing out in 20 seconds).
18:58:32,778     INFO [MainThread] logitech_receiver.notifications: <UnifyingReceiver(/dev/hidraw4,7)>: pairing lock is closed
18:58:32,779  WARNING [MainThread] logitech_receiver.notifications: pairing error 1: device timeout
solaar: error: Traceback (most recent call last):
  File "/usr/share/solaar/lib/solaar/cli/__init__.py", line 199, in run
    m.run(c, args, _find_receiver, _find_device)
  File "/usr/share/solaar/lib/solaar/cli/pair.py", line 95, in run
    raise Exception('pairing failed: %s' % error)
Exception: pairing failed: device timeout

Same with -ddd. No messages whatsoever related to communication to/from the keyboard.

I've also tried removing and reinserting the keyboard's battery, and downgrading to an old version of Solaar (0.9.2). Is this a known issue? Is there any workaround? It seems like the keyboard is simply not attempting to communicate with any receiver other than the one it's already paired to.

@dlenski dlenski added the bug label Nov 11, 2020
@pfps
Copy link
Collaborator

pfps commented Nov 11, 2020

This behaviour appears to be consistent with a device that can no longer pair. Try solaar show with the device connected to its last-paired receiver if possible.

@dlenski
Copy link
Author

dlenski commented Nov 13, 2020

Here's what I get with the already-paired receiver; surprisingly it does not show the 15: REMAINING PAIRING {1DF0} hidden which I've seen on other devices.

$ solaar show
Unifying Receiver
  Device path  : /dev/hidraw4
  USB id       : 046d:C52B
  Serial       : 889E9654
    Firmware   : 12.10.B0032
    Bootloader : 02.15
    Other      : AA.AA
  Has 2 paired device(s) out of a maximum of 6.
  Notifications: wireless (0x000100)
  Device activity counters: 1=80

  1: Wireless Solar Keyboard K750
     Device path  : /dev/hidraw7
     WPID         : 4002
     Codename     : K750
     Kind         : keyboard
     Protocol     : HID++ 2.0
     Polling rate : 20 ms (50Hz)
     Serial number: 710B5F35
     Model ID:      000000000000
     Unit ID:       00000000
          Firmware: RQK 33.00.B0015
        Bootloader: DFU 00.02.B0003
     The power switch is located on the edge of top right corner.
     Supports 11 HID++ 2.0 features:
         0: ROOT                   {0000}   
         1: FEATURE SET            {0001}   
         2: DEVICE FW VERSION      {0003}   
            Firmware: Firmware RQK 33.00.B0015 4002
            Firmware: Bootloader DFU 00.02.B0003 
            Unit ID: 00000000  Model ID: 000000000000  Transport IDs: {}
         3: DEVICE NAME            {0005}   
            Name: Wireless Solar Keyboard K750
            Kind: keyboard
         4: REPROG CONTROLS        {1B00}   
         5: WIRELESS DEVICE STATUS {1D4B}   
         6: unknown:1DF3           {1DF3}   hidden
         7: FN INVERSION           {40A0}   
            Swap Fx function: False
         8: ENCRYPTION             {4100}   
         9: SOLAR DASHBOARD        {4301}   
        10: KEYBOARD LAYOUT        {4520}   
     Has 12 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
        11: SLEEP                      => Sleep                         is FN, FN sensitive, reprogrammable
     Battery status unavailable.

If I use solaar -ddd pair to see what happens when I "re-pair" this keyboard with the already-paired receiver, here's what I get:

$ solaar -ddd pair
Pairing: turn your new device on (timing out in 20 seconds).
     <I turn the keyboard on>
17:35:47,702    DEBUG [MainThread] logitech_receiver.base: (7) => r[10 01 4104 610240]
17:35:47,704    DEBUG [MainThread] logitech_receiver.base: (7) => r[20 01 4201 0000000000000000000000]
17:35:47,964    DEBUG [MainThread] logitech_receiver.base: (7) => r[10 01 4104 A10240]
17:35:47,966    DEBUG [MainThread] logitech_receiver.base: (7) => r[20 01 4200 0000000000000000000000]
17:35:47,968    DEBUG [MainThread] logitech_receiver.base: (7) => r[11 01 0500 01010100000000000000000000000000]
17:35:48,014    DEBUG [MainThread] logitech_receiver.base: (7) => r[11 01 0900 5400000655474F4F4400000000000000]
17:35:48,996    DEBUG [MainThread] logitech_receiver.base: (7) => r[11 01 0001 00000000000000000000000000000000]
17:35:49,218    DEBUG [MainThread] logitech_receiver.base: (7) => r[20 01 0101 0000000000000000000000]
17:35:49,620    DEBUG [MainThread] logitech_receiver.base: (7) => r[20 01 0100 0000000000000000000000]
17:36:04,720    DEBUG [MainThread] logitech_receiver.base: (7) => r[10 FF 4A00 010000]
17:36:04,720     INFO [MainThread] logitech_receiver.notifications: <UnifyingReceiver(/dev/hidraw4,7)>: pairing lock is closed
17:36:04,721  WARNING [MainThread] logitech_receiver.notifications: pairing error 1: device timeout
solaar: error: Traceback (most recent call last):
  File "/usr/share/solaar/lib/solaar/cli/__init__.py", line 199, in run
    m.run(c, args, _find_receiver, _find_device)
  File "/usr/share/solaar/lib/solaar/cli/pair.py", line 95, in run
    raise Exception('pairing failed: %s' % error)
Exception: pairing failed: device timeout

@pfps
Copy link
Collaborator

pfps commented Nov 13, 2020

This is as expected. Receivers ignore pairing attempts from already-paired devices.

Here is how Solaar does pairing from the CLI.

Solaar tells the receiver to open its pairing lock for 0x14 seconds and pair with the next compatible device that is turned on:

10:19:21,266    DEBUG [MainThread] logitech_receiver.base: (7) <= w[10 FF 80B2 010014]

The receiver notifies that its lock is open.

10:19:21,269    DEBUG [MainThread] logitech_receiver.base: (7) => r[10 FF 4A01 000000]
10:19:21,270     INFO [MainThread] logitech_receiver.notifications: <UnifyingReceiver(/dev/hidraw2,7)>: pairing lock is open

The receiver responds that the previous command was accepted.

10:19:21,271    DEBUG [MainThread] logitech_receiver.base: (7) => r[10 FF 80B2 000000]

Solaar tells you to turn your device on to pair.

Pairing: turn your new device on (timing out in 20 seconds).

The receiver notifies that its pairing lock is closed and that the reason is that the timeout was reached

10:19:41,118    DEBUG [MainThread] logitech_receiver.base: (7) => r[10 FF 4A00 010000]
10:19:41,118     INFO [MainThread] logitech_receiver.notifications: <UnifyingReceiver(/dev/hidraw2,7)>: pairing lock is closed

Solaar correctly interprets this timeout as a failure to pair.

10:19:41,118  WARNING [MainThread] logitech_receiver.notifications: pairing error 1: device timeout
solaar: error: Traceback (most recent call last):
  File "/home/local/SoftwareDownloads/Solaar/lib/solaar/cli/__init__.py", line 199, in run
    m.run(c, args, _find_receiver, _find_device)
  File "/home/local/SoftwareDownloads/Solaar/lib/solaar/cli/pair.py", line 95, in run
    raise Exception('pairing failed: %s' % error)
Exception: pairing failed: device timeout

Solaar doesn't actually to the pairing, just enables it and then responds to it. So there is nothing that can be done by Solaar to determine why the pairing didn't happen.

@pfps pfps removed the bug label Nov 13, 2020
@dlenski
Copy link
Author

dlenski commented Nov 13, 2020

Solaar doesn't actually to the pairing, just enables it and then responds to it. So there is nothing that can be done by Solaar to determine why the pairing didn't happen.

Thanks, that's helpful!

So I guess this means that the (bytes received from the keyboard when connecting to the already-paired receiver) aren't particularly useful in terms of explaining its behavior.

@pfps
Copy link
Collaborator

pfps commented Nov 13, 2020

No they are not. Given that your keyboard is working fine with one receiver the other possibilities are that the other receiver doesn't receive the communication from the keyboard or that either the other receiver or the keyboard can't pair any more. You can check out the first by putting the keyboard very close to the receiver. Diagnosing the second requires some knowledge of the internals of the keyboard (or receiver).

@pfps
Copy link
Collaborator

pfps commented Dec 2, 2020

@dlenski Is there anything more that is a potential Solaar problem here?

@dlenski
Copy link
Author

dlenski commented Dec 2, 2020

You can check out the first by putting the keyboard very close to the receiver.

Tried it, thanks. No difference.

Diagnosing the second requires some knowledge of the internals of the keyboard (or receiver).

I've tried several receivers, all of which can pair fine with other devices, and even tried downgrading the firmware on a receiver to an older version. No change. And still no sign of an attribute relating to 15: REMAINING PAIRING {1DF0} hidden for the keyboard.


@dlenski Is there anything more that is a potential Solaar problem here?

Nope… unless “magically explaining why my keyboard can't pair anymore” is on the roadmap 😅.

Thanks for the help, and closing.

@dlenski dlenski closed this as completed Dec 2, 2020
@xeyownt
Copy link

xeyownt commented Oct 15, 2023

Sorry to necropost, but this might be helpful to some.

I also had a pairing issue with my old k750. The keyboard was not showing up when running the pairing procedure.

I noticed that the keyboard was shortly blinking RED when switching it on (ie. low charge level). What helped is to either put the keyboard in direct sunlight for a couple hours, or to put it under direct light from an halogen lamp, until the led blinks green again on power on. Besides the charge, I suspect that the sun / lamp heating up lightly keyboard also helped. This is because I was crazy enough to retry again the pairing process to troubleshoot further, and couldn't recover it with a light sun (not enough to heat the keyboard).

Note that contrary to the documentation, the state of the LED when pressing the light check button is irrelevant. This only indicates the charge speed, not the current charge level.

@boryn
Copy link

boryn commented Nov 28, 2023

@xeyownt thank you for your comment!!!

Indeed, nothing special, seems like the starting energy is too low to initialize pairing. I left the k750 keyboard under the lamp for the night and in the morning I was able to pair as expected :)

@dlenski
Copy link
Author

dlenski commented Nov 29, 2023

Thank you @xeyownt! I was indeed able to re-pair my old K750 after charging it more intensely… huh 🤔, I still don't understand why this makes a difference specifically during the pairing process, but it sure did.

@pfps
Copy link
Collaborator

pfps commented Nov 29, 2023

Paiiring may require more energy than regular operations, or it just may be that the firmware requires a certain level of charging before it will respond to pairing requests from the receiver.

@xeyownt
Copy link

xeyownt commented Dec 3, 2023

Just for completeness, I think we can also solve the pairing issue by replacing the battery with a RECHARGEABLE ML2032 (so NOT a CR2032).

I haven't tried this, but it's very likely that the old battery may have max voltage diminishing with age, hence preventing pairing (IMO this is more like a firmware bug or super safe constraint).

There are several videos on YT explaining this for the K750 specifically and looking up I found a couple sellers on Amazon as well.

@xeyownt
Copy link

xeyownt commented Dec 3, 2023

... and for 100% fairness, the idea of charging it under direct sunlight and waiting for the keyboard to blink green came from my IT support guy at work. He did this after I threw the keyboard on the junk pile ^^ So big thanks to him :-D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants