Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

mmmgl

macrumors newbie
Original poster
Feb 28, 2021
17
4
Hello guys.

Does anyone have an idea how to correctly enable NvmeFix on a real macbook ? I installed a 2242 Sabrent NVME on my 2017 MBP but my battery is loosing too much power during idle. I tried everything to fix it, but it seems NvmeFix doesn't work, I can't find NVMEpmProxy through IOreg. I found some post online saying that it has to be "properly installed via bootloader", which I guess I can't do on a legit mac, and I can't find any more documentation about this online.

I also tried to inject SSDPmenabler.kext alone, and in combianation of lilu+nvmefix. Still don't work.

Any ideas ?



Thanks !
 

Crash0veride

macrumors regular
Oct 10, 2016
221
143
Cincinnati
First, what are you using to inject the kexts? The properly installed via bootloader refers to using Clover or similar to inject the kexts on boot.

Can't say I've tried to inject kexts on a legit Mac (have hackintosh experience, though last on Catalina), but my understanding is kext injection should work in principle on a legit Mac as well.
 

mmmgl

macrumors newbie
Original poster
Feb 28, 2021
17
4
I'm using hackintool, on Catalina.

I've seen a lot of posts online saying it was a bad idea to use a bootloader on a legit mac, could brick the device... I guess it is a better solution for kext injection but maybe too risky ?
 

conanchihieu

macrumors newbie
Aug 18, 2021
9
1
Hanoi, Vietnam
First of all, can you tell me how you install the kexts and where?

As for me, I've recently installed a KIOXIA BG4 2230 SSD for my 2017 rMBP.

I hadn't seen any difference in battery life between the 2 SSD. However while I was wandering on the Internet to see what other users' custom SSD build for their MBP I saw many threads complaining about their SSDs' idle power usage.

I installed iStats and figured that the SSD took up 0.3W of power usage while idle.

At first I don't think that installing the kexts helped, however after installing a combination of NVMeFix (+Lilu) and SsdPmEnabler the idle power usage dropped to just 0.02W. I can confirm that the kexts have been loaded into the system and is functioning properly, up to now.

I don't know where you install the kexts. For me, I installed it to /Library/Extensions using Hackintool.

An important notice: you <HAVE TO> disable csrutil (aka SIP) for the kexts to be loaded into the system. You can disable it in Terminal on macOS Recovery. Type this command: csrutil disable. But if you don't want to fully disable SIP, type this command: csrutil enable --without kext. For me, I use the latter.

To check if APST is running or not you can check it in iStats -> SSD 3.3V. The graph of the SSD's idle state should look like this:

Screen Shot 2021-08-20 at 21.53.00.png


Should you have any question, please don't hesitate to reply.

Look forward to hearing from you. Stay safe!
 

mmmgl

macrumors newbie
Original poster
Feb 28, 2021
17
4
First of all, can you tell me how you install the kexts and where?

As for me, I've recently installed a KIOXIA BG4 2230 SSD for my 2017 rMBP.

I hadn't seen any difference in battery life between the 2 SSD. However while I was wandering on the Internet to see what other users' custom SSD build for their MBP I saw many threads complaining about their SSDs' idle power usage.

I installed iStats and figured that the SSD took up 0.3W of power usage while idle.

At first I don't think that installing the kexts helped, however after installing a combination of NVMeFix (+Lilu) and SsdPmEnabler the idle power usage dropped to just 0.02W. I can confirm that the kexts have been loaded into the system and is functioning properly, up to now.

I don't know where you install the kexts. For me, I installed it to /Library/Extensions using Hackintool.

An important notice: you <HAVE TO> disable csrutil (aka SIP) for the kexts to be loaded into the system. You can disable it in Terminal on macOS Recovery. Type this command: csrutil disable. But if you don't want to fully disable SIP, type this command: csrutil enable --without kext. For me, I use the latter.

To check if APST is running or not you can check it in iStats -> SSD 3.3V. The graph of the SSD's idle state should look like this:

View attachment 1821032

Should you have any question, please don't hesitate to reply.

Look forward to hearing from you. Stay safe!

Yes, I did installed it through hackintool in /Library/Extensions too. I also disabled the SIP.

I used to check the stats with iStats and it seems thatt they where no difference before / after instlaling the kexts. I can try again and post the result as soon as I can. Thanks for the detailed message.

As I said in another post, I checked through IOreg if I could find the NVMEpmproxy variable, which I couldn't. In the NVMEFix github page, it says the following :

"If active power management initialisation is successful, an NVMePMProxy entry will be created in the IOPower IORegistry plane with IOPowerManagement dictionary."

Which let me think it isn't properly load. APST seems to be set to "true", though.

Capture d’écran 2021-08-20 à 17.23.30.png
 
Last edited:

conanchihieu

macrumors newbie
Aug 18, 2021
9
1
Hanoi, Vietnam
Yes, I did installed it through hackintool in /Library/Extensions too. I also disabled the SIP.

I used to check the stats with iStats and it seems thatt they where no difference before / after instlaling the kexts. I can try again and post the result as soon as I can. Thanks for the detailed message.
Okay, I got it. I've read so much about the Sabrent SSD compatibility issue with macOS, and I think that's the case.

If possible you can try with a different SSD e.g LiteOn for best result.

Stay safe mate :)
 
  • Like
Reactions: mmmgl

conanchihieu

macrumors newbie
Aug 18, 2021
9
1
Hanoi, Vietnam
Yes, I did installed it through hackintool in /Library/Extensions too. I also disabled the SIP.

I used to check the stats with iStats and it seems thatt they where no difference before / after instlaling the kexts. I can try again and post the result as soon as I can. Thanks for the detailed message.

As I said in another post, I checked through IOreg if I could find the NVMEpmproxy variable, which I couldn't. In the NVMEFix github page, it says the following :

"If active power management initialisation is successful, an NVMePMProxy entry will be created in the IOPower IORegistry plane with IOPowerManagement dictionary."

Which let me think it isn't properly load. APST seems to be set to "true", though.

View attachment 1821038
Can you confirm that SsdPmEnabler and NVMeFix is loaded and running properly?

To check if kext is loaded: type kextstat in Terminal.

To check if SsdPmEnabler is running, run this command: log show --style syslog --last boot | grep \(SsdPmEnabler
If it is running the logs will look like this:

2021-08-20 21:30:12.849147+0700 localhost kernel[0]: (SsdPmEnabler) Copyright (c) 2020-2021 kvic (https://github.com/kvic-z/SsdPmEnabler)


2021-08-20 21:30:12.849179+0700 localhost kernel[0]: (SsdPmEnabler) Enabled PCIe PM on SSD

The "Enabled PCIe PM on SSD" status msg is very important since it shows whether Power Management is running or not.

To check if NVMeFix is running, you may need to install Debug version of the kext. I don't have any experience with this because I installed Release version right away. I will cite thread #7082 in this post for instructions.


"If you want to confirm NVMeFix is working, you would need to install the "debug" build and add "-nvmefdbg" to your boot-args, that will let "log show --style compact --last boot --predicate "processID == 0 && eventMessage CONTAINS \"NVMe\"" --debug --info" work."

You can modify boot-args using Terminal or Hackintool.

Also, remember to rebuild kext cache after installing new kexts.

As IOReg shows that apst is enabled I still believe the kext is running somehow. Can you post the result of iStats with and without the kext installed?

I still believe that the kext has been loaded and running as intended. Because for some certain SSD models e.g Samsung 970 PRO even with the kext installed, the SSD still eats up 1.5W of power during idle state.
 
Last edited:

mmmgl

macrumors newbie
Original poster
Feb 28, 2021
17
4
This is what iStats is saying for the last hour. 17h10-17h20 is internet browsing,17h26-18h10 is idle.


Capture d’écran 2021-08-20 à 18.11.51.png


If anyone is wondering, these are my pmset settings :


Capture d’écran 2021-08-20 à 18.13.53.png
 

conanchihieu

macrumors newbie
Aug 18, 2021
9
1
Hanoi, Vietnam
This is what iStats is saying for the last hour. 17h10-17h20 is internet browsing,17h26-18h10 is idle.


View attachment 1821066

If anyone is wondering, these are my pmset settings :


View attachment 1821067
I think this result is perhaps okay, as without these kexts, my SSD will eat up 0.3W when idle, despite the drive being more efficient compared to other drives out there.

I have written an instruction on how to check if the kexts are running but somehow it needs to be reviewed by the moderator. Just wait for some time. I hope it will be approved soon.
 

mmmgl

macrumors newbie
Original poster
Feb 28, 2021
17
4
Can you confirm that SsdPmEnabler and NVMeFix is loaded and running properly?

To check if kext is loaded: type kextstat in Terminal.

To check if SsdPmEnabler is running, run this command: log show --style syslog --last boot | grep \(SsdPmEnabler
If it is running the logs will look like this:

2021-08-20 21:30:12.849147+0700 localhost kernel[0]: (SsdPmEnabler) Copyright (c) 2020-2021 kvic (https://github.com/kvic-z/SsdPmEnabler)


2021-08-20 21:30:12.849179+0700 localhost kernel[0]: (SsdPmEnabler) Enabled PCIe PM on SSD

The "Enabled PCIe PM on SSD" status msg is very important since it shows whether Power Management is running or not.

To check if NVMeFix is running, you may need to install Debug version of the kext. I don't have any experience with this because I installed Release version right away. I will cite thread #7082 in this post for instructions.


"If you want to confirm NVMeFix is working, you would need to install the "debug" build and add "-nvmefdbg" to your boot-args, that will let "log show --style compact --last boot --predicate "processID == 0 && eventMessage CONTAINS \"NVMe\"" --debug --info" work."

You can modify boot-args using Terminal or Hackintool.

Also, remember to rebuild kext cache after installing new kexts.

As IOReg shows that apst is enabled I still believe the kext is running somehow. Can you post the result of iStats with and without the kext installed?

I still believe that the kext has been loaded and running as intended. Because for some certain SSD models e.g Samsung 970 PRO even with the kext installed, the SSD still eats up 1.5W of power during idle state.

Here is the output of the debug version of NVMEFix :

Capture d’écran 2021-08-30 à 11.50.37.png


I can see that APST is clearly enabled, but I don't know if something else need to be active.
 

conanchihieu

macrumors newbie
Aug 18, 2021
9
1
Hanoi, Vietnam
Here is the output of the debug version of NVMEFix :

View attachment 1825164

I can see that APST is clearly enabled, but I don't know if something else need to be active.
Yep, that's it. You don't have to worry too much about the SSD. APST status 1 means that it is activated.

From the previous reading, during idle state your SSD use up 0.1W of power which is typical for a Sabrent SSD.

You can try disabling Power Nap and some other features (e.g Turbo Boost) that might affect the MacBook's idle state. Also, check if there is a firmware update for your Sabrent SSD.

In case you still wonder where the NVMePmProxy value is, inside the IOReg app, click on the "IOService" drop-down list, select "IOPower" and you can search for NVMePMProxy from there.

Screen Shot 2021-08-30 at 18.13.59.png


Should there be any questions, don't hesitate to ask. I'm here to help.

Cheers!
 
Last edited:

mmmgl

macrumors newbie
Original poster
Feb 28, 2021
17
4
Yep, that's it. You don't have to worry too much about the SSD. APST status 1 means that it is activated.

From the previous reading, during idle state your SSD use up 0.1W of power which is typical for a Sabrent SSD.

You can try disabling Power Nap and some other features (e.g Turbo Boost) that might affect the MacBook's idle state. Also, check if there is a firmware update for your Sabrent SSD.

In case you still wonder where the NVMePmProxy value is, inside the IOReg app, click on the "IOService" drop-down list, select "IOPower" and you can search for NVMePMProxy from there.

View attachment 1825180

Should there be any questions, don't hesitate to ask. I'm here to help.

Cheers!
Hello, thanks for the help !

You're right, I found the NVMePMProxy value, thanks.

I already tried to disable powernap, tcpkeepalive, findmymac, tried different hibernate mode, but nothing seems to work. I know this is SSD related as the drain happening overnight is only there since I changed it. I'm running out of solutions :/
 

conanchihieu

macrumors newbie
Aug 18, 2021
9
1
Hanoi, Vietnam
Hello, thanks for the help !

You're right, I found the NVMePMProxy value, thanks.

I already tried to disable powernap, tcpkeepalive, findmymac, tried different hibernate mode, but nothing seems to work. I know this is SSD related as the drain happening overnight is only there since I changed it. I'm running out of solutions :/
Hi,

In case none of this worked I think the problem maybe related to the adapter? Can you tell me which adapter you're using?

There are some users reported problems with the adapter power management, though it's unclear whether the problem is caused by the adapter or something else.

I'm using the NFHK one and haven't found any problems with it yet.

If you have much spare time and still want to investigate further, try putting back the original SSD and check for the power usage in iStats.

There are some adapters that have capacitors, maybe for adjusting SSD power management.

Cheers!
 

djayor

macrumors newbie
Aug 14, 2012
4
1
Hi, I also have an MBP13 mid-2017 and I recently upgrade for an OWC aura Pro NT 1Tb, thinking that I will get rid of this kind of problem, but... guess not.

My battery is draining like 20% in ~8 hours.
I installed SsdPmEnabler in a simple way:
$ csrutil enable --without kext
$ sudo cp -R ~/Downloads/SsdPmEnabler.kext /Library/Extensions

I did the grep command and it's running, but I didn't see any changes.
The smartmontools show me this:
$ smartctl -a disk1s1
Screenshot_2022-02-26_at_21_55_37.png


But using iStat Menus, my "SSD 3.3v" is always showing 0,13w or more.

I try to install NVMeFix and Lilu kext using the same method of SsdPmEnabler, but I get a kernel panic during boot.
I never used Hackintool before, and also I didn't find any tutorial or instructions to run it on a real Apple computer. How can I install NVMeFix and Lilu?

Thanks in advance!
 

mmmgl

macrumors newbie
Original poster
Feb 28, 2021
17
4
Hi, I also have an MBP13 mid-2017 and I recently upgrade for an OWC aura Pro NT 1Tb, thinking that I will get rid of this kind of problem, but... guess not.

My battery is draining like 20% in ~8 hours.
I installed SsdPmEnabler in a simple way:
$ csrutil enable --without kext
$ sudo cp -R ~/Downloads/SsdPmEnabler.kext /Library/Extensions

I did the grep command and it's running, but I didn't see any changes.
The smartmontools show me this:
$ smartctl -a disk1s1
View attachment 1965478

But using iStat Menus, my "SSD 3.3v" is always showing 0,13w or more.

I try to install NVMeFix and Lilu kext using the same method of SsdPmEnabler, but I get a kernel panic during boot.
I never used Hackintool before, and also I didn't find any tutorial or instructions to run it on a real Apple computer. How can I install NVMeFix and Lilu?

Thanks in advance!


By know I still have power draining issues... I just deal with it :/ You should be able to install nvmefix and lilu with Hackintool
 

xanderx007

macrumors 6502
Nov 7, 2017
262
140
The new/recent versions of OCLP installs Lilu and NVMefix, as I just recently realized, when I checked my A2000's idle power has gone down to as low as 0.01A (1mA). I installed OCLP a few weeks ago, and have been attempting to install Monterey on an external SSD for testing. I suppose this is a welcome side effect even if I have not been able to do so.

The current version of OCLP is 4.3.
 

wicktron

macrumors newbie
Jun 5, 2008
8
5
The new/recent versions of OCLP installs Lilu and NVMefix, as I just recently realized, when I checked my A2000's idle power has gone down to as low as 0.01A (1mA). I installed OCLP a few weeks ago, and have been attempting to install Monterey on an external SSD for testing. I suppose this is a welcome side effect even if I have not been able to do so.

The current version of OCLP is 4.3.
Interesting. I recently tried OCLP and it did not install NVMeFix by default. Lilu was certainly installed.
When adding NVMeFix to OC Kexts folder and adding it to the .plist, the Mac gets stuck trying to boot.
I'm using an OWC Aura Pro NT 1tb on a 2017 MBP Non TouchBar, and it eats battery like crazy, about 3% an hour with lid closed.
 

danielristic

macrumors newbie
Dec 14, 2022
20
9
I've read this thread and many others on the subject many times but while I have managed to get SsdPmEnabler working with csrutil enable --without kext, I still have no clue on how to install NVMeFix and Lilu. Do I just copy the kexts in Library or do I have to use Hackintool or something else? (I'm on a legit mac).
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.