Start

Supported Macs

plottypus runs on every Apple Silicon Mac: M1 through M5, including Pro, Max and Ultra. Intel Macs are not supported.

It is honest about two things on this page. What it shows depends on what your Mac exposes. And only one Mac has been measured end to end so far.

macOS#

The binary’s minimum is macOS 11.0 (that is what otool -l reports in its build version). plottypus 1.0.0 is developed and measured on macOS 27; older releases load it, but they have had far less testing. If something is missing on your macOS version, plottypus doctor output in a bug report is the most useful thing you can send.

What each kind of Mac shows#

plottypus hides a reading your Mac does not have instead of drawing 0.

Mac Fans Battery CPU watts
MacBook Pro yes yes IOReport energy, held between batches
MacBook Air (fanless) none; the heat panel shows temperatures only yes IOReport energy, held between batches
Mac mini, iMac as the SMC reports none; the power panel shows system watts IOReport energy, held between batches
Mac Studio as the SMC reports none IOReport energy, held; summed per die on an Ultra
MacBook Pro M5 Pro (Mac17,8) yes yes SMC power rails, IOReport as fallback

On a desktop there is no battery row anywhere: no 0%, no empty box. On a fanless Air the heat panel keeps its temperatures and drops the fans. How to read those temperatures, and how to read watts, without sudo: temperature, watts.

Per-chip notes#

  • Clusters. M1 to M4 have Efficiency (E) and Performance (P) clusters; Pro and Max chips can have a second P cluster. M5 Pro and Max have Super (S) and Performance (P) clusters and no E cluster; the M5 Pro test machine reports 0E + 12P + 6S.
  • Clock tables. M4 publishes its DVFS tables in kHz rather than Hz; plottypus reads both.
  • Ultra. An Ultra reports its energy per die. plottypus sums the dies for power. Per-cluster MHz on Ultra is shown as absent rather than guessed, because the per-die clock tables do not map to clusters yet.
  • A chip plottypus has never seen. It still shows CPU load, memory, processes, network and disk from Mach and sysctl. Clusters and MHz stay absent until the chip’s tables are known.

What has been measured on hardware#

Be clear about this before you rely on a number.

  • M5 Pro, Mac17,8, macOS 27 is the development machine. Every reading, including the SMC CPU power rails, is checked against IOReport on it: over each publication span the rail sum lands within 0.85–1.10× of IOReport’s CPU energy rate.
  • Everything else is built from the channel and key names that macmon and asitop document for M1–M4 and Ultra, pinned in fixture tests and golden screens for fanless Airs, desktops without a battery, and M1 to M5 including Pro, Max and Ultra. They have not all been run on real hardware yet.

If you have a Mac other than an M5 Pro, plottypus doctor tells us what your machine exposes. Please send it; see Diagnose and doctor.

CPU watts on macOS 27#

On macOS 27 the PMGR “Energy Model” IOReport counters (CPU, ANE, DRAM) publish in batches, observed 2 to 108 seconds apart, and sometimes stop for much longer. A tool that divides each short sample by its interval sees 0 J most of the time and shows 0 W.

plottypus divides by the driver’s own timestamps instead, so a batch gives the true average over its span. Between batches it holds that value and marks it with its age. After 10 seconds it drops the value and shows the reading as absent until the next batch. On the M5 Pro the SMC rails give live CPU watts regardless. On other Macs, expect CPU, ANE and DRAM watts to come and go. That is the data, not a bug. GPU energy is published on every read, so GPU watts stay live on every chip.

More detail: Power and battery.