The purpose of this page is to list some tools for SATA disk or device troubleshooting on Unix-like operating systems. Serial ATA is specified by the SATA International Organization; the most current revision as of October 2015 is SATA 3.2, released August 2013. Intel specifies the Advanced Host Controller Interface; as of October 2015 the most recent revision is 1.3.1 [link to pdf]. The SMART page has some additional info.
hddtemp
hddtemp gives you the temperature of your hard drive by reading SMART data if available. More specifically, hddtemp handles current SATA devices as long as they’re reporting SMART code Temperature_Celsius or Airflow_Temperature_Celsius on ID# 194. A normal response looks like this:
$ sudo hddtemp /dev/sd? /dev/sda: WDC WD10EACS-00ZJB0: 38°C
If hddtemp reports “no sensor” several things could be happening:
- Your disk genuinely doesn’t have a temperature sensor (as is the case with some rotational disks, and quite a few SSDs)
- Your disk is reporting Temperature_Celsius on another SMART ID# (190 is common, again with SSDs)
- The temp sensor is defective or buggy in some way
Some drives (e.g., some Seagate models) are known to falsely report absurd temperatures here (150+ degrees Celsius). A weird value here doesn’t necessarily mean your disk is about to cook off and explode.
You can try to determine the correct temp ID by running hddtemp with the debug flag:
$ hddtemp --debug /dev/sda INTEL SSDSC2BW180A3L field(5) = 0 field(9) = 35 field(12) = 101 field(170) = 0 field(171) = 0 field(172) = 0 field(174) = 96 field(183) = 0 field(184) = 0 field(187) = 0 field(190) = 42 field(192) = 96 field(199) = 0 field(225) = 80 field(226) = 255 field(227) = 12 field(228) = 255 field(232) = 0 field(233) = 0 field(241) = 80 field(242) = 23 field(249) = 69
In this case field 190 looks like a good candidate, so we’ll go with that. Copying some files to the disk should increase that value if you’re uncertain. You can also try to determine the temperature ID by running smartctl -a /dev/sdX (see below).
If you can successfully determine the temperature ID#, open the hddtemp database file “hddtemp.db”. This file can be located in different places, most likely /etc or /etc/default. Add something like the following (I’m using my own laptop’s SSD here as an example):
######################################## ############# My Intel SSD ######################################## "INTEL SSDSC2BW180A3L" 190 C "INTEL SSD 520 Series SATA III"
The first value is the model ID, the second is the ID reporting Temperature_Celsius, C or F specifies Celsius or Fahrenheit, and the last field is a meaningful name for the disk. Save and close the file and run hddtemp /dev/sda again. It should now show the correct values:
$ hddtemp /dev/sda /dev/sda: INTEL SSDSC2BW180A3L: 45°C
lsscsi For a SATA Disk
lsscsi is intended to inspect SCSI devices in Linux, but it seems to work fine with SATA devices:
<p>$ lsscsi -l</p> [0:0:0:0] disk ATA INTEL SSDSC2BW18 LF1i /dev/sda state=running queue_depth=31 scsi_level=6 type=0 device_blocked=0 timeout=30 [1:0:0:0] cd/dvd MATSHITA DVD-RAM UJ8C0 SB01 /dev/sr0 state=running queue_depth=1 scsi_level=6 type=5 device_blocked=0 timeout=30
$ lsscsi -H -v
[0] ahci dir: /sys/class/scsi_host//host0 device dir: /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0 [1] ahci dir: /sys/class/scsi_host//host1 device dir: /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1 [2] ahci dir: /sys/class/scsi_host//host2 device dir: /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2 [3] ahci dir: /sys/class/scsi_host//host3 device dir: /sys/devices/pci0000:00/0000:00:1f.2/ata4/host3 [4] ahci dir: /sys/class/scsi_host//host4 device dir: /sys/devices/pci0000:00/0000:00:1f.2/ata5/host4 [5] ahci dir: /sys/class/scsi_host//host5 device dir: /sys/devices/pci0000:00/0000:00:1f.2/ata6/host5
$ lsscsi -v
[0:0:0:0] disk ATA INTEL SSDSC2BW18 LF1i /dev/sda dir: /sys/bus/scsi/devices/0:0:0:0 [/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0] [1:0:0:0] cd/dvd MATSHITA DVD-RAM UJ8C0 SB01 /dev/sr0 dir: /sys/bus/scsi/devices/1:0:0:0 [/sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0]
SMART for a SATA Disk
SMART is a monitoring system, available in most modern hard disks, that tries to diagnose disk status and predict failure. You can determine a disk’s SMART capability with smartctl -i:
$ smartctl -i /dev/sda smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-24-generic] (local build) Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Device Model: INTEL SSDSC2BW180A3L Serial Number: CVCV31340221180EGN LU WWN Device Id: 5 5cd2e4 00007bd64 Firmware Version: LF1i User Capacity: 180,045,766,656 bytes [180 GB] Sector Size: 512 bytes logical/physical Rotation Rate: Solid State Device Device is: Not in smartctl database [for details use: -P showall] ATA Version is: ACS-2 (minor revision not indicated) SATA Version is: SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s) Local Time is: Sat Oct 10 17:16:53 2015 CDT SMART support is: Available - device has SMART capability. SMART support is: Enabled [recombinator](0) $ sudo smartctl -i /dev/sda smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/
You can tell if the specific hard drive model is known via -P show (this isn’t necessary for SMART to be used):
$ smartctl -a /dev/sda -P show smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-24-generic] (local build) Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org No presets are defined for this drive. Its identity strings: MODEL: INTEL SSDSC2BW180A3L FIRMWARE: LF1i do not match any of the known regular expressions. Use -P showall to list all known regular expressions.
A disk that is known will look like this:
$ smartctl -a /dev/sda -P show smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-24-generic] (local build) Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org Drive found in smartmontools Database. Drive identity strings: MODEL: ST31000340AS FIRMWARE: SD13 match smartmontools Drive Database entry: MODEL REGEXP: ^ST3(500[368]2|750[36]3|1000[36]4)0AS?$ FIRMWARE REGEXP: .* MODEL FAMILY: Seagate Barracuda 7200.11 ATTRIBUTE OPTIONS: None preset; no -v options are required.
To view the current statistics for a drive, use smartctl -a:
$ smartctl -a /dev/sda smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-24-generic] (local build) Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Device Model: INTEL SSDSC2BW180A3L Serial Number: CVCV31340221180EGN LU WWN Device Id: 5 5cd2e4 00007bd64 Firmware Version: LF1i User Capacity: 180,045,766,656 bytes [180 GB] Sector Size: 512 bytes logical/physical Rotation Rate: Solid State Device Device is: Not in smartctl database [for details use: -P showall] ATA Version is: ACS-2 (minor revision not indicated) SATA Version is: SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s) Local Time is: Sat Oct 10 17:18:51 2015 CDT SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: Offline data collection status: (0x00) Offline data collection activity was never started. Auto Offline Data Collection: Disabled. Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run. Total time to complete Offline data collection: ( 0) seconds. Offline data collection capabilities: (0x7f) SMART execute Offline immediate. Auto Offline data collection on/off support. Abort Offline collection upon new command. Offline surface scan supported. Self-test supported. Conveyance Self-test supported. Selective Self-test supported. SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode. Supports SMART auto save timer. Error logging capability: (0x01) Error logging supported. General Purpose Logging supported. Short self-test routine recommended polling time: ( 1) minutes. Extended self-test routine recommended polling time: ( 48) minutes. Conveyance self-test routine recommended polling time: ( 2) minutes. SCT capabilities: (0x0021) SCT Status supported. SCT Data Table supported. SMART Attributes Data Structure revision number: 10 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 5 Reallocated_Sector_Ct 0x0032 100 100 000 Old_age Always - 0 9 Power_On_Hours 0x0032 096 096 000 Old_age Always - 4138 (162 92 0) 12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 1382 170 Unknown_Attribute 0x0033 100 100 010 Pre-fail Always - 0 171 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0 172 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0 174 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 1377 183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0 184 End-to-End_Error 0x0033 100 100 097 Pre-fail Always - 0 190 Temperature_Celsius 0x0032 045 048 000 Old_age Always - 60 192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 1377 199 UDMA_CRC_Error_Count 0x0032 100 100 000 Old_age Always - 0 225 Unknown_SSD_Attribute 0x0032 100 100 000 Old_age Always - 204159 226 Unknown_SSD_Attribute 0x0032 100 100 000 Old_age Always - 65535 227 Unknown_SSD_Attribute 0x0032 100 100 000 Old_age Always - 12 228 Power-off_Retract_Count 0x0032 100 100 000 Old_age Always - 65535 232 Available_Reservd_Space 0x0033 100 100 010 Pre-fail Always - 0 233 Media_Wearout_Indicator 0x0032 100 100 000 Old_age Always - 0 241 Total_LBAs_Written 0x0032 100 100 000 Old_age Always - 204159 242 Total_LBAs_Read 0x0032 100 100 000 Old_age Always - 29244 249 Unknown_Attribute 0x0013 100 100 000 Pre-fail Always - 3660 SMART Error Log not supported SMART Self-test Log not supported SMART Selective self-test log data structure revision number 0 Note: revision number not 1 implies that no selective self-test has ever been run SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS 1 0 0 Not_testing 2 0 0 Not_testing 3 0 0 Not_testing 4 0 0 Not_testing 5 0 0 Not_testing Selective self-test flags (0x0): After scanning selected spans, do NOT read-scan remainder of disk. If Selective self-test is pending on power-up, resume after 0 minute delay.
hdparm
hdparm can be used to view (and set) the parameters of SATA/IDE disk drives:
$ hdparm -I /dev/sda /dev/sda: ATA device, with non-removable media Model Number: INTEL SSDSC2BW180A3L Serial Number: CVCV31340221180EGN Firmware Revision: LF1i Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0 Standards: Used: unknown (minor revision code 0xffff) Supported: 9 8 7 6 5 Likely used: 9 Configuration: Logical max current cylinders 16383 16383 heads 16 16 sectors/track 63 63 -- CHS current addressable sectors: 16514064 LBA user addressable sectors: 268435455 LBA48 user addressable sectors: 351651888 Logical Sector size: 512 bytes Physical Sector size: 512 bytes Logical Sector-0 offset: 0 bytes device size with M = 1024*1024: 171705 MBytes device size with M = 1000*1000: 180045 MBytes (180 GB) cache/buffer size = unknown Nominal Media Rotation Rate: Solid State Device Capabilities: LBA, IORDY(can be disabled) Queue depth: 32 Standby timer values: spec'd by Standard, no device specific minimum R/W multiple sector transfer: Max = 16 Current = 16 Advanced power management level: 254 DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 Cycle time: min=120ns recommended=120ns PIO: pio0 pio1 pio2 pio3 pio4 Cycle time: no flow control=120ns IORDY flow control=120ns Commands/features: Enabled Supported: * SMART feature set Security Mode feature set * Power Management feature set * Write cache Look-ahead * WRITE_BUFFER command * READ_BUFFER command * NOP cmd * DOWNLOAD_MICROCODE * Advanced Power Management feature set * 48-bit Address feature set * Mandatory FLUSH_CACHE * FLUSH_CACHE_EXT * SMART error logging * SMART self-test * General Purpose Logging feature set * 64-bit World wide name * WRITE_UNCORRECTABLE_EXT command * {READ,WRITE}_DMA_EXT_GPL commands * Segmented DOWNLOAD_MICROCODE * Gen1 signaling speed (1.5Gb/s) * Gen2 signaling speed (3.0Gb/s) * Gen3 signaling speed (6.0Gb/s) * Native Command Queueing (NCQ) * Host-initiated interface power management * Phy event counters * DMA Setup Auto-Activate optimization Device-initiated interface power management * Software settings preservation * SMART Command Transport (SCT) feature set * SCT Data Tables (AC5) * reserved 69[4] * WRITE BUFFER DMA command * READ BUFFER DMA command * Data Set Management TRIM supported (limit 1 block) * Deterministic read data after TRIM Security: Master password revision code = 65534 supported not enabled not locked not frozen not expired: security count supported: enhanced erase 4min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT. Logical Unit WWN Device Identifier: 55cd2e400007bd64 NAA : 5 IEEE OUI : 5cd2e4 Unique ID : 00007bd64 Checksum: correct