On Tue, 22 Jan 2008, Hamish Rodda wrote:

> Hi,
> 
> My girlfriend's 1gb lexar USB memory stick stopped working today, and I was 
> hoping someone could advise what I could do to retrieve the non-backed up 
> data...
> 
> When it is plugged in, the following is written to /var/log/messages:
> 
> usb 5-6: new high speed USB device using ehci_hcd and address 12
> usb 5-6: configuration #1 chosen from 1 choice
> scsi7 : SCSI emulation for USB Mass Storage devices
> scsi 7:0:0:0: Direct-Access              USB MEMORY BAR   1000 PQ: 0 ANSI: 0 
> CCS
> sd 7:0:0:0: [sdb] 11 512-byte hardware sectors (0 MB)
> sd 7:0:0:0: [sdb] Write Protect is off
> sd 7:0:0:0: [sdb] 11 512-byte hardware sectors (0 MB)
> sd 7:0:0:0: [sdb] Write Protect is off
>  sdb:<6>usb 5-6: reset high speed USB device using ehci_hcd and address 12
> usb 5-6: reset high speed USB device using ehci_hcd and address 12
> usb 5-6: USB disconnect, address 12
> sd 7:0:0:0: [sdb] Result: hostbyte=DID_NO_CONNECT 
> driverbyte=DRIVER_OK,SUGGEST_OK
> end_request: I/O error, dev sdb, sector 0
> 
> <snip... above messages repeated many times>
> 
> then much the same followed by
> usb 5-6: reset high speed USB device using ehci_hcd and address 13
> sd 8:0:0:0: [sdb] Result: hostbyte=DID_ABORT driverbyte=DRIVER_OK,SUGGEST_OK
> 
> and much of this:
> end_request: I/O error, dev sdb, sector 1
> end_request: I/O error, dev sdb, sector 0
> 
> eventually:
> unable to read partition table
> sd 8:0:0:0: [sdb] Attached SCSI removable disk
> sd 8:0:0:0: Attached scsi generic sg2 type 0
> 
> 
> lsusb gives the following information:
> Bus 005 Device 013: ID 090c:3000 Feiya Technology Corp.
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               2.00
>   bDeviceClass            0 (Defined at Interface level)
>   bDeviceSubClass         0
>   bDeviceProtocol         0
>   bMaxPacketSize0        64
>   idVendor           0x090c Feiya Technology Corp.
>   idProduct          0x3000
>   bcdDevice            1.00
>   iManufacturer           1 Silicon Motion,Inc.
>   iProduct                2 SM321AA MEMORY BAR
>   iSerial                 0
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           32
>     bNumInterfaces          1
>     bConfigurationValue     1
>     iConfiguration          0
>     bmAttributes         0x80
>       (Bus Powered)
>     MaxPower              100mA
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass         8 Mass Storage
>       bInterfaceSubClass      6 SCSI
>       bInterfaceProtocol     80 Bulk (Zip)
>       iInterface              0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0200  1x 512 bytes
>         bInterval             255
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x02  EP 2 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0200  1x 512 bytes
>         bInterval             255
> Device Qualifier (for other device speed):
>   bLength                10
>   bDescriptorType         6
>   bcdUSB               2.00
>   bDeviceClass            0 (Defined at Interface level)
>   bDeviceSubClass         0
>   bDeviceProtocol         0
>   bMaxPacketSize0        64
>   bNumConfigurations      1
> Device Status:     0x0000
>   (Bus Powered)
> 
> ... and /proc/partitions:
>    8    16    11       sdb
> 
> (fwiw, uname -a gives: Linux glow 2.6.22-14-generic #1 SMP Tue Dec 18 
> 08:02:57 
> UTC 2007 i686 GNU/Linux)
> 
> So it seems the device is reported as 512 byte sectors x 11 sectors, but you 
> can't read from any of it (read error).  This is obviously an incorrect size, 
> is there some way I can force it to a reasonable guessed size, so I can run 
> dd_recover?  (or anything else I can do?)

You can force the device to appear to have a particular size by hacking
the code in drivers/scsi/sd.c:sd_read_capacity().  However I doubt it
will do much good if the device isn't able to read any sectors after 
the first 11.

Alan Stern

-
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to