kern/93872: [patch] SCSI quirk required for ELTA 8061 OL USB memory
stick / mp3 player
Oliver Fromme
olli at secnetix.de
Sun Feb 26 10:40:20 PST 2006
>Number: 93872
>Category: kern
>Synopsis: [patch] SCSI quirk required for ELTA 8061 OL USB memory stick / mp3 player
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sun Feb 26 18:40:15 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Oliver Fromme
>Release: FreeBSD 6-STABLE i386
>Organization:
secnetix GmbH & Co. KG
http://www.secnetix.de/bsd
>Environment:
Patch applies to CURRENT, RELENG_6 and RELENG_5.
I've only tested it on RELENG_6, though.
>Description:
I've recently bought a USB memory stick with mp3 player
from Elta. The product is called Elta 8061 OL, it has
1 GByte flash memory.
When I plug it in, it is detected correctly, but every
access to it just hangs, no matter what I try (fdisk,
or simply read the first block with dd). All processes
are stuck in the "disk wait" state ("D" in ps output).
When the USB stick is removed, a bunch of error messages
are printed by the kernel, and the stuck processes are
released.
Adding a DA_Q_NO_SYNC_CACHE quirk to scsi_da.c solves
the problem. Processes don't hang, and I can access
the flash memory without problems. Please see the patch
below.
This is printed by "camcontrol devlist":
scbus3 on umass-sim0 bus 0:
<USB 2.0 > at scbus3 target 0 lun 0 (da0,pass1)
This is from "usbdevs -v":
Controller /dev/usb0:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
uhub0
port 1 powered
port 2 addr 2: full speed, power 500 mA, config 1, product 0x0001(0x0001), vendor 0x0420(0x0420), rev 1.00
umass0
And this is the dmesg output, *without* the patch:
umass0: vendor 0x0420 product 0x0001, rev 1.10/1.00, addr 2
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <USB 2.0 > Removable Direct Access SCSI-0 device
da0: 1.000MB/s transfers
da0: 999MB (2047969 512 byte sectors: 64H 32S/T 999C)
umass0: BBB reset failed, STALLED
umass0: BBB bulk-in clear stall failed, STALLED
umass0: BBB bulk-out clear stall failed, STALLED
(da0:umass-sim0:0:0:0): Synchronize cache failed, status == 0x4, scsi status == 0x0
umass0: BBB reset failed, STALLED
umass0: BBB bulk-in clear stall failed, STALLED
umass0: BBB bulk-out clear stall failed, STALLED
umass0: BBB reset failed, STALLED
umass0: BBB bulk-in clear stall failed, STALLED
umass0: BBB bulk-out clear stall failed, STALLED
umass0: BBB reset failed, STALLED
umass0: BBB bulk-in clear stall failed, STALLED
umass0: BBB bulk-out clear stall failed, STALLED
umass0: BBB reset failed, STALLED
umass0: BBB bulk-in clear stall failed, STALLED
umass0: BBB bulk-out clear stall failed, STALLED
umass0: BBB reset failed, STALLED
umass0: BBB bulk-in clear stall failed, STALLED
umass0: at uhub0 port 2 (addr 2) disconnected
(da0:umass-sim0:0:0:0): lost device
(da0:umass-sim0:0:0:0): removing device entry
Opened disk da0 -> 5
umass0: detached
>How-To-Repeat:
Insert "Elta 8061 OL" USB memory stick / mp3 player
and try to access it.
>Fix:
Unfortunately, the device strings are not very useful.
The product and revision strings are empty, and the
vendor string contains only "USB 2.0". However, I
guess this will also catch other Elta players with
similar firmware which also require the quirk.
--- cam/scsi/scsi_da.c.orig Sat Nov 26 23:55:20 2005
+++ cam/scsi/scsi_da.c Mon Feb 20 11:46:34 2006
@@ -341,6 +341,13 @@
},
{
/*
+ * Elta 8061OL MP3 Player
+ */
+ {T_DIRECT, SIP_MEDIA_REMOVABLE, "USB 2.0" , "", ""},
+ /*quirks*/ DA_Q_NO_SYNC_CACHE
+ },
+ {
+ /*
* TEAC USB floppy mechanisms
*/
{T_DIRECT, SIP_MEDIA_REMOVABLE, "TEAC" , "FD-05*", "*"},
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list