Skip to content
This repository has been archived by the owner on Mar 27, 2023. It is now read-only.
/ SMCTool Public archive

💻 SMCTool is used to program LM4F SMC firmware on Mac devices made between 2013-2017 in EFI mode.

Notifications You must be signed in to change notification settings

MuertoGB/SMCTool

Repository files navigation

SMCTool Logo
SMCTool

Making SMC flashing quicker and easier.

AboutDownloadBootable USBFlashing An SMCCompatibilityDisclaimersAcknowledgementsDonate

⚠ This project is now read-only, new versions will be available at https://github.com/MuertoGB/SMCFT

About

This bootable shell is used to program a Mac LM4F (Stellaris) System Management Controller (SMC) in EFI mode with the correct stock firmware, this enables a technician to replace a faulty SMC with a donor from a non-matching machine. This not only saves time, but money, as a specific donor SMC isn't necessary to have 'on hand'; simply take a donor SMC* from another board, replace it, and flash with this handy bootable software.

⚠ *Currently, a full list of SMC boot compatibility between boards has not been established, I recommend you keep the platform and GPU type the same (MacBook, iMac, Mac Mini), (iGPU, dGPU).

Beware of imposters like this jackoff: https://www.youtube.com/watch?v=mHCduTj01Zo

Download

Version Release Date Latest
V1.0.7 18th Feb 2023 Yes
V1.0.6 31st Jan 2022 No

📔 See the full Changelog.

Bootable USB

To begin, format a USB disk in ExFAT, FAT32, VFAT or HFS+ for use with SMCTool.

⚠ FAT32 using a GUID Partition Table (GPT) is recommended.

Once the memory stick is ready, you can do any of the following:

  • Option A: Manually copy all files from the ISO to the formatted memory stick.
  • Option B: Write the image to the memory stick with ddrescue, Passmark imageUSB, or similar.
  • Option C: Use a bootable USB creation tool and select the ISO, or image as the source file, and the memory stick as the destination.

❕ Extended instructions here.

Flashing An SMC

  1. Remove the internal storage drive.
  2. If you have a portable device, plug in the power adapter.
  3. Insert your USB stick, then power on the device whilst holding Option ⌥.
  4. Load into SMCTool from the boot menu and let 'startup.nsh' run.
  5. Type the 'boardnumber.nsh' you want to flash, e.g: 820-00165.nsh, then press return; the script will then flash the SMC.
  6. Type exit to reboot, or power off machine to complete the process.

⚠ You may need to perform an NVRAM reset after flashing an SMC.

Why must the SMC be flashed?:
Each System Management Controller is specifically programmed for it's counterpart board, and is in charge of managing video, hibernation, battery charging, thermal and power management. Incorrect or mismatched firmware causes erratic behaviour such as broken display resolution, high fan speed, throttling, and crashing.

I flashed an incorrect firmware:
No problem, just type the correct board number and the correct payload will be flashed. If you restart, or power off after an incorrect payload flash you may brick the device. If a system is somehow rendered 'bricked', and cannot get to the boot menu, you must replace the SMC again. You can always put the incorrectly flashed SMC aside for future use on a board it was 'accidentally' programmed for.

💻 Quick video of flashing an SMC here.

Compatibility

Devices:

Platform Supported? Planned?
MacBook N/A
Mac Mini N/A
iMac In development
Mac Pro Researching

ℹ See the compatibility information for a full list of supported models.

System Management Controllers:

SMC Supported? Planned?
LM4F BGA157 N/A
TM4C BGA168 Researching
F2117LP BGA145 No

ℹ Older single file payloads for boards such as 820-3115, 3332, and 3462 are currently being worked out. Support may be added in the future.

Disclaimers

I'm not responsible if you do something wrong, if you're here I expect you to know what you're doing. Where I do my utmost to verify all information to my best ability, I'm not responsible for any mistakes my end either.

This is not a magical 'fix my Mac' tool, it has a specific purpose, which is flashing correct payloads to a System Management Controller with incorrect firmware. Do not flash your SMC if you have no reason to.

Acknowledgements

🖼 Project icon by KBuHT on macOSicons.
💡 This tool is based on the work from logi.wiki.
🎥 SMC Tool tested by Paul L Daniels on YouTube.

⭐ Many Thanks To ⭐

  • Paul L Daniels for development help, and the kick to finish this project.
  • Logi.wiki for the original work, which I could base this project on.
  • EineWildeStehlampe for information and help regarding UEFI.
  • theSmudge for being a great help verifying information.
  • Nobluesky for verifying iMac board-id's.

Donate

Buy Me A Coffee LogoPayPal Logo