On Sat, 20 Nov 2021 21:54:20 -0500 Alan Stern wrote: > On Fri, Nov 19, 2021 at 05:19:15PM -0500, David Niklas wrote: > > On Wed, 17 Nov 2021 12:08:17 -0500 > > Alan Stern wrote: > > > 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. > > > > > > > > > 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