MacOS – Does macOS monitor drive health

hard drivemacosmonitoringssdstorage

My 2017 15" MacBook Pro does not appear to support SMART on any drive. For its internal PCIe drive diskutil reports:

$ diskutil info disk0 | grep SMART
   SMART Status:              Not Supported

System Information shows the same:

S.M.A.R.T. status              Not Supported

Similarly I have two USB hard drives, a Toshiba 2.5" native USB, the other a Seagate 3.5" in a SATA to USB enclosure. MacOS is unable to read their SMART status either with diskutil

$ diskutil info disk2 | grep SMART
   SMART Status:              Not Supported

or with smartmontools (installed with brew):

$ smartctl -a disk2s2
smartctl 7.1 2019-12-30 r5022 [Darwin 18.7.0 x86_64] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

Smartctl open device: disk2s2 failed: Operation not supported by device

HOWEVER, a FreeNAS box correctly reads SMART from both USB drives. Indeed one of them is failing with a large number of Failed SMART usage Attribute: 184 End-to-End_Error errors. Error 184 signals possible corruption on the drive with likely imminent failure. It means "get anything you care about off ASAP and discard the drive". macOS provided no warnings.

Does macOS have any sort of monitoring of drive health? If so, what is it and how does it work? If not, can it be added both for internal and external drives? Is there a technology other than SMART?

Best Answer

My 2017 15" MacBook Pro does not appear to support S.M.A.R.T. on any drive.

Not exactly. It’s more like NVMe is not compatible with S.M.A.R.T. First off, it is a subset of the ATA (AT Attachment) standard for monitoring/reporting and repairing drive failures. There are a number of ATA commands that access the SMART attributes.

To be able to gain access to the SMART attributes on the drive, you need the following:

  • supported OS driver
  • supported hardware interface.

Drivers

macOS provides a limited and closed ATA driver. It does not allow you to send SCSI and ATA commands directly to the device (drive). In this case the macOS driver allows you to get some but not all of the SMART attributes. To do so, you need a 3rd party driver that supports getting these extended attributes. DriveDx has this driver.

Supported Hardware

As for a supported hardware interface this could be either the SATA controller (actually PCIe to SATA bridge) or the SATA controller in a USB interface (USB to SATA bridge). If the SATA controller doesn’t support sending/reading these commands/attributes, you won’t be able to get the SMART information you’re looking for.

However, given that a different machine (FreeNAS box) the included ATA/SCSI driver as well as the USB to SATA bridge supported the SMART attributes.

Smartmontools has an excellent summary page detailing the USB/SMART attribute support: https://www.smartmontools.org/wiki/USB

enter image description here

The ​OS X SAT SMART Driver provides access to SMART data for SAT, JMicron and Sunplus capable USB and Firewire devices on Mac OS X. On OSX El Capitan (10.11+) you may need a signed driver, which can be downloaded from the ​DriveDx website. Note that this does not support 48-bit ATA commands (-l xerror) or non-SMART ATA commands (-s apm,N). Full USB support would require SCSI pass-through support which does not yet exist on Mac OS X.

If you notice, macOS doesn’t support the SCSI pass through nor does smartmontools support SCSI. However, you can get USB SMART attributes through the use of a signed driver from DriveDX.

NVMe

NVMe is a whole different ball of wax. Looking at the specification, there’s nothing about SMART attributes. In fact, it has it’s own definition for Error Reporting and Recovery. So, asking an NVMe drive for attributes it doesn’t even have is obviously not going to work.

smartmontools NVMe support is currently in the “experimental” stage. Once again, support is limited due to driver limitations. After 10.13 (High Sierra), a 3rd party driver is required

Before release 10.13 only Apple-branded NVMe devices were supported, monitoring API is implemented (NVMeSMARTClient) but not documented. Limited NVMe support added in the ​DriveDx app (commercial, closed source) and in the smartmontools since 6.6 (r4438).

Bottom Line

If you’re looking for drive health monitoring, you’ll need 3rd party tools as it hasn’t been implemented in macOS as of yet.