usb-storage: how to ruin your hardware(?)

From: H.Rosmanith (Kernel Mailing List)
Date: Wed Aug 20 2003 - 20:41:35 EST



hi,

just today, I bought an "USB BAR", a 128MB flash disk. I managed to make
the device unusable and only get scsi-errors from it.

what I did:
the flask disk came with a strange partition table, and fdisk told about
partition not ending on boundaries. so I just deleted the partitions and
put a new one it, spanning the whole flask disk. then I mke2fs /dev/sda1
it, which seemed fine. as next step I wanted to install lilo on the
flask disk, because some boards can boot from USB and I wanted a
bootable linux on the "USB BAR".

now lilo complained about that it would write into the partition table?
why that?! quite strange!

this puzzled me - after all, the device should behave like
a standard scsi-device. so I just played around with /dev/sda, copying
the first 512 byte from /dev/hda to it and installed lilo then. then I
deleted everything again, copied /dev/zero (512 byte) to /dev/sda,
repartitioned, re-mke2fsd etc. etc...

and now all I ever see from the device are scsi-errors, like these:

: Raw sense data:0x70 0x00 0x03 0x00 0x00 0x00 0x00 0x0a 0x00 0x00
: 0x00 0x00 0x11 0x00 0x00 0x00 0x00 0x00
: I/O error: dev 08:00, sector 0

no matter what I try. I cant even clear this sector by dd if=/dev/zero
of=/dev/sda bs=512 count=1. I even booted the laptop of my collegue,
who has winXP on it, and tried to "format f:" (f: is usb removeable device),
but winXP quits with "error in IOCTL".

kernel version is 2.4.21.

root@themroc:/proc/scsi# cat /scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: Prolific Model: UsbFlashDisk Rev: PROL
Type: Direct-Access ANSI SCSI revision: 02
root@themroc:/proc/scsi# cat usb-storage-0/0
Host scsi0: usb-storage
Vendor: Prolific Technology Inc.
Product: USB_Storage
Serial Number: None
Protocol: 8070i
Transport: Bulk
GUID: 067b25170000000000000000
Attached: Yes

root@themroc:/proc/scsi# dmesg
usb-storage: act_altsettting is 0
usb-storage: id_index calculated to be: 94
usb-storage: Array length appears to be: 97
usb-storage: USB Mass Storage device detected
usb-storage: Endpoints: In: 0xcdb29b94 Out: 0xcdb29b80 Int: 0x00000000 (Period 0)
usb-storage: Found existing GUID 067b25170000000000000000
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 3

now, say I make "dd if=/dev/zero of=/dev/sda bs=512 count=1", this will
produce:

root@themroc:/proc/scsi# dd if=/dev/zero of=/dev/sda bs=512 count=1
dd: writing `/dev/sda': Input/output error
1+0 records in
0+0 records out
root@themroc:/proc/scsi# dmesg
....
usb-storage: Bulk status Sig 0x53425355 T 0x26 R 1024 Stat 0x1
usb-storage: -- transport indicates command failure
usb-storage: Issuing auto-REQUEST_SENSE
usb-storage: Bulk command S 0x43425355 T 0x27 Trg 0 LUN 0 L 18 F 128 CL 12
usb-storage: Bulk command transfer result=0
usb-storage: usb_stor_transfer_partial(): xfer 18 bytes
usb-storage: usb_stor_bulk_msg() returned 0 xferred 18/18
usb-storage: usb_stor_transfer_partial(): transfer complete
usb-storage: Bulk data transfer result 0x0
usb-storage: Attempting to get CSW...
usb-storage: Bulk status result = 0
usb-storage: Bulk status Sig 0x53425355 T 0x27 R 0 Stat 0x0
usb-storage: -- Result from auto-sense is 0
usb-storage: -- code: 0x70, key: 0x3, ASC: 0x11, ASCQ: 0x0
usb-storage: Medium Error: (unknown ASC/ASCQ)
usb-storage: scsi cmd done, result=0x2
usb-storage: *** thread sleeping.
scsi0: ERROR on channel 0, id 0, lun 0, CDB: 0x28 00 00 00 00 00 00 00 02 00
Current sd08:00: sns = 70 3
ASC=11 ASCQ= 0
Raw sense data:0x70 0x00 0x03 0x00 0x00 0x00 0x00 0x0a 0x00 0x00 0x00 0x00 0x11
0x00 0x00 0x00 0x00 0x00
I/O error: dev 08:00, sector 0



oops, a Medium Error :-(

so it's possible to ruin your "USB BAR" flash disk by simply dumping some
random data to /dev/sda, sector 0? not good... I've heard so that e.g.
mke2fs on a compat flash will kill the compact flash, but I've always
been wondering if this is true. now I have the proof ...

is there any way to recover the medium?

thanks in advance,
h.rosmanith
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/