My wife has a laptop which has Optimus graphics and currently runs 42.1. She is in no way a heavy graphics user so all I did to make things work was disable one screen in system settings and it works fine. Now the time has come to update to 42.2 and I am wondering the best (read simplest and least trouble) way to do this and keep it running. I dont care (and neither will my wife) which graphics subsystem will be used but I do want it to the the least battery hungry. I’m guessing that I could do again what I have done with 42.1 but the reason for asking here is - Is this the best way to do this? All this laptop is used for is web browsing, email, saving pictures from her camera, the occasional letter and the odd video.
OK that tells me how to install Bumblebee but that is a level of complexity and fragility I dont really want.
All I want really is for the laptop to use only one graphics card and have the other completely disabled. To be honest if I had realised the issues with Optimus and Linux when I purchased the laptop for my wife I would not have chosen an Optimus one. I just really need to have the simplest install possible and probably use ONLY the Intel gfx card with the Nvidia one disabled. Simply disabling the second display as I did on 42.1 works but probably is not the most power efficient which is why I asked this here.
To really switch off the NVIDIA chip you need to install bbswitch.
I have it installed as part of the bumblebee install, but maybe it works even standalone if you don’t care about really using the NVIDIA chip.
Anyway, in my experience installing bumblebee without the proprietary NVIDIA driver is no big deal and on my laptop it is rock-solid currently on 42.2.
You may also follow the guide at SDB:NVIDIA Bumblebee - openSUSE Wiki
Well, in fact, you can, at least for all practical purposes. I have two laptops, one Broadwell and one Skylake, where I disable the discrete Nvidia chip via acpi_call kmod. Took me some time to find the correct function or whatever the string piped to acpi_call is named but battery drain immediately halves when doing it.
This is for my ASUS 303 UB:
modprobe acpi_call && sh -c 'echo "\_SB.PCI0.RP01.PEGP._OFF" > /proc/acpi/call'
The “_SB.PCI0.RP01.PEGP._OFF” is different for the laptop models.
From reading the bbswitch code, I think it does the same as acpi_call, plus some magic to find the correct part. So it might be worth a try to install bbswitch along with its required kernel module. Both are in X11:Bumblebee repo for 42.2.
If that does not work, then you either need luck and someone posted the correct string for your laptop model on the net or you need to dive into acpi dumps and dsdt forensics. I would not recommend that unless you are somewhat fluid on the command line and have no fear of a few hard system lockups. Also, acpi_call mod is not part of the standard kernel. You need to build it yourself or install via dkms and then add a system startup script or preferably a systemd unit to start it at boot. Depending on how experienced you are the whole process can take something between half an hour and several days. With my first laptop I was lucky and the string was in acpi_call test script. With the second it took me two days to find it. Which reminds me that I still have to write the systemd unit.
Offhand, I think that is also what the in kernel vga_switcheroo driver does too when its used to turn an adapter off.
Also wanted to mention that, if using the nouveau oss driver stack, the nouveau kernal driver should power down the nvidia adapter when its not being used (via its dynamic power management support: GPU Runtime Power Management Coming For Linux 3.12 - Phoronix)