Skip to content

Instantly share code, notes, and snippets.

@clarencesong
Last active August 12, 2024 12:57
Show Gist options
  • Save clarencesong/3768688 to your computer and use it in GitHub Desktop.
Save clarencesong/3768688 to your computer and use it in GitHub Desktop.
Enable TRIM in OS X 10.7.5 to 10.9.5

Enable TRIM on non-Apple SSDs in OS X

NOTE: This is tested on the versions mentioned in the title, and NOT earlier or later versions. YMMV.

Run the following commands in Terminal…

Backup the original driver:

sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage-backup

Modify the driver (choose only one of the following lines, based on the version):

# 10.9.4 & 10.9.5
sudo perl -pi -e 's|(^\x00{1,20})[^\x00]{9}(\x00{1,20}\x54)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

# 10.8.3 to 10.9.3
sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x54)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

# 10.7.5, 10.8.1, 10.8.2
sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x4D)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

Run these commands in succession to clear the system caches to enable OS X to pick up the modified driver:

sudo kextcache -system-prelinked-kernel
sudo kextcache -system-caches
sudo touch /System/Library/Extensions/

Restart the Mac.

@vgorloff
Copy link

vgorloff commented Mar 6, 2013

Thanks! Working for me too. 10.8.2 ( 12C60 ) MacMini Mid 2010 with Crucial M4 (CT128M4SSD1).

@iCrunch
Copy link

iCrunch commented Mar 15, 2013

Hey guys! 10.8.3 just dropped (build 12D78). I have an Intel 520 Series 240GB in a Mac mini (6,2) and TIM is, of course, disabled. I was about to try one of the 10.8.2 "hacks", but then I noticed one poster saying "this is only guaranteed on 10.8.2, not before, not after", so I'm holding off for now.

Any news would be highly appreciated!

(Btw, if you don't have TRIM going for a while and then turn it on, will it "undo the damage" that NOT running TRIM until that point caused? Dramatic, I know. But curious. Always curious. ;-) )

Thanks!!!

@skomik
Copy link

skomik commented Mar 15, 2013

Didn't work for me on MBP 2011, OSX 10.8.3 (12D78). Waiting for update =)

@leolimajr
Copy link

My fork is still working on OSX 10.8.3 (12D78) take a look at https://gist.github.com/leolimajr/4124375

@clarencesong
Copy link
Author

Updated the gist with the "sudo touch /System/Library/Extensions/" command.

@xplainit
Copy link

xplainit commented Sep 5, 2014

OSX 10.7.5 build 11G63.
Trim ENABLED. Thanks a lot !!!

@bizulk
Copy link

bizulk commented Nov 3, 2014

MBP With OS X 10.9.5 (13F34)
INTEL SSDSA2M120G2GC 
==> WORKED 😄
THANK YOU !
Question : How did you find out ?

@dwueppel
Copy link

Worked in MBP with OSC 10.8.5

@OldBaldGit
Copy link

MacBook 2.1 2007 upgraded Tiger --> Snow Leopard --> Lion 10.7.5

It worked like a charm first time!

Thank you!!!!!!!!

@Bammonb
Copy link

Bammonb commented Jul 21, 2015

Hello All,

Thanks for taking the time to post this information.

Unfortunately I feel that enabling TRIM on my Kingston SSD has slowed it down.

It did enable TRIM successfully.

What is the best course of action to reverse these changes?

I am running MAC OSX 10.9.5

Do I need to go to Genius bar and have them drop a new Image on the HD?

Thanks!

Bill

@fefone
Copy link

fefone commented Dec 26, 2015

Hi,
successfully enabled TRIM on MacBookPro6,2 - OS X 10.8.5 (12F2560) for a Samsung 850PRO.
Thanks a lot!
fed

@ccastillo
Copy link

Thank you. This help me with a MacBook late 2007 model running OS X Lion on Patriot Pyro SSD.

Carlos.

@Atalantia
Copy link

Thank you it works like a charm on a 10.9.5 But if System Information says Trimm is on. Is it really on? How can I see that this is on. And by the way what does it? Randomly change the Memory Location of every bit?

@RJVB
Copy link

RJVB commented Apr 21, 2020

Exactly where am I supposed to see the trim enabled indicator on OS X 10.9.5?

I think I've applied the correct patch from the list above but I cannot seem to find the indicator for my external Kingston SUV500MS120G (SSDNow family).

> md5sum /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/*
79f51aaf114f3dd8be5e409f6e3c13df  /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
ef72c0c2bfb1074bf400d3405efdae10  /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage-backup

> kextstat | fgrep -i IOAHCIBlockStorage
   61    0 0xffffff7f813bb000 0x18000    0x18000    com.apple.iokit.IOAHCIBlockStorage (2.6.0) <43 16 6 5 4 3 1>

contents comparison, does this look correct?

> od -x IOAHCIBlockStorage-backup > /tmp/kk1
> od -x IOAHCIBlockStorage > /tmp/kk2
> diff tmp/kk[12]
3975c3975
< 0201720      0a79    4100    5050    454c    5320    4453    5400    6d69
---
> 0201720      0a79    0000    0000    0000    0000    0000    5400    6d69

EDIT: I just realised this patch replaces the string "APPLE SSD" with as many null bytes. I see a second occurrence of a very similar pattern a bit further in the file: "APPLE SSD TS". I guess I have nothing to lose to replace that one too (would I have an older version of the framework on my system?!)

@clarencesong
Copy link
Author

@RJVB You should be able to see it in System Information.app → Hardware → SATA → Trim Support: Yes

@RJVB
Copy link

RJVB commented Apr 26, 2020 via email

@clarencesong
Copy link
Author

@RJVB I've only tested this on SATA SSDs, as this was the only way to get TRIM back in the day. (Later versions of OS X supported the trimforce command.) Sorry, I don't know of a way to check if TRIM is actually working at a lower level.

@RJVB
Copy link

RJVB commented Apr 26, 2020 via email

@PhshPhan
Copy link

Thanks man. Worked on my evo860 SSD on my mid-2012 i5 on OSX 10.9.5 after the initial software update following reinstallation of OS X.

@Starkoman
Copy link

Hi there — Can confirm this code works on 2006 MacBook Pro 17" Core2Duo 3GB RAM with cheap Fanxiang S101 1TB SSD.

Had to paste into Terminal a couple of times, reboot, no joy in System Info — so tried final time but pasted all three of the second set all at once — rebooted again and System Info confirmed "Trim Enabled: Yes". Thank you so much! Very pleased.

Thanks for figuring this out.

@Starkoman
Copy link

P.S.: That's on Mac OS X 10.7.5. Lion (!). Works like a charm.

@QuickMik-MacOS
Copy link

QuickMik-MacOS commented Aug 6, 2024

old books should also be read.

MacBook 13 inch White Unibody Core 2 Duo (Late 2009)
Machine Model: MacBook6,1
Family name: A1342
Model Number: MC207
EMC number: 2350
CPU speed: 2.26GHz

works like a charme!

Bildschirmfoto 2024-08-06 um 09 23 34
Bildschirmfoto 2024-08-06 um 09 24 13

@RJVB
Copy link

RJVB commented Aug 6, 2024

Do you know if it's supposed to work with external drives?

Still doesn't, not for me in any case.

So periodically I just take the ones I use to a Linux rig that has Paragon's ufsd driver installed. I checked with them: even with the free version their HFSx support is good enough that you can run fstrim on them safely.

@clarencesong
Copy link
Author

On more recent macOS releases, there are other ways to enable TRIM, including external SSDs.

Check out this article: Will your new SSD support TRIM and SMART?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment