Jump to content

[GUIDE] Edit AppleGraphicsPowerManagement.kext to unleash nvidia's GTX 570/580 full power and save energy at the same time.


  • Please log in to reply
68 replies to this topic

#41
rvxtm

rvxtm

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 109 posts
  • Gender:Male
  • Location:Timisoara, Romania
  • Interests:Tech, Science, Biology, OSX86 stuff

Sorry for my ignorance.
I have a GTX 560.
A copy and paste and changing the vendor thing to Vendor10deDevice1084 should work for me?
This is my AppleGraphicsPowerManagement.kext.
http://d.pr/f/hEjx
Did I do it right?

edit - yeah, im pretty sure I did it wrong.
The same games are just doing horribly compared to how they do on Windows.
Help?


Check with CPU-Z in windows to see how many states does your card have, and if it has only 3 states, you need to edit the first three states, the forth would be something like 110 on both high and low, it only uses the first three ones.
Try something like : HIGH : 45 , 75 , 100 , 110
LOW : 0 , 87 , 98 , 110

And use MacPro 5,1 (delete AppleTyMCEDriver.kext)

#42
dannymichel

dannymichel

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 298 posts
  • Gender:Male

Check with CPU-Z in windows to see how many states does your card have, and if it has only 3 states, you need to edit the first three states, the forth would be something like 110 on both high and low, it only uses the first three ones.
Try something like : HIGH : 45 , 75 , 100 , 110
LOW : 0 , 87 , 98 , 110

And use MacPro 5,1 (delete AppleTyMCEDriver.kext)

This is what it shows for cpu-z

Attached Files



#43
dannymichel

dannymichel

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 298 posts
  • Gender:Male
Changed it to
    <key>MacPro5,1</key>
    <dict>
	 <key>Vendor10deDevice05e2</key>
	 <dict>
	  <key>Heuristic</key>
	  <dict>
	   <key>ID</key>
	   <integer>0</integer>
	   <key>IdleInterval</key>
	   <integer>250</integer>
	   <key>SensorOption</key>
	   <integer>1</integer>
	   <key>SensorSampleRate</key>
	   <integer>4</integer>
	   <key>TargetCount</key>
	   <integer>5</integer>
	   <key>Threshold_High</key>
	   <array>
	    <integer>45</integer>
	    <integer>75</integer>
	    <integer>100</integer>
	    <integer>110</integer>
	   </array>
	   <key>Threshold_Low</key>
	   <array>
	    <integer>0</integer>
	    <integer>87</integer>
	    <integer>98</integer>
	    <integer>110</integer>
	   </array>
	  </dict>
	  <key>LogControl</key>
	  <integer>0</integer>
	  <key>control-id</key>
	  <integer>18</integer>
	 </dict>

for my GTX560, non ti card, and deleted AppleTyMCEDriver.kext
I'm all set?

#44
Karol Trojanowski

Karol Trojanowski

    InsanelyMac Protégé

  • Members
  • Pip
  • 18 posts
I have a GeForce 8700M GT with a common defect that causes display corruption and lockups when switching states.

I want to disable switching altogether. How should I edit the thresholds so that it would go up to state 0 at boot and never go down?

I can't wrap my head around the logic behind those values. Any help?

#45
iLeopod

iLeopod

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 435 posts
  • Gender:Male
  • Location:Germany
  • Interests:ileopod.wordpress.com
I added
<key>BoostPState</key>
     <array>
         <integer>0</integer>
         <integer>1</integer>
         <integer>2</integer>
         <integer>3</integer>
     </array>
     <key>BoostTime</key>
     <array>
         <integer>3</integer>
         <integer>3</integer>
         <integer>3</integer>
         <integer>3</integer>
     </array>
to remove this error:

AVF error: AVAHDGPURendererVP2VP3BoostVP3: AGPMSetBoost code = 0 returned 0xe00002c2 (ig)
Sure this won't enable VDA but one error less in log.

#46
Mrengles

Mrengles

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 117 posts
  • Gender:Male
  • Location:United States
Has anyone looked into editing the AGPM Info.plist for the newer NVidia Kepler GPUs such as the GTX 660 ti, 670 or 680?

Samples from the iMac13,2 show that the options have changed significantly.

I've been using a combination of Apples settings for the GTX 675mx and GTX 680m for my GTX 670 SuperClocked but would like to optimize the PM for the desktop model GPU as a posed to using Apples iMac13,2 mobile settings.

[/font]
[font=courier new,courier,monospace]<dict>
<key>BoostPState</key>
<array>
  <integer>12</integer>
  <integer>12</integer>
  <integer>12</integer>
  <integer>12</integer>
</array>
<key>BoostTime</key>
<array>
  <integer>1</integer>
  <integer>1</integer>
  <integer>1</integer>
  <integer>1</integer>
</array>
<key>Heuristic</key>
<dict>
  <key>EnableEnergyPstate</key>
  <integer>1</integer>
  <key>EnergyDOWNThreshold</key>
  <integer>60</integer>
  <key>EnergyPstate</key>
  <integer>8</integer>
  <key>EnergyUPThreshold</key>
  <integer>80</integer>
  <key>EngineDOWNThreshold</key>
  <integer>15</integer>
  <key>EngineUPThreshold</key>
  <integer>30</integer>
  <key>ID</key>
  <integer>0</integer>
  <key>MemDOWNThreshold</key>
  <integer>30</integer>
  <key>MemUPThreshold</key>
  <integer>50</integer>
  <key>MinP0P1</key>
  <integer>11</integer>
  <key>MinP5</key>
  <integer>12</integer>
  <key>MinP8</key>
  <integer>13</integer>
  <key>MinVP0</key>
  <integer>11</integer>
  <key>MinVP1</key>
  <integer>23</integer>
  <key>MinVP5</key>
  <integer>34</integer>
  <key>MinVP8</key>
  <integer>36</integer>
  <key>NumOfPstates</key>
  <integer>14</integer>
  <key>NumOfVPstates</key>
  <integer>37</integer>
  <key>P0Table</key>
  <array>
   <integer>0</integer>
   <integer>1</integer>
   <integer>2</integer>
   <integer>3</integer>
   <integer>4</integer>
   <integer>5</integer>
   <integer>6</integer>
   <integer>7</integer>
   <integer>8</integer>
   <integer>9</integer>
   <integer>10</integer>
   <integer>11</integer>
   <integer>34</integer>
   <integer>36</integer>
  </array>
  <key>P1Table</key>
  <array>
   <integer>12</integer>
   <integer>13</integer>
   <integer>14</integer>
   <integer>15</integer>
   <integer>16</integer>
   <integer>17</integer>
   <integer>18</integer>
   <integer>19</integer>
   <integer>20</integer>
   <integer>21</integer>
   <integer>22</integer>
   <integer>23</integer>
   <integer>34</integer>
   <integer>36</integer>
  </array>
</dict>
<key>control-id</key>
<integer>17</integer>
</dict>[/font]
[font=courier new,courier,monospace]

Attached Files


Edited by mrengles, 20 March 2013 - 04:54 PM.


#47
Riley Freeman

Riley Freeman

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 899 posts
  • Gender:Male
  • Location:The Streets
I'd like to know about editing AGPM for kepler as well. I tried editing the entry for the 675MX for my 670 EX OC but on reboot the display shut down when the driver loaded, so I just removed my edit.

It felt like less of an issue with 10.8.2 as I'm pretty sure the card clocked down correctly there. However with 10.8.3 when the card ramps up (like for a benchmark) it seems to take forever for the temps to come back down and typically it never drops below 38, while it was idling at 27-28 before the benchmark.

#48
Mrengles

Mrengles

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 117 posts
  • Gender:Male
  • Location:United States
@R Freeman

I don't know if the cards not ramping down or it's a problem with FakeSMC/HWSensors displaying the GPU sensor info. Because with LogControl=1 I see the GPU getting to State 3 on idle.

#49
Riley Freeman

Riley Freeman

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 899 posts
  • Gender:Male
  • Location:The Streets
Maybe that's it. I updated HWSensors a day or two ago to the (then) most recent version which had Kepler support but it didn't make any difference. They may have changed a few things in 10.8.3/nvidia drivers that broke the GPUSensors kext.

#50
solarein

solarein

    InsanelyMac Protégé

  • Members
  • Pip
  • 19 posts
  • Gender:Male
  • Location:Cambridge, MA

I'd like to know about editing AGPM for kepler as well. I tried editing the entry for the 675MX for my 670 EX OC but on reboot the display shut down when the driver loaded, so I just removed my edit.

It felt like less of an issue with 10.8.2 as I'm pretty sure the card clocked down correctly there. However with 10.8.3 when the card ramps up (like for a benchmark) it seems to take forever for the temps to come back down and typically it never drops below 38, while it was idling at 27-28 before the benchmark.


Try monitoring the core voltage, core frequency, and memory frequency of the GPU to see if it's really not clocking down, or if the temperatures are staying high for some other reason. I'm not sure if HWSensors displays this info, but using the latest iStatMenus I'm able to see what appears to be correct values for the GPU clocks and voltages being reported by GPUSensors.

#51
Riley Freeman

Riley Freeman

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 899 posts
  • Gender:Male
  • Location:The Streets

Try monitoring the core voltage, core frequency, and memory frequency of the GPU to see if it's really not clocking down, or if the temperatures are staying high for some other reason.


Thanks for the tip. I was using iStat Menus 3 and didn't have a GPU clock reading so I was always going by the temp. I installed the v4 demo and it shows the GPU clock speed (HWSensors also shows this). Freshly booted, the card was idling at 324MHz. When I ran LuxMark it clocked up to 1.17GHz. After the benchmark finished it dropped to 1GHz and it's been sitting at that since.

#52
dannymichel

dannymichel

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 298 posts
  • Gender:Male
Should I do this for my 660 ti?

#53
Mrengles

Mrengles

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 117 posts
  • Gender:Male
  • Location:United States

Should I do this for my 660 ti?


The iMac13,2 models has a 660 already present in Info.plist, just try changing the deviceID to the one of your 660Ti.

#54
dannymichel

dannymichel

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 298 posts
  • Gender:Male

The iMac13,2 models has a 660 already present in Info.plist, just try changing the deviceID to the one of your 660Ti.

you mean i dont have to make any other edits other than changing a device id somewhere in the file? how do i find my device id?

#55
Mrengles

Mrengles

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 117 posts
  • Gender:Male
  • Location:United States

you mean i dont have to make any other edits other than changing a device id somewhere in the file? how do i find my device id?


Correct, until we know more about Apple's Kepler AGPM Syntax. The only thing I know for sure Kepler cards use and ID of 4, while FERMI cards use 0. You can find your NVidia GPU's Device ID in System Information.

Goto Apple Menu > About this Mac (while holding the option key) > System Information...

To find the Device ID to edit in the Info.plist you can check this link out:

https://developer.nv...e_ids_jan13.txt

Good luck!

Mrengles

#56
JahRastaMaN

JahRastaMaN

    InsanelyMac Protégé

  • Members
  • PipPip
  • 92 posts
  • Gender:Male
  • Location:Brasil
Hello, I have a GTX 670m 3GB and usually have freezes when I switch states. I'm using SMBIOS MacBookPro 9,1 and LegacyAGPM with nvidia drivers for 10.8.4. Does anyone have any tips for me?

Attached is my darwindumper and LegacyAGPM - http://www.sendspace.com/file/pvcxeh

Correct, until we know more about Apple's Kepler AGPM Syntax. The only thing I know for sure Kepler cards use and ID of 4, while FERMI cards use 0. You can find your NVidia GPU's Device ID in System Information.

Goto Apple Menu > About this Mac (while holding the option key) > System Information...

To find the Device ID to edit in the Info.plist you can check this link out:

https://developer.nv...e_ids_jan13.txt

Good luck!

Mrengles



Hello, I have a GTX 670m 3GB and usually have freezes when I switch states. I'm using SMBIOS MacBookPro 9,1 and LegacyAGPM with nvidia drivers for 10.8.4. Does anyone have any tips for me?

Attached is my darwindumper and LegacyAGPM - http://www.sendspace.com/file/pvcxeh

#57
JahRastaMaN

JahRastaMaN

    InsanelyMac Protégé

  • Members
  • PipPip
  • 92 posts
  • Gender:Male
  • Location:Brasil
No one to give help or tips? TY


Posted Image

Channel Timeout. :/

#58
rvxtm

rvxtm

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 109 posts
  • Gender:Male
  • Location:Timisoara, Romania
  • Interests:Tech, Science, Biology, OSX86 stuff

@R Freeman

I don't know if the cards not ramping down or it's a problem with FakeSMC/HWSensors displaying the GPU sensor info. Because with LogControl=1 I see the GPU getting to State 3 on idle.


I saw that too but as well my temps and gpu core stay at the highest level and never ramp down to the idle states. I only hope there will be a new MacPro with a kepler card and then things should be a little clearer.

#59
Mull7965

Mull7965

    InsanelyMac Protégé

  • Members
  • Pip
  • 11 posts
  • Gender:Male
  • Location:Germany

I saw that too but as well my temps and gpu core stay at the highest level and never ramp down to the idle states. I only hope there will be a new MacPro with a kepler card and then things should be a little clearer.

 

I have a Kepler card myself and I was hoping, too, that sooner or later Apple would have a Mac with a desktop Kepler card. Well, fat chance now... So, I started to experiement a bit and if I'm not mistaken I have good news about power management for Kepler.

 

First, I tried to get power management working, patching the Info.plist in AppleGraphicsPowerManagement.kext. I got to the point where OS X recognised my card, and loaded the section I wanted, i.e. system.log had an entry like this on boot:

kernel[0]: [AGPM Controller] build GPUDict by Vendor10deDevice1189

For the actual content I tried variations based on the GTX 680M and similar cards Apple has details on. Unfortunately, I never saw any entries in the logfile about OS X trying to switch power states. So, clearly something wasn't working. At the same time though, my system is very quiet and I'm pretty sure that if the GPU was running at full clock I would be able to hear the GPU fan over the rest. I didn't.

 

Next, I thought that this is about power management and therefore changes would also be observable with a power meter on the wall. I plugged that in and measured a couple of things: idle power consumption, power consumption while playing 1080p in Youtube (Firefox), running the OpenGL test in Cinebench. Readings are averaged. I repeated this with AGPM not building a GPUDict, i.e. AGPM unknownPlatform, and, as a control, the same thing on Windows 7, which presumably has fully working power management. Results:

 

                      idle  youtube cinebench

AGPM with GPUDict      59W    ~64W    ~130W

AGPM unknown platform  59W    ~64W    ~130W

Windows 7              59W    ~64W    ~130W

 

I also checked whether the system returned to the measured idle power consumption after running Cinebench. It did. If I read this right then we don't have to do anything at all to get power management working for Desktop Kepler cards, right?

 

Unfortunately, there is a fly in the ointment, though. The Cinebench result under OS X (in both configurations) is 48fps, while on Windows it's 62fps. Does that mean the card doesn't ramp up properly under OS X? But why the increased power consumption? Which is identical to the Windows one?



#60
misterfrista

misterfrista

    InsanelyMac Protégé

  • Members
  • PipPip
  • 55 posts
  • Gender:Male
  • Location:Münster

Hey!

I am actually interested in AGPM for GTX660 OC too! The system integrated powermanagment for my card gives me about 25 % less power in benchmarks compared to windows and the same benchmark!

Therefore I recently dumped my videocard bios and looked it up with kepler bios tweaker 1.25 to see the boost states and other configurations.

To be honest I am a bit overstrained about transfering the given information into the info.plist!

As far as I understand it I have 4 boost-profils P00 P02 P05 and P08 where P08 is the idle profil and P00 ist the boost profil?!

 

So EnergyPstate should have the value 8 for the profil P08 (windows idle´s at 324mhz).

 

What I don´t get is how to transfer the possible steps 0 to 44 (according to the picture) into the profil.

 

Any idea is welcome :)


b3a.png stf.png oci0.png zpx.png 9st.png





 


                    <key>Vendor10deDevice11c0</key>
                    <dict>
                        <key>BoostPState</key>
                        <array>
                            <integer>12</integer>
                            <integer>12</integer>
                            <integer>12</integer>
                            <integer>12</integer>
                        </array>
                        <key>BoostTime</key>
                        <array>
                            <integer>1</integer>
                            <integer>1</integer>
                            <integer>1</integer>
                            <integer>1</integer>
                        </array>
                        <key>Heuristic</key>
                        <dict>
                            <key>EnableEnergyPstate</key>
                            <integer>1</integer>
                            <key>EnergyDOWNThreshold</key>
                            <integer>60</integer>
                            <key>EnergyPstate</key>
                            <integer>8</integer>
                            <key>EnergyUPThreshold</key>
                            <integer>80</integer>
                            <key>EngineDOWNThreshold</key>
                            <integer>15</integer>
                            <key>EngineUPThreshold</key>
                            <integer>30</integer>
                            <key>ID</key>
                            <integer>4</integer>
                            <key>MemDOWNThreshold</key>
                            <integer>30</integer>
                            <key>MemUPThreshold</key>
                            <integer>50</integer>
                            <key>MinP0</key>
                            <integer>13</integer>
                            <key>MinP5</key>
                            <integer>12</integer>
                            <key>MinP8</key>
                            <integer>13</integer>
                            <key>MinVP0</key>
                            <integer>11</integer>
                            <key>MinVP1</key>
                            <integer>23</integer>
                            <key>MinVP5</key>
                            <integer>34</integer>
                            <key>MinVP8</key>
                            <integer>36</integer>
                            <key>NumOfPstates</key>
                            <integer>14</integer>
                            <key>NumOfVPstates</key>
                            <integer>37</integer>
                            <key>P0Table</key>
                            <array>
                                <integer>0</integer>
                                <integer>1</integer>
                                <integer>2</integer>
                                <integer>3</integer>
                                <integer>4</integer>
                                <integer>5</integer>
                                <integer>6</integer>
                                <integer>7</integer>
                                <integer>8</integer>
                                <integer>9</integer>
                                <integer>10</integer>
                                <integer>11</integer>
                                <integer>34</integer>
                                <integer>36</integer>
                            </array>
                            <key>P1Table</key>
                            <array>
                                <integer>12</integer>
                                <integer>13</integer>
                                <integer>14</integer>
                                <integer>15</integer>
                                <integer>16</integer>
                                <integer>17</integer>
                                <integer>18</integer>
                                <integer>19</integer>
                                <integer>20</integer>
                                <integer>21</integer>
                                <integer>22</integer>
                                <integer>23</integer>
                                <integer>34</integer>
                                <integer>36</integer>
                            </array>
                        </dict>
                        <key>control-id</key>
                        <integer>17</integer>
                    </dict>

 







0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy