quirky Sandisk SDCZ48-032G when using XHCI
Hans Petter Selasky
hps at selasky.org
Wed Feb 20 19:21:04 UTC 2019
On 2/20/19 7:29 PM, Idwer Vollering wrote:
> Running 13-CURRENT, r344363 on amd64.
>
> dmesg:
> ugen1.3: <SanDisk Ultra> at usbus1
> umass0 on uhub4
> umass0: <SanDisk Ultra, class 0/0, rev 3.00/1.00, addr 2> on usbus1
> umass0: SCSI over Bulk-Only; quirks = 0xc100
> umass0:2:0: Attached to scbus2
> (probe0:umass-sim0:0:0:0): INQUIRY. CDB: 12 00 00 00 24 00
> (probe0:umass-sim0:0:0:0): CAM status: CCB request completed with an error
> (probe0:umass-sim0:0:0:0): Retrying command, 3 more tries remain
> (probe0:umass-sim0:0:0:0): INQUIRY. CDB: 12 00 00 00 24 00
> (probe0:umass-sim0:0:0:0): CAM status: CCB request completed with an error
> (probe0:umass-sim0:0:0:0): Retrying command, 2 more tries remain
> da0 at umass-sim0 bus 0 scbus2 target 0 lun 0
> da0: <SanDisk Ultra 1.00> Removable Direct Access SPC-4 SCSI device
> da0: Serial Number <redacted>
> da0: 400.000MB/s transfers
> da0: 29328MB (60063744 512 byte sectors)
> da0: quirks=0x2<NO_6_BYTE>
>
>
> usbconfig -d ugen1.3 dump_all_desc:
> ugen1.3: <SanDisk Ultra> at usbus1, cfg=0 md=HOST spd=SUPER (5.0Gbps)
> pwr=ON (224mA)
>
> bLength = 0x0012
> bDescriptorType = 0x0001
> bcdUSB = 0x0300
> bDeviceClass = 0x0000 <Probed by interface class>
> bDeviceSubClass = 0x0000
> bDeviceProtocol = 0x0000
> bMaxPacketSize0 = 0x0009
> idVendor = 0x0781
> idProduct = 0x5581
> bcdDevice = 0x0100
> iManufacturer = 0x0001 <SanDisk>
> iProduct = 0x0002 <Ultra>
> iSerialNumber = 0x0003 <redacted>
> bNumConfigurations = 0x0001
>
> Configuration index 0
>
> bLength = 0x0009
> bDescriptorType = 0x0002
> wTotalLength = 0x002c
> bNumInterfaces = 0x0001
> bConfigurationValue = 0x0001
> iConfiguration = 0x0000 <no string>
> bmAttributes = 0x0080
> bMaxPower = 0x0070
>
> Interface 0
> bLength = 0x0009
> bDescriptorType = 0x0004
> bInterfaceNumber = 0x0000
> bAlternateSetting = 0x0000
> bNumEndpoints = 0x0002
> bInterfaceClass = 0x0008 <Mass storage>
> bInterfaceSubClass = 0x0006
> bInterfaceProtocol = 0x0050
> iInterface = 0x0000 <no string>
>
> Endpoint 0
> bLength = 0x0007
> bDescriptorType = 0x0005
> bEndpointAddress = 0x0081 <IN>
> bmAttributes = 0x0002 <BULK>
> wMaxPacketSize = 0x0400
> bInterval = 0x0000
> bRefresh = 0x0000
> bSynchAddress = 0x0000
>
> Additional Descriptor
>
> bLength = 0x06
> bDescriptorType = 0x30
> bDescriptorSubType = 0x01
> RAW dump:
> 0x00 | 0x06, 0x30, 0x01, 0x00, 0x00, 0x00
>
>
> Endpoint 1
> bLength = 0x0007
> bDescriptorType = 0x0005
> bEndpointAddress = 0x0002 <OUT>
> bmAttributes = 0x0002 <BULK>
> wMaxPacketSize = 0x0400
> bInterval = 0x0000
> bRefresh = 0x0000
> bSynchAddress = 0x0000
>
> Additional Descriptor
>
> bLength = 0x06
> bDescriptorType = 0x30
> bDescriptorSubType = 0x0f
> RAW dump:
> 0x00 | 0x06, 0x30, 0x0f, 0x00, 0x00, 0x00
>
>
> Proposed, yet unimproving the CCB stall, diff:
> Index: sys/dev/usb/quirk/usb_quirk.c
> ===================================================================
> --- sys/dev/usb/quirk/usb_quirk.c (revision 344363)
> +++ sys/dev/usb/quirk/usb_quirk.c (working copy)
> @@ -396,6 +396,8 @@
> UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_IGNORE_RESIDUE),
> USB_QUIRK(SANDISK, SDCZ4_256, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
> UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_IGNORE_RESIDUE),
> + USB_QUIRK(SANDISK, SDCZ48_32, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
> + UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_IGNORE_RESIDUE),
> USB_QUIRK(SANDISK, SDDR31, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
> UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_READ_CAP_OFFBY1),
> USB_QUIRK(SANDISK, IMAGEMATE_SDDR289, 0x0000, 0xffff,
> Index: sys/dev/usb/usbdevs
> ===================================================================
> --- sys/dev/usb/usbdevs (revision 344363)
> +++ sys/dev/usb/usbdevs (working copy)
> @@ -4067,6 +4067,7 @@
> product SANDISK SDCZ2_256 0x7104 Cruzer Mini 256MB
> product SANDISK SDCZ4_128 0x7112 Cruzer Micro 128MB
> product SANDISK SDCZ4_256 0x7113 Cruzer Micro 256MB
> +product SANDISK SDCZ48_32 0x5581 Ultra 32GB
> product SANDISK IMAGEMATE_SDDR289 0xb6ba ImageMate SDDR-289
>
> /* Sanwa Electric Instrument Co., Ltd. products */
> Index: sys/cam/scsi/scsi_da.c
> ===================================================================
> --- sys/cam/scsi/scsi_da.c (revision 344363)
> +++ sys/cam/scsi/scsi_da.c (working copy)
> @@ -871,6 +871,10 @@
> {T_DIRECT, SIP_MEDIA_REMOVABLE, "16G SLC", "CHIPFANCIER",
> "1.00"}, /*quirks*/ DA_Q_NO_RC16
> },
> + {
> + {T_DIRECT, SIP_MEDIA_REMOVABLE, "SanDisk", "Ultra",
> + "1.00"}, /*quirks*/ DA_Q_RETRY_BUSY|DA_Q_NO_6_BYTE
> + },
> /* ATA/SATA devices over SAS/USB/... */
> {
> /* Sandisk X400 */
>
> I reasoned that scsi_da.c might benefit from "*" in the version field
> ("1.00"), however that won't clear the stall either.
>
Could you upload the patch in a PR and assign it to
freebsd-usb at freebsd.org ?
--HPS
More information about the freebsd-usb
mailing list