From ecu@hsc.fr  Thu May  1 13:59:27 2003
Return-Path: <ecu@hsc.fr>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id B800E37B401
	for <FreeBSD-gnats-submit@freebsd.org>; Thu,  1 May 2003 13:59:27 -0700 (PDT)
Received: from itesec.hsc.fr (itesec.hsc.fr [192.70.106.33])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 5B2C943F93
	for <FreeBSD-gnats-submit@freebsd.org>; Thu,  1 May 2003 13:59:26 -0700 (PDT)
	(envelope-from ecu@hsc.fr)
Received: from silver.hsc.fr (silver.hsc.fr [192.70.106.98])
	(using TLSv1 with cipher EDH-RSA-DES-CBC3-SHA (168/168 bits))
	(Client CN "silver.hsc.fr", Issuer "HSC CA" (verified OK))
	by itesec.hsc.fr (Postfix) with ESMTP id 7D5C82105B
	for <FreeBSD-gnats-submit@freebsd.org>; Thu,  1 May 2003 22:59:24 +0200 (CEST)
Received: by silver.hsc.fr (Postfix, from userid 1000)
	id 534D45850; Thu,  1 May 2003 22:59:22 +0200 (CEST)
Message-Id: <20030501205922.534D45850@silver.hsc.fr>
Date: Thu,  1 May 2003 22:59:22 +0200 (CEST)
From: Nicolas Jombart <ecu@ipv42.net>
Reply-To: Nicolas Jombart <ecu@ipv42.net>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: Quirks for i-Bead MP3 player/USB key
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         51675
>Category:       kern
>Synopsis:       Quirks for i-Bead MP3 player/USB key
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    njl
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu May 01 14:00:23 PDT 2003
>Closed-Date:    Thu Aug 21 22:45:57 PDT 2003
>Last-Modified:  Thu Aug 21 22:45:57 PDT 2003
>Originator:     Nicolas Jombart
>Release:        FreeBSD 5.0-CURRENT i386
>Organization:
>Environment:
System: FreeBSD silver.hsc.fr 5.0-CURRENT FreeBSD 5.0-CURRENT #27: Thu May 1 22:25:24 CEST 2003 ecu@silver.hsc.fr:/usr/obj/usr/src/sys/SILVER i386


	
>Description:
	

I have an i-Bead MP3 player, which is seen as a USB disk.

http://www.i-bead.co.kr/
(exact model is EXATELECOM i-BEAD100)

Errors when plugging the device are :

May  1 12:56:58 silver kernel: umass0: EXATEL  , Inc. I-BEAD Multi Player, rev 1.10/0.01, addr 2
May  1 12:56:58 silver kernel: umass0: Get Max Lun not supported (IOERROR)
May  1 12:56:58 silver kernel: da0 at umass-sim0 bus 0 target 0 lun 0
May  1 12:56:58 silver kernel: da0: <EXATEL i-BEAD100 0001> Removable Direct Access SCSI-4 device 
May  1 12:56:58 silver kernel: da0: 1.000MB/s transfers
May  1 12:56:58 silver kernel: da0: 122MB (249857 512 byte sectors: 64H 32S/T 122C)
May  1 12:57:03 silver kernel: umass0: BBB reset failed, IOERROR
May  1 12:57:03 silver kernel: umass0: BBB bulk-in clear stall failed, IOERROR
May  1 12:57:03 silver kernel: umass0: BBB bulk-out clear stall failed, IOERROR
May  1 12:57:08 silver kernel: umass0: BBB reset failed, IOERROR
(many times)
May  1 12:57:09 silver kernel: (da0:umass-sim0:0:0:0): Synchronize cache failed, status == 0x4, scsi status == 0x0

[12:57] root@silver # usbdevs -v
Controller /dev/usb0:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
 port 1 addr 2: full speed, self powered, config 1, product 0x8008(0x8008), Sigmatel(0x066f), rev 0.01
 port 2 powered
Controller /dev/usb1:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered

After compiling with quirks, I can mount the drive and don't get error or panic
when unplugging anymore.

[22:39] root@silver # camcontrol inquiry da0
pass0: <EXATEL i-BEAD100 0001> Removable Direct Access SCSI-4 device 
pass0: Serial Number                     
pass0: 1.000MB/s transfers 

Logs when the device is ok are :

May  1 22:38:49 silver kernel: umass0: EXATEL  , Inc. I-BEAD Multi Player, rev 1.10/0.01, addr 2
May  1 22:38:49 silver kernel: umass0: SCSI over Bulk-Only; quirks = 0x0010
May  1 22:38:49 silver kernel: umass0: Get Max Lun not supported (IOERROR)
May  1 22:38:49 silver kernel: umass0:0:0:-1: Attached to scbus0
May  1 22:38:49 silver kernel: da0 at umass-sim0 bus 0 target 0 lun 0
May  1 22:38:49 silver kernel: da0: <EXATEL i-BEAD100 0001> Removable Direct Access SCSI-4 device 
May  1 22:38:49 silver kernel: da0: 1.000MB/s transfers
May  1 22:38:49 silver kernel: da0: 122MB (249857 512 byte sectors: 64H 32S/T 122C)
(...)
May  1 22:39:13 silver kernel: umass0: at uhub0 port 2 (addr 2) disconnected
May  1 22:39:13 silver kernel: (da0:umass-sim0:0:0:0): lost device
May  1 22:39:13 silver kernel: (da0:umass-sim0:0:0:0): removing device entry
May  1 22:39:13 silver kernel: umass0: detached

>How-To-Repeat:
	

Plug this device with clean kernel.

>Fix:

In fact, this just comes from many many tries (may need optimization) :

--- scsi_da.c   Thu May  1 11:40:11 2003
+++ /usr/src/sys/cam/scsi/scsi_da.c     Thu May  1 22:44:14 2003
@@ -463,6 +463,14 @@
                 */
                {T_DIRECT, SIP_MEDIA_REMOVABLE, "SanDisk", "ImageMate*", "*"},
                /*quirks*/ DA_Q_NO_6_BYTE
+       },
+       {
+               /*
+                * EXATEL i-BEAD MP3 player/USB key
+                *
+                */
+               {T_DIRECT, SIP_MEDIA_REMOVABLE, "EXATEL", "i-BEAD*", "*"},
+               DA_Q_NO_6_BYTE | DA_Q_NO_SYNC_CACHE
        }
 };

--- usbdevs.h   Thu May  1 18:25:06 2003
+++ /usr/src/sys/dev/usb/usbdevs.h      Thu May  1 18:27:24 2003
@@ -1032,6 +1032,9 @@
 /* Siemens products */
 #define        USB_PRODUCT_SIEMENS_SPEEDSTREAM 0x1001          /* SpeedStream USB */
 
+/* Sigmatel */
+#define USB_PRODUCT_SIGMATEL_IBEAD     0x8008          /* i-BEAD MP3 player */
+
 /* SIIG products */
 #define        USB_PRODUCT_SIIG_DIGIFILMREADER 0x0004          /* DigiFilm-Combo Reader */
 
--- umass.c     Thu May  1 14:52:11 2003
+++ /usr/src/sys/dev/usb/umass.c        Thu May  1 22:20:39 2003
@@ -379,6 +379,10 @@
          UMASS_PROTO_ATAPI | UMASS_PROTO_CBI_I,
          FORCE_SHORT_INQUIRY
        },
+       { USB_VENDOR_SIGMATEL, USB_PRODUCT_SIGMATEL_IBEAD, RID_WILDCARD,
+          UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
+         SHUTTLE_INIT
+        },
        { VID_EOT, PID_EOT, RID_EOT, 0, 0 }
 };


	


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->njl 
Responsible-Changed-By: johan 
Responsible-Changed-When: Tue May 6 12:24:33 PDT 2003 
Responsible-Changed-Why:  
Over to quirks maintainer. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=51675 
State-Changed-From-To: open->feedback 
State-Changed-By: njl 
State-Changed-When: Wed May 14 16:24:58 PDT 2003 
State-Changed-Why:  

What dmesg do you get if you leave the NO_SYNC_CACHE quirk out?  Does it 
stop working?  What about if you remove the USB quirk entry?  My feeling is 
that only the NO_6_BYTE quirk is needed. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=51675 

From: Nicolas Jombart <ecu@ipv42.net>
To: Nate Lawson <njl@FreeBSD.org>
Cc: FreeBSD-gnats-submit@freebsd.org, ecu@ipv42.net
Subject: Re: kern/51675: Quirks for i-Bead MP3 player/USB key
Date: Sun, 18 May 2003 10:50:52 +0200

 On Wed, May 14, 2003 at 04:25:44PM -0700, Nate Lawson wrote:
 > What dmesg do you get if you leave the NO_SYNC_CACHE quirk out?  Does it
 > stop working?  What about if you remove the USB quirk entry?  My feeling is
 > that only the NO_6_BYTE quirk is needed.
 
 With only NO_6_BYTE :
 
 umass0: EXATEL  , Inc. I-BEAD Multi Player, rev 1.10/0.01, addr 2
 umass0: SCSI over Bulk-Only; quirks = 0x0010
 umass0: Get Max Lun not supported (IOERROR)
 umass0:0:0:-1: Attached to scbus0
 da0 at umass-sim0 bus 0 target 0 lun 0
 da0: <EXATEL i-BEAD100 0001> Removable Direct Access SCSI-4 device 
 da0: 1.000MB/s transfers
 da0: 122MB (249857 512 byte sectors: 64H 32S/T 122C)
 umass0: BBB reset failed, IOERROR
 umass0: BBB bulk-in clear stall failed, IOERROR
 umass0: BBB bulk-out clear stall failed, IOERROR
 (da0:umass-sim0:0:0:0): Synchronize cache failed, status == 0x10, scsi status == 0x0
 umass0: BBB reset failed, IOERROR
 umass0: BBB bulk-in clear stall failed, IOERROR
 umass0: BBB bulk-out clear stall failed, IOERROR
 umass0: BBB reset failed, IOERROR
 umass0: BBB bulk-in clear stall failed, IOERROR
 umass0: BBB bulk-out clear stall failed, IOERROR
 umass0: BBB reset failed, IOERROR
 umass0: BBB bulk-in clear stall failed, IOERROR
 umass0: BBB bulk-out clear stall failed, IOERROR
 umass0: BBB reset failed, IOERROR
 umass0: BBB bulk-in clear stall failed, IOERROR
 umass0: BBB bulk-out clear stall failed, IOERROR
 umass0: BBB reset failed, IOERROR
 umass0: BBB bulk-in clear stall failed, IOERROR
 umass0: BBB bulk-out clear stall failed, IOERROR
 umass0: BBB reset failed, IOERROR
 umass0: BBB bulk-in clear stall failed, IOERROR
 umass0: BBB bulk-out clear stall failed, IOERROR
 Opened disk da0 -> 5
 (this sequence 2 more times)
 umass0: BBB bulk-in clear stall failed, IOERROR
 umass0: BBB bulk-out clear stall failed, IOERROR
 umass0: BBB reset failed, IOERROR
 umass0: BBB bulk-in clear stall failed, IOERROR
 umass0: at uhub0 port 2 (addr 2) disconnected
 (da0:umass-sim0:0:0:0): lost device
 umass0: detached
 (null): BBB bulk-out clear stall failed, CANCELLED
 (da0:umass-sim0:0:0:0): removing device entry
 Opened disk da0 -> 5
 panic: (null): Unknown state 1
 
 
 syncing disks, buffers remaining... 1396 1396 1396 1396 1396 1396 1396
 1396 1396 1
 396 1396 1396 1396 1396 1396 1396 1396 1396 1396 1396 
 giving up on 1292 buffers
 
 
 With only NO_SYNC_CACHE :
 
 umass0: EXATEL  , Inc. I-BEAD Multi Player, rev 1.10/0.01, addr 2
 umass0: SCSI over Bulk-Only; quirks = 0x0010
 umass0: Get Max Lun not supported (IOERROR)
 umass0:0:0:-1: Attached to scbus0
 da0 at umass-sim0 bus 0 target 0 lun 0
 da0: <EXATEL i-BEAD100 0001> Removable Direct Access SCSI-4 device 
 da0: 1.000MB/s transfers
 da0: 122MB (249857 512 byte sectors: 64H 32S/T 122C)
 umass0: BBB reset failed, IOERROR
 umass0: BBB bulk-in clear stall failed, IOERROR
 umass0: BBB bulk-out clear stall failed, IOERROR
 (ten times)
 Opened disk da0 -> 5
 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
 umass0: detached
 
 => system OK but device don't work
 
 
 
 Some new info :
 
 From time to time, with SHUTTLE_INIT, NO_6_BYTE and NO_SYNC_CACHE,
 in normal operations, I get these messages :
 
 May 14 09:46:15 silver kernel: usbd_start_next: error=5
 
 => can't umount, etc. Freeze if I leave out the device.
 
 
 Or :
 
 May 15 17:36:18 silver kernel: umass0: BBB reset failed, IOERROR
 May 15 17:36:18 silver kernel: umass0: BBB bulk-in clear stall failed, IOERROR
 May 15 17:36:18 silver kernel: umass0: BBB bulk-out clear stall failed, IOERROR
 May 15 17:36:18 silver kernel: umass0: Invalid CSW: tag 545 should be 546
 May 15 17:36:18 silver kernel: umass0: BBB reset failed, IOERROR
 May 15 17:36:19 silver kernel: umass0: BBB bulk-in clear stall failed, IOERROR
 May 15 17:36:19 silver kernel: umass0: BBB bulk-out clear stall failed, IOERROR
 May 15 17:36:23 silver kernel: umass0: BBB reset failed, IOERROR
 May 15 17:36:23 silver kernel: umass0: BBB bulk-in clear stall failed, IOERROR
 May 15 17:36:24 silver kernel: umass0: BBB bulk-out clear stall failed, IOERROR
 May 15 17:36:28 silver kernel: umass0: BBB reset failed, IOERROR
 May 15 17:36:28 silver kernel: umass0: BBB bulk-in clear stall failed, IOERROR
 May 15 17:36:29 silver kernel: umass0: BBB bulk-out clear stall failed, IOERROR
 May 15 17:36:34 silver kernel: umass0: BBB reset failed, IOERROR
 May 15 17:36:34 silver kernel: umass0: BBB bulk-in clear stall failed, IOERROR
 May 15 17:36:34 silver kernel: umass0: BBB bulk-out clear stall failed, IOERROR
 
 => after umount -> freeze
 
 These errors are non reproductible, they only occur "from time to time".
 
 Thanks,
 
 Nicolas.

From: Nate Lawson <nate@root.org>
To: Nicolas Jombart <ecu@ipv42.net>
Cc: freebsd-gnats-submit@freebsd.org
Subject: Re: kern/51675
Date: Fri, 8 Aug 2003 11:41:39 -0700 (PDT)

 Please try -current or -stable and see which quirks are still needed.  I
 think the NO_6_BYTE can go away.  After you test, I'll commit whatever is
 still needed.

From: Nicolas Jombart <ecu@ipv42.net>
To: Nate Lawson <nate@root.org>
Cc: freebsd-gnats-submit@freebsd.org
Subject: Re: kern/51675
Date: Wed, 20 Aug 2003 19:28:30 +0200

 Hi Nate,
 
 On Fri, Aug 08, 2003 at 11:41:39AM -0700, Nate Lawson wrote:
 > Please try -current or -stable and see which quirks are still needed.  I
 > think the NO_6_BYTE can go away.  After you test, I'll commit whatever is
 > still needed.
 
 The NO_6_BYTE can go away. I tested on a fresh -CURRENT system, and I
 still need DA_Q_NO_SYNC_CACHE :
 
 diff -ruN scsi/scsi_da.c /usr/src/sys/cam/scsi/scsi_da.c
 --- scsi/scsi_da.c	Wed Aug 20 18:41:14 2003
 +++ /usr/src/sys/cam/scsi/scsi_da.c	Wed Aug 20 19:09:09 2003
 @@ -364,6 +364,14 @@
  		{T_DIRECT, SIP_MEDIA_REMOVABLE, "MITSUMI", "USB FDD", "*"},
  		/*quirks*/ DA_Q_NO_SYNC_CACHE
  	},
 +	{
 +		/*
 +		 * EXATEL i-BEAD MP3 player/USB key
 +		 *
 +		 */
 +		{T_DIRECT, SIP_MEDIA_REMOVABLE, "EXATEL", "i-BEAD*", "*"},
 +		DA_Q_NO_SYNC_CACHE
 +	},
  #endif /* DA_OLD_QUIRKS */
  };
 
 Logs without any quirks in scsi_da are the same as in the beginning of
 the PR.
 
 And of course, SHUTTLE_INIT in dev/usb.
 
 The logs with this and DA_OLD_QUIRKS is :
 
 Aug 20 19:05:12 silver kernel: umass0: EXATEL  , Inc. I-BEAD MultiPlayer, rev 1.10/0.01, addr 2
 Aug 20 19:05:12 silver kernel: umass0: Get Max Lun not supported (IOERROR)
 Aug 20 19:05:13 silver kernel: da0 at umass-sim0 bus 0 target 0 lun 0
 Aug 20 19:05:13 silver kernel: da0: <EXATEL i-BEAD100 0001> Removable Direct Access SCSI-4 device 
 Aug 20 19:05:13 silver kernel: da0: 1.000MB/s transfers
 Aug 20 19:05:13 silver kernel: da0: 122MB (249857 512 byte sectors: 64H 32S/T 122C)
 
 I'm still confused about "Get Max Lun not supported", but it works.
 
 Thanks!
State-Changed-From-To: feedback->closed 
State-Changed-By: njl 
State-Changed-When: Thu Aug 21 22:45:31 PDT 2003 
State-Changed-Why:  
A slightly modified version of the patch has been committed to 5.x and will 
be mfcd in 3 days. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=51675 
>Unformatted:
