Hello to all,
a little note on recent works :
I've done a lot of tests about hibernation with NVMe drives on 2013-2014 macbook pro / air, with different OS.
Surprisingly (or not), hibernation works perfectly with Windows 8 / 10 and NVMe SSD on 2013-2014 macs.
It just works without any effort : in every tests I made I installed Windows, asked for hibernation and the computer hibernated... It stayed on hibernation forever without any battery drain and could wake up reliably 100% of my tries.
It seems hibernation on Windows doesn't work like under macOS : the energy state seems the same (S4, CPU and ram shut down), but the keyboard isn't able to wake the mac.
Wake from hibernation with Windows involve to press the power button, which make the mac chimie like a cold startup, and then it restores from hibernation file properly. Don't know yet if it's a normal behaviour with BootCamp..
With Linux I had more difficulties, because there are kernel events which prevents hibernation, and there are so many distributions / power managements package combinations that I couldn't test all and neither got success, but I'll continue...
I've also tested thoroughly macOS, of course, but with my 2 genuine Apple NVMe SSDs (AP032 and SM2048L). This was in order to verify if hibernation failure wasn't due to Sintech adapters.
And it seems not because on 2013-2014 macs, the Apple NVMe SSD have the exact same behaviour as other NVMe SSD with the Sintech adapter.
I wasn't able to make hibernation work even with any of my Apple NVMe SSD, and I've tested everything from 10.11 to 10.13, even with alternate bootloader (rEFInd, Clover).
Finally, I tried to watch the behaviour of the different signals with a little 2 channels oscilloscope...
It seems that :
- on every mac (2013-2017) the signal SSD DEVSLP always stays low (0V)
- on every mac (2013-2017) the signal SSD_PWR_FET_EN is always high (3,3V) even on sleep and during reboot
- on 2015-2017 macs the SSD_CLKREQ signal is high for little time at startup before SSD_RESET goes high, then is highly variable : it goes high when SSD is not in use, and low when high clock is requested (I guess).
- on 2013-2014 macs the SSD_CLKREQ is high for little time at startup before SSD_RESET, then stays at 0 every time.
- on every mac (2013-2017) SSD_RESET is low for 1s at startup then high (3,3V)
To me, this seems to confirm that the wiring of the Sintech green / black type C adapter is absolutely correct, and that there is no improvement to be made at this hardware level.
So, at this point, I still have a lot of testings to do to understand what is going wrong here with NVMe SSD that prevents 2013-2014 macs to be able to wake up from hibernation, but :
- it seems hibernation problem with 2013-2014 macs isn't related to the M.2 adapters.
- it seems also that this issue may be related to EFI, either a problem with the NVMe DXE driver in EFI of the 2013-2014 models, or something else... This may be a too complex problem for me, there is a lot of interesting work to be done here...
The fact that hibernation is possible with Windows indicates that a software patch enabling hibernation with NVMe drives on 2013-2014 macs is possible...
I can't answer if it will be such a thing available one day...
As a sidenote, I did tested lately some cheap NVMe SSD that came to the market recently, which are both very similar : Kingston A1000 and MyDigital SBX NVMe SSD.
Both use a Phison 5008 PCIe 3.0 x2 controller
On every mac which connector is limited to PCIe 2.0, those SSD are quite limited by the 2x lanes : top speed is 700MB/sec, no more (it is very usable thought...)
Only the rMBP 15" mid 2015 is PCIe 3.0 and goes beyond 1400 MB/sec with those SSD.
By the way those SSD are cheap : less than $160 for 500 GB... cheapest upgrade so far for those PCIe mac...