I've used h2testw for Windows to prove cards I bought from eBay\Amazon were fake in the past. I don't buy these things from eBay or Amazon now because of these issues - I find I get better results when buying from trusted retailers such as:
. My Memory
. eBuyer
. 7 Day Shop
. etc

You can download h2testw from:
http://www.heise.de/download/product/h2testw-50539

I've also seen recommendations for F3 on Linux:
http://oss.digirati.com.br/f3/

The Open Source Photrec software produces good results for data recovery as does the commercial R-Studio:
http://www.cgsecurity.org/wiki/PhotoRec
http://www.r-studio.com/

Beware though that most of these data testing tools have destructive tests that overwrite all blocks, so be careful what options you choose!

On Mon, 27 Jun 2016 at 13:25 Jonathan McDowell <noodles@earth.li> wrote:
On Mon, Jun 27, 2016 at 12:45:13PM +0100, Mark Rogers wrote:
> On 22 June 2016 at 14:24, MJ Ray <mjr@phonecoop.coop> wrote:
> > It's trying to read from the SCSI device and getting an error code
> > in reply. More detail than that probably needs me to read the SCSI
> > protocol descriptions and driver source code.
>
> OK, so which bits mean that?

> In particular, what does Sense Key mean? ... except that I've just
> established for myself that this is the SCSI error code (in this case
> "Hardware Error", right?). Supposition on my part: Add = Additional,
> where additional info might be included with the error code (sense
> key) but isn't here? With the next couple of lines indicating where on
> the device the error occurred?

When a SCSI device hits an error it returns 3 bytes of data about what
that was; the sense key (SK), then potentially an additional sense code
(ASC) and an additional sense code qualifier (ASCQ).

The "CDB" in the error below is the SCSI command that was sent to the
device - a "Read(10)" which means a 10 byte read command (there are
read6 and read16 read commands - largely about how many bytes there are
for describing the sector to read).

T10/SBC3 explains the READ10 command:

28          = READ10
00          = (flags)
06 87 47 30 = Sector 109528880
00          = (reserved)
00 08       = transfer length, 8 blocks (8 * 512 = 4k)
00          = (control byte)

So your kernel sent down a read, there was an return code 04/00/00 i.e.
a hardware error with no additional information, and as a result the
upper layers said there was an error filling the read buffer.

> But then I am thrown by the Buffer I/O error - to me a buffer error
> implies it's not the media that's at fault but something in the
> interface between it and the O/S, suggesting that the problem is in
> the PC hardware (or USB card reader) not the card itself - but now I'm
> just guessing....
>
> Jun 16 11:43:45 mark-pc kernel: [92204.212656] sd 11:0:0:2: [sdf]
> tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
> Jun 16 11:43:45 mark-pc kernel: [92204.212669] sd 11:0:0:2: [sdf]
> tag#0 Sense Key : Hardware Error [current]
> Jun 16 11:43:45 mark-pc kernel: [92204.212675] sd 11:0:0:2: [sdf]
> tag#0 Add. Sense: No additional sense information
> Jun 16 11:43:45 mark-pc kernel: [92204.212683] sd 11:0:0:2: [sdf]
> tag#0 CDB: Read(10) 28 00 06 87 47 30 00 00 08 00
> Jun 16 11:43:45 mark-pc kernel: [92204.212688] blk_update_request: I/O
> error, dev sdf, sector 109528880
> Jun 16 11:43:45 mark-pc kernel: [92204.212696] Buffer I/O error on dev
> sdf1, logical block 13690854, async page read
J.

--
/-\                             | I'm not allowed to talk to you any
|@/  Debian GNU/Linux Developer |                more.
\-                              |

_______________________________________________
main@lists.alug.org.uk
http://www.alug.org.uk/
http://lists.alug.org.uk/mailman/listinfo/main
Unsubscribe?  See message headers or the web site above!