smartctl on external hdd inside ide-to-usb enclosure
There is a vendor independent SAT (SCSI/ATA transfer) standard, but AFAIK this is not widely supported on (cheaper) bridges.
There are several vendor specific ATA pass-through commands that you can select with smartctl
with the -d
option:
-d TYPE, --device=TYPE
Specify device type to one of: ata, scsi, sat[,N][+TYPE],
usbcypress[,X], usbjmicron[,x][,N], usbsunplus, marvell,
areca,N, 3ware,N, hpt,L/M/N, megaraid,N, cciss,N, auto, test
where -d sat
is for SAT compatible devices.
The USB Device Support lists devices and their commandline options, so if you get a USB controller with one of the devices listed there as supported, you have a better chance of getting things to work.
SMART over USB is generally either not possible, or is done with (bridge) vendor-specific commands, so there's no one way to get things done. smartctl
knows about a few specific bridge chips. Check the manpage for a list.
This is horrible, but the only 100% reliable way to access SMART on a disk is to unplug it from the bridge and stick it on a proper host adaptor (like an on-board SATA controller or eSATA port).
With modern OS abstraction it's so easy to forget just how different these storage buses are internally.
There isn't an appropriate value of -d
.
The problem is that you're using a SATA↔USB mass storage bridge, and USB mass storage doesn't have a standard way to request ATA/SATA SMART data. So instead the controller has either no way or some vendor-specific way to get the data. smartctl
knows a few of these; examples include usbjmicron
and usbsubplus
.
So, if your USB bridge isn't one of the ones it knows about (and doesn't use exactly the same vendor-specific commands), smartctl
just can't read the data.