Birds Like Wires

Feed the Birds

NVMe Drive in a MacBook Pro

It turns out that putting an NVMe drive into a MacBook Pro to replace the proprietary Apple blade is possible these days. Since macOS High Sierra, NVMe support has been officially included with the IONVMeFamily kernel extension and v10.13 also updated the EFI firmware of most of Apple’s current systems to include boot support for these drives. Thank you very much, Apple!

That doesn’t mean you can just fling an NVMe SSD in to replace your standard drive, though. You do need an adapter, but luckily these are relatively inexpensive. I plumped for this Sintech one because it mentioned Samsung 950 PRO support. It’s simply a physical converter; there are no electronics on it of any kind, which I thought was pretty interesting. It would appear that the socket on the logic board is simply a miniaturised PCIe expansion slot. The proprietary Apple SSD (manufactured by Samsung in all of the cases I’ve seen) actually shows itself as a SATA device on the PCI bus, so there must be some SATA conversion happening on the blade itself, because that’s not how the Samsung 970 EVO blade shows up. I’ll get to that in a tick.

Installation

If the process was as simple as plug-in-adapter, plug-in-SSD, I’d not really bother mentioning this. But, of course, you’re going to need P5 pentalobe and T5 torx screwdrivers to get into your laptop and get the original SSD out. Watch out for the pentalobe case screws; it’s incredibly easy to strip the heads, so if you have any misgivings about a screw, leave it off when you reassemble and buy some replacements for a pound or two, otherwise you could be in trouble next time you want to get in there. Also, the two screws at the screen hinge are a different size – watch out when reassembling!

When looking at the adapter you’ll immediately wonder if the height of the M.2 socket will be a problem. The answer is… sort of. It’s tight. As in, when you put the cover on, it definitely contacts the back and could do with being a millimetre or so flatter. Light pressure on the cover allows everything to close up and look perfect, but bear this in mind; if the SSD connector weren’t such a robust little socket, I’d definitely have more misgivings about doing this and may well revisit the installation in the future.

Due to the increased height of the assembly a longer screw is provided to hold everything in place, but this also proved to be trouble. Tightening the screw to get more than a couple of threads engaged caused the SSD to bend. Any less and the screw would certainly work loose pretty quickly, and a conductive screw rolling around your laptop is the last thing anybody wants.

There are no components on the back of the 970 EVO, so I used an adhesive foam pad to prevent the SSD from bending while still putting load on the little screw. A tiny dot of blue thread lock should keep it from unwinding. Close inspection of the screw holes showed that this technique is definitely used by Apple during manufacture.

Configuration

Once in place, I performed the usual High Sierra installation from a USB stick. The drive was found immediately, everything installed fine, booted with no trouble; absolutely indistinguishable from the drive it had replaced, except for being four times the capacity.

Looking at Disk Utility, while the Apple device reported PCI as it’s Connection type, this drive reports PCI-Express. A check of System Information now shows no hardware under SATA/SATA Express, but does display an entry under the NVMExpress subsection instead. Looking good so far.

Performance

This work was performed on a MacBook Pro (Retina, 13-inch, Early 2015), so a MacBookPro12,1. It’s important to know your exact model, because the PCIe bus type and number of lanes provided to the SSD varies.

Expected Behaviour

The only Apple laptop that will take full advantage of a top-tier NVMe drive is the MacBook Pro (Retina, 15-inch, Mid 2015), so the MacBookPro11,4 or MacBookPro11,5. Those have a PCIe 3.0 bus supplying four lanes to the SSD (maximum throughput around 3 GB/s). In fact, on that model you should easily rival the brand new MacBook Pro (2018) if you do use something like the Samsung 970 EVO or PRO.

Every other model is a PCIe 2.0 bus, with either two or four lanes to the SSD. With the help of Gilles Aurejac’s post on Stack Exchange I’ve put together this expected performance table.

Name Model ID PCIe Bus Lanes Thru (MB/s)
Mac Pro (Late 2013) A1481 MacPro6,1 3.0 4 3000
MacBook Air (11-inch, Mid 2013) A1465 MacBookAir6,1 2.0 2 700
MacBook Air (13-inch, Mid 2013) A1466 MacBookAir6,2 2.0 2 700
MacBook Air (11-inch, Early 2014) A1465 MacBookAir6,1 2.0 2 700
MacBook Air (13-inch, Early 2014) A1466 MacBookAir6,2 2.0 2 700
MacBook Air (11-inch, Early 2015) A1465 MacBookAir7,1 2.0 2 700
MacBook Air (13-inch, Early 2015) A1466 MacBookAir7,2 2.0 2 700
MacBook Pro (Retina, 13-inch, Late 2013) A1502 MacBookPro11,1 2.0 2 700
MacBook Pro (Retina, 15-inch, Late 2013) A1398 MacBookPro11,2
MacBookPro11,3
2.0 4 1400
MacBook Pro (Retina, 13-inch, Mid 2014) A1502 MacBookPro11,1 2.0 2 700
MacBook Pro (Retina, 15-inch, Mid 2014) A1398 MacBookPro11,2
MacBookPro11,3
2.0 4 1400
MacBook Pro (Retina, 13-inch, Early 2015) A1502 MacBookPro12,1 2.0 4 1400
MacBook Pro (Retina, 15-inch, Mid 2015) A1398 MacBookPro11,4
MacBookPro11,5
3.0 4 3000

Earlier MacBook Pro systems are based upon SATA connections to the drive, so there’s no way to support an NVMe blade. There are options such as the OWC Aura Pro, but I’ve seen a fair few mentions of reliability issues, so may be better off looking for a low-use Apple original part on eBay to boost capacity on those laptops.

Real World Results

Throughput with the Samsung 970 EVO is largely the same as the original SSD, with read speeds topping out around 1463 MB/s, writing around 1256 MB/s; I can’t see there being much difference in small random access, though I must admit, I’ve not tested it. This was all about the space though, and obviously, that’s all fine and dandy. No surprises, all of the limitations are sitting with the PCIe bus of my machine.

Original Apple SM0256G 256GB SSD. Original Apple SM0256G 256GB in System Information. Note the SATA-SATA Express interface. Replacement Samsung 970 EVO 1TB NVMe SSD. Replacement Samsung 970 EVO 1TB in System Information, sitting on the NVMe device tree.

FileVault encryption is working perfectly and I had no issues at all using ‘Boot Camp Assistant’ to set up a Windows partition. In fact, booting Windows is incredibly fast, which made me a little suspicious of my macOS boot times. I enabled verbose booting and checked the messages, to find the only real issue that I have seen with this upgrade. During boot the following message is generated:

apfs_vfsop_sync:2928: failed to finish all transactions in sync()! (err 16)

Quickly searching for that error brought up a whole series of posts from the Hackintosh community, from Mac Pro owners using SSD drives in their internal bays, and even from Mac owners with unmodified hardware. It would appear to be related to TRIM cleanup on boot when using the new APFS filesystem; NVMe drives all support TRIM when attached to a Mac by default (no trimforce required) and something is delaying the cleanup process. Unfortunately, public documentation on APFS is rather lacking and nobody has yet come up with a reasonable explanation for this error. Because it does not affect general operation once booted, I’ve decided to ignore it. Sleep and resume is still reliable and pretty much instantaneous, so I’ll leave it up to Apple to fix APFS.

Temperatures are fine on the SSD, reporting 45-50°C under most conditions, though the controller chip seems to get much hotter than this during file access. However, in comparison with the Apple part, temperatures were in the same ballpark. I’ve not noticed any noticeable reduction in battery life in normal use either, so all-in-all I’m very pleased with the swap.

Finishing Up

Other than the almost-too-tight installation of the adapter and the current APFS/TRIM boot delay, this is a great way to get great-performing commodity storage into your MacBook. I’ll be keeping an eye on how the thread lock performs and will be checking back on temperatures next time I open the machine.

The real quiz is what to do with the 256 GB module which this replaced. This laptop had recently returned from having a minor case of worn anti-reflective coating replaced under the quietly available free repair programme which Apple are offering, which runs from four years after your purchase date of the machine. That rolls me almost into 2022 should I experience the issue again, but would they be as willing to perform the repair if they spot the swapped drive, even though it shouldn’t matter? Can I really afford to have such a useful part sitting unused?

It’s probably going on eBay.

← Recent Articles