ISMC
Apple SMC CLI tool that can decode and display temperature, fans, battery, power, voltage and current information
Install / Use
/learn @dkorunic/ISMCREADME
iSMC
About
iSMC is a macOS command-line tool for querying the Apple System Management Controller (SMC). It reads a broad set of well-known SMC keys, determines their type and value, and classifies the results into temperature, power, current, voltage, fan, and battery readings. Each key is accompanied by a human-readable description.
In addition to standard SMC support for Intel Mac hardware, iSMC supports Apple Silicon (M1–M5 and later, including the Neo family), where temperature, voltage, current, and power sensors are exposed through a HID sensor hub rather than the SMC directly.

Installation
iSMC runs on macOS only.
Homebrew
You can install iSMC using Homebrew by adding the homebrew-tap tap and installing the ismc package:
brew tap dkorunic/tap
brew install ismc
Manual
Download the appropriate iSMC binary for your platform from the releases page and install it manually.
Using go install
You can also install iSMC using the go install command:
CGO_ENABLED=1 go install github.com/dkorunic/iSMC@latest
Usage
$ iSMC help
Apple SMC CLI tool that can decode and display temperature, fans, battery, power, voltage and current
information for various hardware in your Apple Mac hardware.
Usage:
iSMC [flags]
iSMC [command]
Available Commands:
all Display all known sensors, fans and battery status
batt Display battery status
completion Generate the autocompletion script for the specified shell
curr Display current sensors
fans Display fans status
help Help about any command
power Display power sensors
temp Display temperature sensors
version Print the version number of iSMC
volt Display voltage sensors
Flags:
-h, --help help for iSMC
-o, --output string Output format (ascii, table, json, influx) (default "table")
Use "iSMC [command] --help" for more information about a command.
Each command also accepts short and long aliases: bat/batt/battery, cur/curr/current, fan/fans, pow/power, tmp/temp/temperature, vol/volt/voltage, everything/all.
Output formats
| Format | Description |
| -------- | --------------------------------- |
| table | Coloured terminal table (default) |
| ascii | Plain ASCII table |
| json | JSON |
| influx | InfluxDB line protocol |
Related work
This tool was inspired by several Apple SMC-related projects:
- SMCKit — Apple SMC library and tool in Swift: github.com/beltex/SMCKit
- libsmc — SMC API in pure C: github.com/beltex/libsmc
- iStats — Ruby gem for Mac stats: github.com/Chris911/iStats
- smcFanControl — Fan control tool in Objective-C, includes
smc-commandfor raw SMC key queries: github.com/hholtmann/smcFanControl - FakeSMC — Hackintosh kext: github.com/RehabMan/OS-X-FakeSMC-kozlek
- VirtualSMC — Hackintosh kext: github.com/acidanthera/VirtualSMC
- osx-cpu-temp — CPU temperature display in pure C: github.com/lavoiesl/osx-cpu-temp
- applesmc.c — Linux kernel Apple SMC driver: github.com/torvalds/linux
- gosmc — Low-level Go SMC bindings: github.com/panotza/gosmc
- sensors — Koan-Sin Tan's M1 IOKit demo: github.com/freedomtan/sensors
- Stats — Serhiy Mytrovtsiy's macOS Stats app: github.com/exelban/stats
Todo
Planned features:
- fetch and decode SMC key descriptions from the SMC itself,
- generate and probe random SMC keys,
- persist discovered SMC keys to a configuration file,
- add support for missing data types (
si*,hex_,pwm, etc.).
Bugs, feature requests, etc.
Please open an issue or submit a pull request.
