pwr-Solaar / Solaar

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

The Unifying devices and limit of forty-five (45) unique connections #205

Closed 3F closed 7 years ago

3F commented 9 years ago

... maybe you know, because your software worked with Unifying receivers and you can know more about protocol and inner structure, similar problem etc.

So, needed a more information about wonderful limitation for all Logitech Unifying products.

I think it's the best restriction for all my practice :) why ? who ? for what ? this is the first thoughts when you see the official notice after locked devices - "Some Unifying devices have a limit of forty-five (45) unique connections" (link on official site is no more available and the new i can't find, but you can also see the similar problem)

yeah, great news

so, I got a similar problem in past year and I tried to contact with official supports 3 times i remember. However, no any informations... full ignoring. Great news for new purchased product :) and moreover, i'm afraid for my others the Unifying devices...

incredibly for standard operations with official software o_o All my receivers not kept last pairing with this keyboard, i.e. i can't use this keyboard anymore

"in the trash.. later" - I thought, and ~year later, today i agian see this my new old locked keyboard K520

End of long history :) to the question:

In general, lock should be exist on devices, not for receivers. How it's stored and where this stored ? EEPROM ? maybe it's not a hard lock for programmatically changing

Can we manually set key for receiver for pairing this device ? or problems with certificate or some crc ?

Lekensteyn commented 9 years ago

I am afraid that you will not be able to circumvent this issue, otherwise Logitech would have released a software/firmware update to fix this. It is not good for their PR to have such issues.

3F commented 9 years ago

I am afraid that you will not be able to circumvent this issue

well :( as is.. no time for own analysis

for all - be careful with all the Unifying devices from Logitech! who would have thought at all about this -_- official support is silent

anyway, would be nice to get a more information about this restriction if anyone knows or have a more time for debugging of used protocol etc... write here, i'm watching this

Lekensteyn commented 9 years ago

For clarity, the 45 connections limit occurs only with some older devices. See http://support.logitech.com/en_us/article/14577. My devices have no issues with this limit.

Without further details I can only speculate what happens. Perhaps the memory can only be rewritten X times.

3F commented 9 years ago

only with some older devices

maybe, I don't know.. but I also have the older Performance MX mouse (bought in ~2011) and many successful connections between 2-3 receivers before this case o_O

You have two Unifying receivers: one on your laptop and one on your desktop. You use the same mouse with your laptop and desktop, and switch back and forth between the two Unifying receivers. Because your mouse is switching between two Unifying receivers, each time you connect, you use one of the total available connections. Eventually, you will hit the connection limit.

anyway item above - awesome.

Perhaps the memory can only be rewritten X times

:) yeah but the EEPROM(for example - i.e. haven't seen scheme) not too expensive to use as complete solution for all logitech devices and this.. from tens or hundreds of thousands of times to a million re/write operations

I mean yes, it can be hardware limitation with very very poor elements... but o_o It seems more likely:

http://support.logitech.com/en_us/article/14577

The device will continue to work with the last receiver it was connected to.

it will be nice :) but...

Lekensteyn commented 9 years ago

What is the error anyway? AFAIK there is no error, you just get a timeout right?

3F commented 9 years ago

@Lekensteyn

yes, immediately(2-4 sec) dropped the pairing as a 'device timout' for Solaar:

 WARNING [ReceiverListener:hidraw1] logitech_receiver.notifications: pairing error 1: device timeout

22:34:06,669     INFO [ReceiverListener:hidraw1] logitech_receiver.notifications: <UnifyingReceiver(/dev/hidraw1,6)>: pairing lock is open
22:34:06,669     INFO [ReceiverListener:hidraw1] solaar.listener: status_changed <UnifyingReceiver(/dev/hidraw1,6)>: present, 1 paired device. (1) pairing lock is open
22:34:06,709    ERROR [MainThread] solaar.ui.notify: showing <Notification object at 0xa266c84 (NotifyNotification at 0xa29d260)>
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/solaar/ui/notify.py", line 136, in show
    n.show()
  File "/usr/lib/python2.7/dist-packages/gi/types.py", line 43, in function
    return info.invoke(*args, **kwargs)
GError: The connection is closed
22:34:10,588     INFO [ReceiverListener:hidraw1] logitech_receiver.notifications: <UnifyingReceiver(/dev/hidraw1,6)>: pairing lock is closed
22:34:10,588  WARNING [ReceiverListener:hidraw1] logitech_receiver.notifications: pairing error 1: device timeout
22:34:10,588     INFO [ReceiverListener:hidraw1] solaar.listener: status_changed <UnifyingReceiver(/dev/hidraw1,6)>: present, 1 paired device. (1) pairing lock is closed
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/solaar/ui/__init__.py", line 165, in _status_changed
    window.update(device, need_popup)
  File "/usr/local/lib/python2.7/dist-packages/solaar/ui/window.py", line 780, in update
    _model.set_value(item, _COLUMN.STATUS_ICON, 'network-wireless' if is_pairing else None)
  File "/usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py", line 1237, in set_value
    Gtk.TreeStore.set_value(self, treeiter, column, value)
  File "/usr/lib/python2.7/dist-packages/gi/types.py", line 43, in function
    return info.invoke(*args, **kwargs)

p.s.

and similar with official utility

Lekensteyn commented 9 years ago

Since the protocol does not give any hint, there is nothing we can do (in the context of Solaar).

If you are tinkerer you could lookup FCC documents and see whether you can do something with the hardware inside. You said that you have already tried (customer) support, but if that does not work you have little options. Maybe you could get a radio spectrum analyzer and play with it, but that is all more advanced stuff.

3F commented 9 years ago

you can do something with the hardware inside

in the trash would be cheaper :) it's not worth the trouble.. in general, I software developer

You said that you have already tried (customer) support

yes, I have official ticket number of my issue on support.logitech.com btw, currently I can't access to my account :) (Error: No account found with that email address.)

Maybe you could get a radio spectrum analyzer and play with it

I think easier to use the EPROM-Programmer or other for used type memory and similar keyboard to dump this :)

SlySven commented 8 years ago

It sounds like the Logitech coders had a thought originally along the lines of "oh, lets let the device keep track of the connection history (which receiver it was paired with)" and arranged for that data to be written to permanent memory and forgot to use a ring-buffer type arrangement rather than a straight list in that memory.

This worked fine for the first few dozen times of testing and the design was signed-off for manufacturing for the earlier devices - but, as they only left space for 45 changes, it breaks on those earlier ones when that limit is reached - so someone spotted it and put out a fix for later models. I'd say you'd have a claim for "product not suitable for intended purposes" in the UK (where I am) but the legislation in your part of the :earth_africa: may be different.

jrbenito commented 7 years ago

@Lekensteyn

Still relevant?

Lekensteyn commented 7 years ago

Barring new breakthroughs in reverse engineering, I doubt this will be possible and it will probably be out of scope for Solaar.

Enthusiasts with some time are free to comment here though.

dlenski commented 3 years ago

The Logitech document on this issue is now here.

I am wondering if this limit applies to a K750 keyboard purchased in ~2015…? It appears I can no longer re-pair it.

pfps commented 3 years ago

Possibly. My understanding is that some devices use write-once memory and so can only pair a limited number of times.

Although I don't have documentation on it, I expect devices with feature REMAINING_PAIRING=0x1DF0 only pair a limited number of times.

But it also might be that you receiver is out of pairings. Solaar keeps track of this, so click on the receiver in the main window.

3F commented 3 years ago

The Logitech document on this issue is now here.

The device will continue to work with the last receiver it was connected to.

The truth is that it's not a true. 'should' instead of 'will' is a correct word. Tested with my all 3 or 4 receivers to be sure (in that period).

You have two Unifying receivers: one on your laptop and one on your desktop. You use the same mouse with your laptop and desktop, and switch back and forth between the two Unifying receivers. Because your mouse is switching between two Unifying receivers, each time you connect, you use one of the total available connections. Eventually, you will hit the connection limit.

Yep, this was my case as I remember it. Between my two laptops with their two receivers.

If you're unable to connect your device to another Unifying receiver, please contact Customer Care.

Hmm, My account was simply deleted in attempts to contact them, 2015.

@dlenski, convey my greetings to them if you will try to contact!

2020, I don't remember where I placed my keyboard, probably, with other instruments for future soldering etc. But I did not have time/tools to inspect this or check something. More like this just a trash and nothing more.

Logitech-Unifying-45-limit-K520 ( my device, old photo from 2016 )

@pfps

My understanding is that some devices use write-once memory and so can only pair a limited number of times.

My thoughts were about some configurable write protection comparing to HW/eeprom limitation. And according to some publicly available datasheet at 2020, this is it;

nRF24LE1H ( Credits to Nordic products, using public datasheet from infocenter.nordicsemi.com )

Memory:

16 kB code memory:

As we can see, IP area (512 bytes for configuration) can be configured and used in different ways.

The X Logitech counter could be stored in 256 bytes at 0x100 with protection or IP may also split the main block into protected and unprotected areas by using RDISMB (readback protection 1 byte size at 0x23 in IP). This can only be changed once by SPI command RDISMB (0x85) but can be reseted by ERASE ALL (0x62). This, however, will erase the entire IP (or only the main block if FSR.INFEN is low)

Anyway, there's no HW limitation around 24LE1(H); only Logitech bad design in their old products (REV.008 etc)