How to run diagnostics on a Mac: every method compared
There are five consumer-accessible ways to test a Mac's hardware health (Apple Diagnostics, CoconutBattery, smartctl, DriveDx, EtreCheck) and one technician-only stack you cannot run yourself. Each answers a different question. Running one is not running all five.

How to run diagnostics on a Mac: every method compared#
There are five consumer-accessible ways to test a Mac's hardware health, and one technician-only stack you cannot run yourself. Each of the five answers a different question. Running one tool is not running all five, and the most common pre-purchase failure on a used Mac is reaching for CoconutBattery, getting a green number, and stopping there.
This is the comparison. Apple Diagnostics covers logic-board components and is the only Apple-sanctioned consumer hardware test. CoconutBattery, smartctl, DriveDx, and EtreCheck fill the gaps Apple deliberately hides in consumer surfaces. AST 2, GSX, and the Mac Resource Inspector (MRI) engine are technician-only; any third party offering a "remote AST 2 report" is misrepresenting ordinary Apple Diagnostics output or is fraudulent. For the broader picture of how these five fit alongside the macOS Tahoe 26 Parts & Service pane, the complete 2026 Mac diagnostic guide is the umbrella piece.
Apple Diagnostics: the only Apple-sanctioned consumer test#
Built into every Mac since approximately June 2013. On Apple Silicon it is part of the always-resident recoveryOS environment with its cryptographic signature verified by iBoot before running in an isolated container (support.apple.com/en-us/102550). The tool runs functional and sensor checks across logic-board components (CPU, memory, SMC, fans, sensors, Wi-Fi, Bluetooth, camera, USB/Thunderbolt, audio, display, GPU, battery, adapter) and finishes in 2 to 5 minutes.
Invocation differs by architecture. Apple Silicon: shut down, hold the power button past the Apple logo until the startup options window appears, release, then hold Command-D. Intel: hold D at power-on (or Option-D for the internet-based version if local files are missing).
A clean run returns reference code ADP000. Other codes follow a three-letter-prefix-plus-three-digit format mapped at support.apple.com/en-us/102334. The codes worth recognizing on sight: PPT (battery, graded), PPM (memory; on a soldered-memory Mac, a logic-board replacement), PFM (SMC), PFR (firmware), PPR (processor), VFD on the integrated display (a display-assembly replacement). The codes that often clear after a fix-and-rerun: NDD (USB), NDT (Thunderbolt), PPP (power adapter), CEH (case handle/latch), NDR007.
ADP000 is a presence and electrical-threshold pass, not an exhaustive functional test. A single dead key, an intermittent display flicker, a Thunderbolt port that fails only at full 40 Gb/s under sustained throughput, sustained-load thermal throttling, SSD endurance, and most battery wear beyond the binary PPT codes all pass. Cycle count, Maximum Capacity %, and Full Charge Capacity in mAh do not surface. That is what the other four tools are for.
CoconutBattery: battery cycle count, capacity, manufacture date#
CoconutBattery, in continuous development since 2005, queries the smart-battery system via IOKit and exposes design capacity, Full Charge Capacity (FCC) in mAh, cycle count, manufacture date (from the battery's serial), real-time wattage, and temperature. Mac's manufacture date is also reported; post-2021 randomized serials show only manufacture week. The paid Plus tier adds internal-SSD data-written totals; one-time purchase, listed at $9.95 in a 2022 review.
A reading of 95% of design capacity at 50 cycles tells a very different story than 78% at 1,200 cycles, even when Apple Diagnostics returns ADP000 for both. Cycle count is decoded from the battery firmware, harder to misrepresent than a verbal claim. The capacity figure can differ from macOS's calculated Maximum Capacity (gas-gauge register vs the OS's smoothed value); this is not an error.
smartctl: full NVMe SMART telemetry#
The canonical open-source SMART reader, installed via Homebrew:
# Apple Silicon (Homebrew default prefix /opt/homebrew)
brew install smartmontools
sudo smartctl -a /dev/disk0
Returns the standard NVMe Log 0x02 fields: Critical Warning, Temperature, Available Spare, Available Spare Threshold, Percentage Used, Data Units Read/Written, Host Read/Write Commands, Controller Busy Time, Power Cycles, Power On Hours, Unsafe Shutdowns, and Media and Data Integrity Errors.
Apple does not expose vendor-specific attributes (raw NAND bytes, per-block program/erase, write amplification), and Apple's drives often report Available Spare Threshold around 99 rather than the typical 10. What matters for failure prediction is whether Available Spare is less than or equal to Threshold, the actual trigger. The full per-field decoder is in the smartctl on Apple Silicon walkthrough.
DriveDx: smartctl with a GUI and trend logging#
DriveDx (BinaryFruit) reads the same NVMe SMART data as smartctl with a GUI, a four-tier health verdict (OK / Warning / Failing / Failed), trend logging, menu-bar indicator, and email alerts. Pricing as of May 2026: $19.99 Personal (3 Macs) / $39.99 Family (6 Macs), a 20% promotion off list prices $24.99 / $49.99. v1.12.1 (September 2023) is the current release; the developer confirms it as fully compatible with macOS 26 Tahoe.
Caveat on external drives: USB enclosures often do not pass NVMe SMART through (a bridge-chip limitation, not a drive fault). Thunderbolt enclosures generally do.
EtreCheck: macOS system snapshot and MDM detection#
EtreCheck aggregates roughly 50 macOS checks (hardware, battery age, disk SMART summary, RAM usage, system load, launch agents and daemons, kexts, Safari extensions, Time Machine status, recent crashes, adware indicators) into a single PII-redacted shareable report. The basic version is free; Power User unlocks advanced charts. Requires Full Disk Access for the full picture.
The high-value flag for buyers on a used Mac is active configuration profiles, which EtreCheck categorizes as Major. A configuration profile indicates MDM enrollment, the cheapest way to catch a corporate enrollment a seller forgot or chose not to mention. Caveat: a clean EtreCheck does not guarantee the serial is clean of server-side DEP enrollment; that only surfaces on a factory reset over live Wi-Fi. The detection patterns and offline-bypass trick are in the MDM-enrollment detection guide for a used Mac.
The technician-only stack: AST 2, GSX, MRI#
The professional diagnostic stack exists and is not available to you.
Global Service Exchange (GSX) is Apple's portal where authorized technicians look up serials, warranty/AppleCare status, configuration, and repair history. Apple Service Toolkit 2 (AST 2) is a cloud-delivered diagnostic platform launched from a Diagnostic Console on a tech's Mac or iPad. AST 2 pushes the appropriate diagnostic image to the customer's device wirelessly and reports results into GSX's Global Diagnostic Exchange. Mac Resource Inspector (MRI) is AST 2's central engine, a system-wide roll-call across PCI/PCIe, I²C, and USB buses for physical presence, firmware integrity, and core electrical health.
The Self Service Repair portal's "Apple Diagnostics for Self Service Repair" runs the same Apple Diagnostics image you can already invoke locally. It does not grant AST 2 access. Any third party offering a "remote AST 2 report" without an in-person visit to an Apple Store or AASP is misrepresenting ordinary Apple Diagnostics output, scraping Apple's public Coverage Check, or fraudulent.
Which combination to actually run#
The five tools answer non-overlapping questions. CoconutBattery cannot tell you SSD wear. smartctl cannot tell you battery cycle count. EtreCheck cannot tell you logic-board health. Apple Diagnostics covers logic-board components but hides Percentage Used and most battery detail.
| Scenario | Recommended combination |
|---|---|
| Casual user, one-time check | Apple Diagnostics + CoconutBattery + EtreCheck. All free. Covers logic board, battery, system state. |
| Power user / IT / pre-sale audit | Add smartctl. Apple Diagnostics + CoconutBattery + smartctl + EtreCheck. |
| Long-term monitoring across multiple drives | DriveDx earns its keep. Otherwise smartctl is enough. |
For a used Mac in a 15-minute pre-purchase inspection, the order is: Apple Diagnostics first (catches the loudest faults before the OS even loads), CoconutBattery and smartctl in parallel for the battery and SSD numbers, EtreCheck for the system snapshot. On macOS Tahoe 26 add a check of the Parts & Service pane.
The full 14-day stress-test battery that lives on top of this diagnostic pass is its own piece. Cinebench, Blackmagic Disk Speed Test, and a 30-minute sustained-load loop cover the failures that show up only under hours of real workload.
What this means for the reader#
The diagnostic question on a Mac is not "which tool" but "which question am I trying to answer." Logic-board electrical health is Apple Diagnostics; ADP000 plus the subsystem prefix for any failure. Battery wear is CoconutBattery; cycle count against the model's 1000-cycle limit and capacity vs design. SSD wear is smartctl or DriveDx; Percentage Used, Available Spare, Data Units Written, Unsafe Shutdowns, Media and Data Integrity Errors. MDM enrollment is EtreCheck; active configuration profiles are the flag. Replacement history on Apple Silicon Tahoe 26 is the Parts & Service pane; on Intel or pre-Tahoe Macs that signal is unavailable.
Running one tool answers one question. The other questions stay unanswered. Pick by the question you need answered. For a Macfax pre-purchase pass that bundles these signals into one device-bound signed report, the pre-purchase Macfax diagnostic covers the buyer-facing surface.
Run the free report and list your Mac with proof. A verified listing carries the badge on the Macfax shelf, in front of buyers filtering for it.
Related posts
Mac diagnostics: the complete 2026 guide
Apple Diagnostics is the only Apple-sanctioned hardware test built into every Mac since 2013, and a clean run returns reference code ADP000. This is the full 2026 guide: how to run it, the technician-only stack that isn't accessible to you, and the third-party tools (CoconutBattery, smartctl, DriveDx, EtreCheck) that fill the gaps Apple deliberately hides.
Apple Diagnostics: how to start the test on Apple Silicon and Intel Macs
Apple Silicon Macs start Apple Diagnostics from the startup-options window with Command-D, not the old hold-D-at-boot keystroke. Here's the exact sequence on both architectures and what to disconnect before you start.
Apple Diagnostics reference codes: every prefix and what it actually means
Apple Diagnostics reports a three-letter prefix plus three digits. ADP000 means clean. Every other prefix maps to a specific subsystem on Apple's published reference list, with very different cost implications depending on whether the issue is the battery, a soldered memory module, the display assembly, or a sensor trace severed by liquid ingress.

Written by
Marcus WilliamsMarcus Williams covers Mac hardware and repair for Macfax. He spent six years on the bench at an Apple Authorized Service Provider in the Pacific Northwest before going independent, most of that time on logic-board repair, display assembly swaps, and the failure patterns Apple's diagnostics don't surface. He writes about what's inside a Mac, what breaks first, and what a serial number can and can't tell you about a unit's history.
More posts by Marcus →