Finally managed to fix my MacBook Pro (2014 retina 15″)! The issue turned out to be something software related after all.
- The laptop shuts down abruptly
- The fan speeds up a lot before shutdown.
- There is nothing in the logs. The reason of the shutdown is shown as ‘unknown’
- The silent shutdowns happen erratically 5 mins to an hour from boot.
Fixes I tried
- Resetting PRAM.
- Resetting SMC.
- Reinstall OS from scratch.
At this point I started suspecting the hardware for the issue so I booked an appointment with the apple store.
Apple ‘Genius’ solutions:
At the store, the technician tried the following,
- Run a full hardware diagnostics to find nothing.
- Wipe the laptop clean and install the OS.
When this couldn’t resolve the issue. The advice he gave was to get the logic board changed along with the battery. The projected bill was around £600 – 800. At this point I gave up hope and bought a £200 Lenovo laptop, installed linux on it and moved on.
Today after couple of months , I just took a look at the laptop again and came across this. One of the answers claimed that this is caused by a buggy Thunderbolt-Ethernet driver and disabling it will fix it. Tried it and it worked! It is literally 3 lines of code (details in this thread).
csrutil disablein recovery mode (entered by pressing Cmd+R on boot) & reboot
sudo mv /System/Library/Extensions/AppleThunderboltNHI.kext /System/Library/Extensions/AppleThunderboltNHI.kext.BAKin normal terminal and reboot
csrutil enablein recovery mode and reboot
Thats it! My laptop has been working the whole day without any shutdown and it looks like I saved £800 with three lines of code 🙂
Edit (27 Dec 2019): As the commenters pointed out, this solution does not work after updating to Catalina. To make it work after updating to Catalina the following solutions have been proposed.
- before step 2, execute “sudo umount -uw /” to make the system files editable.
- after step 2, execute ” sudo mv /System/Library/Extensions/IOThunderboltFamily.kext /System/Library/Extensions/IOThunderboltFamily.kext.BAK” to rename the other new file which causes this issue.