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
        "", "",
        "-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" ]]

    [[ -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";;

    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}

1 Answer 1


Seagate SMART Attribute Specification: http://t1.daumcdn.net/brunch/service/user/axm/file/zRYOdwPu3OMoKYmBOby1fEEQEbU.pdf

3.11 Attribute ID 188: Command Timeout Count

Normalized Command Timeout Count = 100 - Command Timeout Count.

This attribute tracks the number of command time outs as defined by an active command being interrupted by a HRESET and COMRESET or SRST or another command.

The normalized value is only computed when the number of commands is in the range 10^3 to 10^4. The CommandCount and ErroCount are cleared when Number Of Commands reaches 10^4. The error count used to compute normalized value is not reported in attribute Raw value. It is reported in vendor info area of Attribute sector, bytes 474:475.

If Command Timeout Count is > 99, normalize value of 1 is reported. The initial Worst Value is set to 0xFD as a special case.

Raw Usage

Raw [1 - 0] = Total # of command timeouts, with Max hold of FFFFh

Raw [3 - 2] = Total # of commands with > 5 second completion, including those > 7.5 seconds

Raw [5 - 4] = Total # of commands with > 7.5 second completion

So 4295032833 -> HEX = 0x100010001. 0x0001, 0x0001, 0x0001 = 1, 1, 1, I suppose. All is well.

EDIT: Made a simple online calculator that converts some of the Seagate values.

enter image description here

  • good find on the source document. That helped to authenticate the format of the data and I'm sure will help others also. This question has been turned to a request upstream to the smartmontools team. Oct 17, 2022 at 22:49
  • Worried about a huge value for Command_Timeout on two new Seagate Exos X16 (ST16000NM000J), I have found it also applies to them. Note that both disks experienced actual command timeouts (shown in dmesg, which prompted the investigation) due to an enclosure issue, and with the above -v 188,raw16 the counters match the number of dmesg errors exactly (resp. 53 53 53 and 172 172 172; timeout was 19s).
    – Lloeki
    Jul 21, 2023 at 10:51
  • That was ST16000NM000J-2TW103/SN02 above, but can't edit anymore. There also appear to be an entry (lacking the above) for these Exos but only matching G (SAS) variants, not J (SATA)
    – Lloeki
    Jul 21, 2023 at 11:00

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .