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