A recent smartclt
report on a Seagate "Iron Wolf" ST4000VN008-2DR166 included the following that caught my eye since Command_Timeout is on Backblaze's list of SMART indicators of impending disk failure.
188 Command_Timeout -O--CK 100 099 000 - 4295032833
Digging into this a bit further, this Smartmontools.org ticket suggests that other Seagate drives may use this field as three packed 2 byte integers interpreted as
[0:1] Command Timeout Occurred
[2:3] Command Timeout Occurred, command was in queue >5 seconds
[4:5] Command Timeout Occurred, command was in queue >7.5 seconds
Note that the submitter of this ticket did not identify the source of this interpretation.
As suggested in the ticket, I used -v 188,raw16
with this result which seems to make much more sense
188 Command_Timeout -O--CK 100 099 000 - 1 1 1
Looking at the Smartmontools.org drive database this drive is listed as
{ "Seagate IronWolf", // tested with ST3000VN007-2E4166/SC60, ST4000VN008-2DR166/SC60,
// ST6000VN001-2BB186/SC60, ST6000VN0033-2EE110/SC60, ST6000VN0041-2EL11C/SC61,
// ST8000VN0022-2EL112/SC61, ST10000VN0004-1ZD101/SC60,
// ST12000VN0007-2GS116/SC60, ST12000VN0008-2JH101/SC60
"ST(1|2|3|4|6|8|10|12)000VN00(0?[2478]|1|22|33|41)-.*",
"", "",
"-v 18,raw48,Head_Health "
"-v 200,raw48,Pressure_Limit "
"-v 240,msec24hour32"
},
The maintainers have tested this drive and have identified a few values (18,200, 240) that need specific formatting, but not value 188.
Seagate's page "How do I interpret SMART diagnostic utilities results?" indicates that the interpretation of their SMART values are proprietary
Please remember that these third-party programs do not have proprietary access to Seagate hard disk information, and therefore often provide inconsistent and inaccurate results.
The Smartmontool's wiki for Seagate Drives does not include parameter 188.
With that context, are there other source that might provide authoritative information on interpreting this data value? If not, I'm going to use the the "raw16" interpretation and look into how this info can be shared with the drive database maintainers.
Update I submitted this to the smartmontools mailing list, but not being a member, the submission is held in moderation. Looking at their backlog and their FAQ, it doesn't look like this will be incorporated in the short term.
I've updated my code on an interim basis to check the Model number and add the option locally for this specific drive
Update 2: Removed the quotes around ${SC_Opts}
in the code snippet below since, when no option was set the empty quoted string as interpreted as a non-option argument and caused smartctl to fail.
while [[ ! -z "$1" ]]
do
DRIVE="$1"
shift
[[ -b "$DRIVE" ]] || { echo "'${DRIVE}' is not a block device"; continue; }
MODEL=$(sudo hdparm -i "$DRIVE" | sed -n '/Model/s/ Model=\(.*\), Fw.*/\1/p')
case "${MODEL}" in
"ST4000VN008-2DR166" ) SC_Opts="-v 188,raw16";;
esac
STATS=$(sudo smartctl -a ${SC_Opts} "${DRIVE}" | sed -n '
/5 Reallocated_Sector_Ct/s/^.\{87\}\([0-9]*\).*/REALOC=\1;/p
/9 Power_On_Hours/s/^.\{87\}\([0-9]*\).*/HRS=\1;/p
/184 End-to-End_Error/s/^.\{87\}\([0-9]*\).*/EEErr=\1;/p
/187 Reported_Uncorrect/s/^.\{87\}\([0-9]*\).*/RPTIncor=\1;/p
/188 Command_Timeout/s/^.\{87\}\([0-9]*\).*/CMDTO=\1;/p
/197 Current_Pending_Sector/s/^.\{87\}\([0-9]*\).*/PENDING_S=\1;/p
/198 Offline_Uncorrectable/s/^.\{87\}\([0-9]*\).*/OFL_UNCOR=\1;/p
/199 UDMA_CRC_Error_Count/s/^.\{87\}\([0-9]*\).*$/CRCE=\1;/p
/241 Total_LBAs_Written/s/^.\{87\}\([0-9]*\).*$/LBAW=\1;/p
/242 Total_LBAs_Read/s/^.\{87\}\([0-9]*\).*$/LBAR=\1;/p
')
eval ${STATS}
...