/SMCFT

💻 SMC Flash Tool (SMCFT) is used to program LM4F SMC firmware on Mac devices made between 2013-2017 in EFI mode.

Primary LanguageNSIS

SMCFT Logo
SMC Flash Tool, formerly SMCTool.

Making SMC flashing quicker and easier.

AboutDownloadBootable USBFlashing An SMCCompatibilityDisclaimersAcknowledgementsDonate

About

This bootable shell is used to program Mac LM4F (Stellaris) System Management Controllers (The SMC) in EFI mode with correct stock firmware, this enables technicians to replace faulty SMCs with a donor from non-matching logic boards. SMCFT 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, then 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).

Download

Version Release Date Latest
V1.1.0 28th Mar 2023 Yes
V1.0.7 18th Feb 2023 No

📔 See the full Changelog.

Bootable USB

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

⚠ 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. Determine your board-id if necessary.
  2. Remove the internal storage drive.
  3. If you have a portable device, plug in the power adapter.
  4. Insert your USB stick, then power on the device whilst holding Option ⌥.
  5. Load into SMCFT from the boot menu and let 'startup.nsh' run.
  6. Enter the platform type from the menu, then press return.
  7. Enter the motherboard model from the menu, then press return. The SMC will now be flashed.
  8. Type exit to leave the shell, or power down the device to complete the process.

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

ℹ You can access the readme in shell mode by typing edit readme.txt and pressing return.

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.

startup.nsh did not run:
In this case, you must manually find the USB filesystem. With the internal storage drive present, the filesystem is generally found at fs7:, in the shell type fs7:, then press return. With the internal storage drive removed, the filesystem is generally found at fs0:, in the shell type fs0:, then press return. A directory file list can be viewed by typing ls, then pressing return.

Once you find the filesystem with 'startup.nsh', you can then run the file.

ℹ Quick video of flashing an SMC here.

Compatibility

Devices:

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

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

System Management Controllers:

Manufacturer Part Supported? Planned?
TI LM4F BGA157 N/A
TI TM4C BGA168 Researching
Renesas 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.

smbinfo.efi source code will be available in due course. Made in VS2019 with MSVC, based on EDK2 by TianoCore.

Acknowledgements

⭐ 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.

🖼 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.

Donate

PayPal Logo