I’ve recently made the mistake of purchasing the Asus K56VM laptop.
I call this purchase a mistake because as well as an excellent spec (3rd gen. i7 processor, excellent screen), this laptop also comes with nvidia’s Optimus graphic card setup.
In case you’re not familiar with the Optimus setup, it basically means that your laptop contains 2 graphic cards – 1 that’s built in to the Intel processor, and 1 discrete standalone. Given the proper drivers, and taking into account workload and power consumption, your OS can seamlessly toggle between the 2 cards.
If you use Windows as your OS, everything works nice and dandy; If you use a Linux-based OS, you’re in for a world of pain:
- Both GPUs are on and active.
- The HDMI output is “hardwired” to the discrete GPU.
- The VGA output is “hardwired” to the internal GPU.
- Only the VGA output works by default.
- You can work with only one output at a time.
- You can only toggle between outputs using an external project such as Bumblebee.
THAT’S RIGHT BROTHER, A WORLD OF PAIN
So I decided to just go and disable the nvidia GPU and exclusively use the internal one; this will save me from a lot of hassle and waste of power.
bbswitch is a sub-module of the Bumblebee project; it allows you to easily activate and disable the discrete GPU.
Because bbswitch operates as a kernel module, we’ll install it using the DKMS framework so that the module will also survive kernel upgrades.
We will first add the Bumblebee PPA to APT’s repository list:
root@mandromeda:~# apt-add-repository "deb http://ppa.launchpad.net/bumblebee/stable/ubuntu YOUR_UBUNTU_VERSION_HERE main"
root@mandromeda:~# apt-add-repository "deb-src http://ppa.launchpad.net/bumblebee/stable/ubuntu YOUR_UBUNTU_VERSION_HERE main"
Update APT’s indices:
root@mandromeda:~# apt-get update
And then install bbswitch:
root@mandromeda:~# apt-get install bbswitch-dkms
Permanently switching off the discrete card
Now we need to make sure that none of nvidia’s driver modules are loaded (both original and alternative), and we will then configure the bbswitch module to switch off the discrete GPU when loaded.
Edit /etc/modprobe.d/blacklist.conf by appending to it:
# Blacklist the alternative nvidia module
# Blacklist the original nvidia module
Then edit /etc/modules by appending to it:
# Switch off discrete GPU
Applying the changes
Finally we will apply the changes we made to the kernel module configurations.
Update the initial ramdisk by running:
root@mandromeda:~# update-initramfs -u
Then restart. The discrete GPU should now be permanently disabled.