SMART never attained the status of "standard" and its original
documents have been withdrawn. Its catchy name lives on, especially on
vendors' web sites and obviously in the name of this toolset. Luckily
the good ideas in SMART have been incorporated into the ATA and SCSI
standards albeit in slightly different forms.
Initially SMART began on SCSI disks as vendor specific extensions.
Gradually the SMART functionality has moved into the standards (often
by other names) and vendors are improving their standards' compliance.
[In the vendors' defence some of the "standards" are drafts and are
yet to be ratified.] Some SCSI disk vendors have product manuals
(available on the net) that cover the parts of the SCSI command set
that their disks support. Some of these manuals fill in details that
are left deliberately vague in the the standards.
SCSI standards (found at www.t10.org) only make one footnote reference
to the term SMART. In its place the awkward term "Informational
Exceptions" is used. For SCSI tapes the term "TapeAlert" is used.
Since USB drives "talks SCSI", so this applies to them as well:
See the section "Informational Exceptions" on the page linked above to see what the codes reported by
smartctl (when it's not
P.S. Although it appears that most USB flash drives from major vendors have this kind of SMART implemented, I cannot rule out that it may actually be bogus (e.g. merely done to meet certain SCSI requirements or so). Perhaps internally the controller does nothing to monitor the storage memory but simply reports
OK all the time. Also, as you can see,
Self Test logging is not supported, which means running short/long test on them makes no sense (even if it can apparently be started).
If you are talking about those commonly-seen "SMART attribute data", they are apparently ATA-specific.
FWIW, some of the "premium" USB flash drives (yes even sticks) are actually USB-bridged SATA drive. Since they are technically standard ATA drive behind the scene, so most of them will at least return some SMART attributes data.
To read them you can for example use
smartctl -d sat -A (SAT stands for SCSI-ATA Translation; here it pretty much means to use the
ATA PASSTRHOUGH SCSI command introduced in the SAT standard):