[SOLVED] Disabling discrete NVIDIA GPU in Optimus

Discussion in 'Lion Laptop Support' started by 459below, Feb 15, 2012.

  1. 459below

    459below

    Joined:
    Aug 17, 2011
    Messages:
    22
    Motherboard:
    Dell Vostro 3750
    CPU:
    Intel® Core™ i7-2670QM Processor
    Graphics:
    Intel® HD3000
    Feb 15, 2012 at 12:21 AM #1
    459below

    459below

    Joined:
    Aug 17, 2011
    Messages:
    22
    Motherboard:
    Dell Vostro 3750
    CPU:
    Intel® Core™ i7-2670QM Processor
    Graphics:
    Intel® HD3000
    Hello,

    since the the HD3000 chips do work pretty much OOB in 10.7 it's no real handicap to ignore one's powerful discrete GPU for OSX. But one major downside is the vast amount of precious battery power being wasted by the turned on, but unusable NVIDIA GPU in an optimus setup.

    i have been trying to disable the NVIDIA GPU by copying the respective function from the SSDT into the DSDT in order to call it somewhere, but it turns out to be rather tricky for my particular setup. it seems the DSDT/SSDT are widely programmed in a whole different approach than most of the old ones for which i saw some results on this matter.

    is there anyone who has experience in this and who would be willing to point me in the right direction here?

    it's an i7-2670QM built into a dell vostro 3750 with a hd3000 and the gt 525m.

    i'm considering downgrading the bios, since the version distributed by dell is older than the one mine was shipped with. and the dsdt on this one are pretty buggy.

    thanks in advance for any hints
     

    Attached Files:

  2. 459below

    459below

    Joined:
    Aug 17, 2011
    Messages:
    22
    Motherboard:
    Dell Vostro 3750
    CPU:
    Intel® Core™ i7-2670QM Processor
    Graphics:
    Intel® HD3000
    Feb 17, 2012 at 1:47 AM #2
    459below

    459below

    Joined:
    Aug 17, 2011
    Messages:
    22
    Motherboard:
    Dell Vostro 3750
    CPU:
    Intel® Core™ i7-2670QM Processor
    Graphics:
    Intel® HD3000
    Re: Disabling discrete NVIDIA GPU in Optimus

    Okay, that wasn't that hard.
    just copy and paste the right things to the right place and call it at the right time and voila, no more wasteful geforce.
    it's still a little crude about shutting down the system and stuff. but at least it shows '2:40 remaining' instead of '0:59' remaining at a charge of 87%
     
  3. pietras234

    pietras234

    Joined:
    Aug 9, 2011
    Messages:
    13
    Motherboard:
    Z68V-GEN3
    CPU:
    i2700K
    Graphics:
    HD 7850 :(
    Feb 22, 2012 at 4:16 PM #3
    pietras234

    pietras234

    Joined:
    Aug 9, 2011
    Messages:
    13
    Motherboard:
    Z68V-GEN3
    CPU:
    i2700K
    Graphics:
    HD 7850 :(
    would you mind describing what you have done to accomplish this goal? I would like to do same thing on my Asus U36SD with HD3000 and GeForce GT520M.
    Thanks in advance
     
  4. 459below

    459below

    Joined:
    Aug 17, 2011
    Messages:
    22
    Motherboard:
    Dell Vostro 3750
    CPU:
    Intel® Core™ i7-2670QM Processor
    Graphics:
    Intel® HD3000
    Feb 24, 2012 at 7:35 AM #4
    459below

    459below

    Joined:
    Aug 17, 2011
    Messages:
    22
    Motherboard:
    Dell Vostro 3750
    CPU:
    Intel® Core™ i7-2670QM Processor
    Graphics:
    Intel® HD3000
    Ok,
    first i have to give credit to DoiX (http://www.projectosx.com/forum/index.p ... entry16794) from who i got the final hints from.

    you will need a dsdt to do this.

    my steps were these:
    • Extract your SSDTs (via some livelinux and acpidump or so)[/*:m:24pg6v6z]
    • Open them in a DSDT-Editor (like this one http://www.insanelymac.com/forum/index. ... pic=223205) and look for the one which says NVidiaOptimusTable (like NvOptTbl or so)[/*:m:24pg6v6z]
    • Look in this SSDT for a method called "OFF" or "OPOF"[/*:m:24pg6v6z]
    • Copy this method into the "/" scope of your DSDT and hit compile... and it will fail[/*:m:24pg6v6z]
    • Look where the missing variables are defined in the SSDT from before and copy the whole operationarea to where you pasted the OFF-method[/*:m:24pg6v6z]
    • Repeat until it compiles just fine[/*:m:24pg6v6z]
    • Call the OFF-method by adding "OFF()" (or whatever your method is called) to the _WAK method in your DSDT[/*:m:24pg6v6z]
    • Install the DSDT and reboot[/*:m:24pg6v6z]
    • Look in the systeminfo under Graphics/Displays. the nvidia should now not be listed anymore. if it is, there was some error.[/*:m:24pg6v6z]

    of course you could just look for the variables beforehand instead of hitting compile every time but that way it's listed neatly. :)

    what this did for me was boosting the battery life and cooling down the system.
    i assume, because this is just calling the nvidia to shut off at boot and not reactivating it when the system shuts down the soft reboot will be screwed up, but NOT the usual shutdown. so using this method you will need to cold reboot your machine if you want to restart the system. that is the only disadvantage i encountered. but since imho the advantages outweigh the disadvantage by far it doesn't bother me the least.

    but maybe i will try reactivating the nvidia on shutdown to fix the soft reboot sometime.

    regards,
    below
     
  5. Aire

    Aire

    Joined:
    Nov 22, 2011
    Messages:
    12
    Motherboard:
    Dell XPS 15z
    CPU:
    i7-2640M
    Graphics:
    HD3000
    Apr 8, 2012 at 10:39 PM #5
    Aire

    Aire

    Joined:
    Nov 22, 2011
    Messages:
    12
    Motherboard:
    Dell XPS 15z
    CPU:
    i7-2640M
    Graphics:
    HD3000
    hey below,

    I did your steps and put in my opon and opof methods for my card, then inserted the operationregions so that it compiles perfectly, but when i go to save the dsdt at this step with the DSDT Editor app, it saves it as a 0 kb file. is this an error in my dsdt or with the app? it saves a .dsl fine though.

    thanks in advance!
     
  6. 459below

    459below

    Joined:
    Aug 17, 2011
    Messages:
    22
    Motherboard:
    Dell Vostro 3750
    CPU:
    Intel® Core™ i7-2670QM Processor
    Graphics:
    Intel® HD3000
    May 22, 2012 at 12:42 AM #6
    459below

    459below

    Joined:
    Aug 17, 2011
    Messages:
    22
    Motherboard:
    Dell Vostro 3750
    CPU:
    Intel® Core™ i7-2670QM Processor
    Graphics:
    Intel® HD3000
    i didn't compile in a while, but i kind of think that this means something is gravely wrong in the syntax of the DSL. If i remember correctly it just fails without telling, thus returning nothing. I'd suggest doing it over and pay attention to the scope into which you're pasting the method.

    regards,
    below
     
  7. 459below

    459below

    Joined:
    Aug 17, 2011
    Messages:
    22
    Motherboard:
    Dell Vostro 3750
    CPU:
    Intel® Core™ i7-2670QM Processor
    Graphics:
    Intel® HD3000
    Aug 29, 2012 at 3:42 AM #7
    459below

    459below

    Joined:
    Aug 17, 2011
    Messages:
    22
    Motherboard:
    Dell Vostro 3750
    CPU:
    Intel® Core™ i7-2670QM Processor
    Graphics:
    Intel® HD3000
    I upgraded my ram and flashed to the newest Bios Rev. I think "rev.A" or something.
    Anyways, i extracted the new DSDT and redid all the fixes. And maybe it's just my imagination, but it feels a lot more stable and less 'artefacty' when i use GraphicsEnabler=Yes. The NvidiaPatching will fail (since it's disabled), but if i remember correctly it should do something to the HD3000 as well.

    So here's the new DSDT.

    PS: sorry, i cannot attach my 40 KB DSDT, because it's too large.
     
  8. stratonz

    stratonz

    Joined:
    Oct 28, 2010
    Messages:
    2
    Motherboard:
    Gigabyte UD3H-B3
    CPU:
    Intel i3
    Graphics:
    Nvidia GT220
    Nov 18, 2012 at 8:38 PM #8
    stratonz

    stratonz

    Joined:
    Oct 28, 2010
    Messages:
    2
    Motherboard:
    Gigabyte UD3H-B3
    CPU:
    Intel i3
    Graphics:
    Nvidia GT220
    Hello, I have a Samsung Q330 with Nvidia 310m Optimus. I've follow your instructions but I've had no results (probably because I'm not able to correctly copy and paste the right pieces of ssdt in dsdt...). Too much errors! If i attach my dsdt and ssdts (the one which contains the Nvidia information is the ssdt6.aml) could you patch my dsdt, or explain me how to do (consider me as a dummy!)?
    Thanks in advance.
     

    Attached Files:

  9. stratonz

    stratonz

    Joined:
    Oct 28, 2010
    Messages:
    2
    Motherboard:
    Gigabyte UD3H-B3
    CPU:
    Intel i3
    Graphics:
    Nvidia GT220
    Nov 19, 2012 at 12:59 PM #9
    stratonz

    stratonz

    Joined:
    Oct 28, 2010
    Messages:
    2
    Motherboard:
    Gigabyte UD3H-B3
    CPU:
    Intel i3
    Graphics:
    Nvidia GT220
    Maybe I should explain better my problems...
    When I copy/paste the parts of my ssdt6.aml on "Method (_OFF, 0, Serialized)" etc... and "Method (_PS3, 0, NotSerialized)" etc, there is a lot of instructions similar to this "Store (Zero, LLGE)" that, in compilation phase, give me a lot of errors like "Object is not accessible from this scope (LLGE)" and so on... Another kind of error I found is "Object does not exist (****)".
    I don't know how to do. I've copy all the "Operation region...etc" but no results. Moreover, I'd like to know where I've to paste the ssdt code in the dsdt: you wrote there's a "Scope /", but I've found also a "Scope /" inside "Scope _SB.PCI0"....

    459below, can you help me, please?
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice