smartmontools Home Page

Welcome! This is the home page for the smartmontools package.

NEWS: Please report problems (or success!) with the new release to the smartmontools-support mailing list.

The smartmontools package contains two utility programs (smartctl and smartd) to control and monitor storage systems using the Self-Monitoring, Analysis and Reporting Technology System (SMART) built into most modern ATA and SCSI hard disks.  In many cases, these utilities will provide advanced warning of disk degradation and failure.

Smartmontools is originally derived from the Linux smartsuite package, and includes support for ATA/ATAPI-3 to -7 disks and SCSI disk and tape devices. It should run on any modern Darwin (Mac OSX), Linux, FreeBSD, NetBSD, OpenBSD, Solaris, OS/2, eComStation or Windows system. Alternatively, it can also be run from one of the bootable CDs or floppies containing smartmontools.

For printing convenience, everything except for the example output is on a single page.

How to download and install smartmontools

There are different ways to get and install smartmontools.  You can use any of the procedures below (the fourth is for Debian Linux only).  Just after "Method 6" below are some instructions for trying out smartmontools once you have completed the installation. The INSTALL file contains additional information.

First Method (Redhat/Fedora Linux) - Install from the RPM file Second Method (Linux/Solaris/FreeBSD/NetBSD/OpenBSD/Cygwin) - Install from the source tarball Third Method (Darwin/FreeBSD/Linux/NetBSD/OpenBSD/Solaris/Cygwin) - Install from the CVS repository Fourth Method (Debian Linux) - Install the Debian package Fifth Method (Windows with Cygwin installed) - Install the Cygwin package Sixth Method (Windows) - Install the Windows package After installing it using Method 1, 2, 3, 4 or 5 above, you can read the man pages, and try out the commands:
man smartd.conf
man smartctl
man smartd
/usr/sbin/smartctl -s on -o on -S on /dev/hda (only root can do this)
/usr/sbin/smartctl -a /dev/hda (only root can do this)

Note that the default location for the manual pages are /usr/share/man/man5 and /usr/share/man/man8.  If "man" doesn't find them, then you may need to add /usr/share/man to your MANPATH environment variable.

The Windows package (see Method 6 above) provides preformatted man pages in *.html and *.txt format.

Serious Problem Reports

If a serious problem gets reported to us, it gets added to the WARNINGS file in smartmontools. So far there are only a few problem systems listed.

Frequently Asked Questions

If your question is not here, please email me.

SCSI disks and tapes (TapeAlert)

Smartmontools for SCSI disks and tapes (including medium changers) is discussed on a separate page.

FireWire, USB, and SATA disks/systems

As for USB and FireWire (IEEE 1394) disks and tape drives, the news is not good. They appear to the operating system as SCSI devices but their implementations do not usually support those SCSI commands needed by smartmontools. A consortium associated with IEEE 1394 certified some external enclosures (containing a ATA disk and a protocol bridge) as being compliant to the relevant standards. Even still, that compliance means that they tend to only support the bare minimum of commands needed for device operation (i.e. SMART support is an unsupported extra). Hopefully external USB and Firewire devices will support SAT in the future, see below.

Smartmontools should work correctly with SATA drives under both Linux 2.4 and 2.6 kernels. Depending on which subsystem the SATA controller is in (i.e. drivers/ide, drivers/ata or libata (under drivers/scsi) a SATA drive will appear as /dev/hd* or /dev/sd*. Either way, smartmontools should be able to figure out what is going on and act accordingly. In some cases smartmontools may need a hint in the form of a '-d sat' or '-d ata' option on the smartctl command line or in the /etc/smartd.conf file. There may be a hint to add one of those options in the log file when smartd is run as a daemon or on the command line with smartctl. The '-d ata' option means that even though the drive has a SCSI device name, treat it as an ATA disk. Unfortunately such an approach doesn't often work. The next paragraph has more information about '-d sat'.

The SCSI to ATA Translation (SAT) standard (ANSI INCITS 431-2007) may solve many problems in this area. It defines how SCSI commands will be translated to the corresponding ATA commands and defines a pass-through mechanism. ATA commands are conveyed natively by two transports: parallel and serial ATA.  SCSI commands can be conveyed by many transports: the veteran SCSI Parallel Interface (SPI),  Fibre Channel (FC),  Infiniband (SRP),  Serial Attached SCSI (SAS), IP (iSCSI and iSER), USB (mass storage), and IEEE 1394 (SBP) to name some. Due to their cost and storage capacity, more and more ATA disks (especially SATA disks) are appearing "behind" a SCSI transport. This is especially true of the SAS transport which can painlessly accomodate both SAS and SATA disks. Enter another acronym: SATL which stands for SCSI to ATA Translation Layer. In Linux libata has a SATL in it. Some SAS host bus adapters have a SATL in their firmware. FC might have a SATL in a switch. Perhaps in the future USB and IEEE 1394 enclosures will have a SATL in them. Starting from smartmontools versions 5.36 and 5.37, no matter where a SATL is, irrespective of the operating system in use, the user should have less problems with ATA disks, no matter which transport is involved. As always, it helps to know a little of what is happening under the covers. The '-d sat' option instructs smartctl and smartd to assume a SATL is in place and act accordingly. The smartctl command can often detect a SATL and autoconfigure while in smartmontools version 5.37 smartd often needs a hint.

How does smartmontools differ from smartsuite?

The smartsuite code was originally developed as a Senior Thesis by Michael Cornwell at the Concurrent Systems Laboratory (now part of the Storage Systems Research Center), Jack Baskin School of Engineering, University of California, Santa Cruz. You can find some information about the original smartsuite project here: Press Release 1, Press Release 2, Press Release 3.

According to SSRC smartsuite is no longer maintained; the last release was in 2001.

Smartmontools was derived directly from smartsuite.  It differs from smartsuite in that it supports the ATA/ATAPI-5 standard.  So for example smartctl from smartsuite has no facility for printing the SMART self-test logs, and doesn't print timestamp information in the most usable way.  The smartctl utility in smartmontools has added functionality for this (-q, -l selftest,-S, -T, -v and -m options), updated documentation, and also fixes small technical bugs in smartsuite. [One example: smartsuite does not actually use the ATA SMART RETURN STATUS command to find out the health status of a disk. It instead tries to infer this from the SMART Attribute values.]  See the CHANGELOG file in CVS for a summary of what's been done.  The smartd utility differs from the smartsuite smartd in major ways.  First, it prints somewhat more informative error messages to the syslog.   Second, on startup it looks for a configuration file /etc/smartd.conf, and if smartd finds this file, it monitors the list of devices therein, rather than querying all IDE and SCSI devices on your system.  (If the configuration file does not exist, then it does query all IDE and SCSI devices.)  Also, it's a well-behaved daemon and doesn't leave open file descriptors and other detrius behind.  In addition, the smartmontools version of smartd can be instructed (via Directives in the configuration file) to monitor for changes in a number of different disk properties: the SMART status, failure or prefailure attributes going below threshold, new errors appearing in the ATA Error Log or the SMART Self-Test Log, and so on. smartd can also send an email warning or run a user-specified executable if it detects a problem with the disk.

The other principle difference is that smartmontools is an OpenSource development project, meaning that we keep the files in CVS, and that other developers who wish to contribute can commit changes to the archive. If you would like to contribute, please write to to smartmontools-support.

But the bottom line is that the code in smartmontools is derived directly from smartsuite and is similar.  The smartsuite package can be found here.

Useful references on SMART and the ATA/ATAPI standards

If you are having trouble understanding the output of smartctl or smartd, please first read the manual pages installed on your system:

man 8 smartctl
man 8 smartd
man 5 smartd.conf

Here are on-line versions of the smartmontools man pages:
smartctl manual page
smartd manual page
smartd.conf manual page
Note that these are the manual pages for the current version of smartmontools in the developers CVS repository; they might not correspond to the (possibly older) version of smartmontools installed on your system. So the manual pages installed on your system should be regarded as definitive for your installation.

If you'd like to know more about SMART, then the following references may be helpful:

Example output from smartmontools smartctl utility:
Maintained by: Bruce Allen
Copyright (C) 2002-5 Bruce Allen
Last updated: $Date: 2008/03/23 14:11:53 $
CVS tag: $Id: index.html,v 1.220 2008/03/23 14:11:53 ballen4705 Exp $
Hosted by

Valid XHTML 1.0!

Validate XHTML 1.0 Transitional.

Check/Validate all links on this page.