Re: Amazon Kindle disconnect after Synchronize Cache

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 05, 2021 at 05:54:43PM +0100, Matthias Schwarzott wrote:
> Hi folks,
> 
> I have an issue with my Amazon Kindle. Since some time the device
> disconnects 2 seconds after a sync command sent via USB.
> 
> See also this matching bug report:
> https://bugzilla.kernel.org/show_bug.cgi?id=203973
> 
> My current workaround is this udev-rule:
> 	SUBSYSTEM=="block", ACTION=="add", ENV{DEVTYPE}=="disk",
> ENV{ID_VENDOR}=="Kindle", RUN+="/bin/bash -c 'echo write\ through >
> /sys/block/%k/queue/write_cache'"
> 
> But I like to find a proper solution.
> 
> I did various recordings of usb-traffic with wireshark on linux and windows.
> 
> On windows, the device does not disconnect after the "Synchronize Cache"
> command.
> 
> One major difference I noticed looking at service answer time statistics:
> Windows sends a lot more requests of type "Test Unit Ready".
> * Windows: 6385 calls
> * linux: 71 calls

It's generally well known that Windows issues lots and lots of redundant 
commands to USB storage drives.

> After most of the "Synchronize Cache" commands on windows there was directly
> a following "WRITE" command. It seems WRITE commands avoid the disconnect.
> 
> But sending a plain "Synchronize Cache" under windows (8.1 and 10) does not
> trigger the disconnect.
> 
> Windows:
> 1583	14.891478	host	1.6.1	USBMS	58	SCSI: Synchronize Cache(10) LUN: 0x00
> (LBA: 0x00000000, Len: 0)
> 1584	14.891595	1.6.1	host	USB	27	URB_BULK out
> 1585	14.891613	host	1.6.1	USB	27	URB_BULK in
> 1586	14.896866	1.6.1	host	USBMS	40	SCSI: Response LUN: 0x00 (Synchronize
> Cache(10)) (Good)
> 1589	15.687209	host	1.6.1	USBMS	58	SCSI: Test Unit Ready LUN: 0x00
> 1590	15.687353	1.6.1	host	USB	27	URB_BULK out
> 1591	15.687358	host	1.6.1	USB	27	URB_BULK in
> 1592	15.687405	1.6.1	host	USBMS	40	SCSI: Response LUN: 0x00 (Test Unit
> Ready) (Good)
> 1713	16.699689	host	1.6.1	USBMS	58	SCSI: Test Unit Ready LUN: 0x00
> 1714	16.699820	1.6.1	host	USB	27	URB_BULK out
> 1715	16.699825	host	1.6.1	USB	27	URB_BULK in
> 1716	16.699915	1.6.1	host	USBMS	40	SCSI: Response LUN: 0x00 (Test Unit
> Ready) (Good)
> 1717	17.709334	host	1.6.1	USBMS	58	SCSI: Test Unit Ready LUN: 0x00
> 1718	17.709547	1.6.1	host	USB	27	URB_BULK out
> 1719	17.709552	host	1.6.1	USB	27	URB_BULK in
> 1720	17.709586	1.6.1	host	USBMS	40	SCSI: Response LUN: 0x00 (Test Unit
> Ready) (Good)
> 1721	18.712864	host	1.6.1	USBMS	58	SCSI: Test Unit Ready LUN: 0x00
> 1722	18.713081	1.6.1	host	USB	27	URB_BULK out
> 1723	18.713086	host	1.6.1	USB	27	URB_BULK in
> 1724	18.713148	1.6.1	host	USBMS	40	SCSI: Response LUN: 0x00 (Test Unit
> Ready) (Good)
> 1741	19.735245	host	1.6.1	USBMS	58	SCSI: Test Unit Ready LUN: 0x00
> 1742	19.735410	1.6.1	host	USB	27	URB_BULK out
> 1743	19.735415	host	1.6.1	USB	27	URB_BULK in
> 1744	19.735474	1.6.1	host	USBMS	40	SCSI: Response LUN: 0x00 (Test Unit
> Ready) (Good)
> 1811	20.747477	host	1.6.1	USBMS	58	SCSI: Test Unit Ready LUN: 0x00
> 1812	20.747699	1.6.1	host	USB	27	URB_BULK out
> 1813	20.747704	host	1.6.1	USB	27	URB_BULK in
> 1814	20.747766	1.6.1	host	USBMS	40	SCSI: Response LUN: 0x00 (Test Unit
> Ready) (Good)
> 1905	21.755419	host	1.6.1	USBMS	58	SCSI: Test Unit Ready LUN: 0x00
> 1906	21.755579	1.6.1	host	USB	27	URB_BULK out
> 1907	21.755584	host	1.6.1	USB	27	URB_BULK in
> 1908	21.755674	1.6.1	host	USBMS	40	SCSI: Response LUN: 0x00 (Test Unit
> Ready) (Good)
> 1911	22.769205	host	1.6.1	USBMS	58	SCSI: Test Unit Ready LUN: 0x00
> 1912	22.769355	1.6.1	host	USB	27	URB_BULK out
> 1913	22.769360	host	1.6.1	USB	27	URB_BULK in
> 1914	22.769415	1.6.1	host	USBMS	40	SCSI: Response LUN: 0x00 (Test Unit
> Ready) (Good)

Unless the Kindle advertises removable media, there doesn't seem to be 
any real point to all those TEST UNIT READY commands.  Unless they are 
what prevents the disconnections...

> How can I get further on this topic?

Is runtime power management enabled?  Maybe the Kindle disconnects 
whenever the computer tries to suspend it.  This typically happens 2 
seconds after the last command was issued, which matches your 
observations.  If runtime PM is enabled, you can try disabling it.

Alternatively, a number of Linux kernel developers work for Amazon (or 
at least, use email addresses ending in "@amazon.com"), as shown by the 
MAINTAINERS file.  Maybe one of them can get in touch with the Kindle 
software development people and find the actual answer.

Alan Stern



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux