Skip to content
SMC emulator layer
C++ C Shell Objective-C++ Swift Assembly Makefile
Branch: master
Clone or download
Pull request Compare This branch is 52 commits behind acidanthera:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Docs
Sensors
Tools
VirtualSMC.xcodeproj
VirtualSMC
VirtualSMCSDK
VirtualSmcPkg
.gitignore
.travis.yml
Changelog.md
KnownPlugins.md
LICENSE.txt
README.md

README.md

VirtualSMC

Build Status Scan Status

Advanced Apple SMC emulator in the kernel. Requires Lilu for full functioning.

Features

  • Supports macOS 10.8 and newer (10.9 and newer is recommended)
  • Implements MMIO protocol and interrupt-based responses for compatibility with modern OS
  • Properly reports key attributes and r/w protection in the keys
  • Allows tuning on per-model basis and allows to use different SMC generations
  • Extensible by the plugins for sensor and key addition support
  • Enables smcdebug=XX boot argument support on 10.9
  • Replaces hardware SMC it finds (to disable SMC entirely you need to flash a dedicated firmware)

Boot arguments

  • Add -vsmcdbg to enable debug printing (available in DEBUG binaries).
  • Add -vsmcoff to switch off all the Lilu enhancements.
  • Add -vsmcbeta to enable Lilu enhancements on unsupported os (10.13 and below are enabled by default).
  • Add -vsmcrpt to report about missing SMC keys to the system log.
  • Add -vsmccomp to prefer existing hardware SMC implementation if found.
  • Add vsmcgen=X to force exposing X-gen SMC device (1 and 2 are supported).
  • Add vsmchbkp=X to set HBKP dumping mode (0 - off, 1 - normal, 2 - without encryption).
  • Add vsmcslvl=X to set value serialisation level (0 - off, 1 - normal, 2 - with sensitive data (default)).
  • Add smcdebug=0xff to enable AppleSMC debug information printing.
  • Add watchdog=0 to disable WatchDog timer (if you get accidental reboots).

Credits

  • Apple for macOS
  • netkas for the original idea of creating a software SMC emulator
  • CupertinoNet for reversing most of MMIO protocol and SMC headers
  • Alex Ionescu for the initial reverse of SMC firmware
  • 07151129 for co-devoloping VirtualSMC and invaluable help during the research
  • lvs1974 for developing laptop sensor support
  • usr-sse2 for developing laptop sensor support
  • theopolis for smc-fuzzer tool
  • kokke for tiny-AES-c
  • vit9696 for Lilu.kext and this software
  • Additional big thanks go to all the contributors and researchers involved in Apple SMC exploration!
You can’t perform that action at this time.