Thread (14 messages) flat view 14 messages, 4 authors, 2021-11-24

Re: I need advice with UPS connection. (ping)

From: David Niklas <hidden>
Date: 2021-11-22 16:25:36
Also in: linux-usb, lkml

On Sat, 20 Nov 2021 21:54:20 -0500
Alan Stern [off-list ref] wrote:
On Fri, Nov 19, 2021 at 05:19:15PM -0500, David Niklas wrote:
quoted
On Wed, 17 Nov 2021 12:08:17 -0500
Alan Stern [off-list ref] wrote:  
<snip>
quoted
quoted
This will cause the kernel to ask for 1060 bytes rather than 996.
(It's also potentially dangerous, because it asks for 1060 bytes to
be stored into a 996-byte buffer; if the device sends more data than
expected then the excess will be written beyond the end of the
buffer.)

Please send a usbmon trace showing what happens with this patch
applied. And you might as well put the Set-Idle request back in,
because now we know Windows does send that request.
  
<snip>

It still disconnects. I've attached the usbmon output.  
The trace clearly shows the request for a 1060-byte HID report 
descriptor and the device sending back a 996-byte reply, just like in 
Windows.  And yet the disconnect still occurs.

The only remaining difference is the transfer of string descriptors.  
You can prevent Linux from asking for them by editing usb_string() in 
drivers/usb/core/message.c.  Just make the function return -ENOMEM 
unconditionally.  That will stop the requests from going out.

Alan Stern
Ok, I first edited the kernel to return -ENOMEM like you suggested but
the UPS still disconnected. I then edited it again to re-add the 1060
byte request and the UPS still disconnected.

I'm attaching the usbmon traces.
If you need any additional info I'll do my best to provide it.

Thanks,
David

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help