Skip to content
No description or website provided.
C Shell D
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


These drivers are for Asus laptops with integrated Intel
graphics and discrete Nvidia graphics.  To see if this
might work on your laptop, disassemble your DSDT and
look for a _DSM method similar to this:

    Method (_DSM, 4, NotSerialized)
        If (LEqual (Arg0, Buffer (0x10)
                    /* 0000 */    0xA0, 0xA0, 0x95, 0x9D, 0x60, 0x00, 0x48, 0x4D,
                    /* 0008 */    0xB3, 0x4D, 0x7E, 0x5F, 0xEA, 0x12, 0x9F, 0xD4

Also check to see that you have both MXMX and MXDS methods:

    Method (MXMX, 1, NotSerialized)

    Method (MXDS, 1, NotSerialized)

You'll need two sets of these, one for each gfx device.

These drivers will not work if the system has only the "optimus"
_DSM.  Sorry, I don't have a laptop with that to hack on.

This works pretty well on my Asus UL30VT, and we've seen some
reports that it works on other Asus laptops as well.

To get started:

Build the asus-switcheroo kernel modules:

# make

To install, pick your distro from

# sudo make install-fedora
# sudo make install-ubuntu
# sudo make install-arch

If these don't do what you need, reproduce these steps on your

 - copy the kernel modules in place (*.ko)
 - update modprobe.d to load asus-switcheroo before nouveau
 - update modprobe.d to load i915-jprobe before i915
 - add asus-switcher and i915-jprobe to the initramfs conf files
 - install the suspend/resume script
 - run depmod
 - build a new initramfs

Please post instructions for your distribution if you come up
with working steps.  Each provided install target also has
a corresponding uninstall target.  Note you will need to reboot
after install to make use of the modules as they're loaded from
the initramfs.

Using it:

For simply disabling the discrete graphics to save power, the
only other thing you need to do is:

# echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

If debugfs isn't automatically mounted for you, add this to your

debugfs		/sys/kernel/debug	debugfs	defaults	0 0

See the suspend/resume script for a description of an issue
and workaround for suspend/resume and powering off the other

If you want to run with nouveau graphics, echo DIS to the
above switch file.  Note that this will not work if X is
already running.  You can run DDIS to the switch file for
a delayed switch when X restarts.

The asus-switcheroo module now includes a workaround for older
kernels where nouveau does not reprobe devices when we
switch to it.  This fixes the black screen issue when using
the discrete gfx with the nouveau driver we had previously.

The i915-jprobe module also comes into play when the Intel
gfx is turned off.  This module dynamically fixes a bug in
the Intel driver and prevents the Intel lid notifier from
being called when the Intel gfx is turned off.

It is also possible, though very, very alpha and extremely
not recommended for average users to use the asus-switcheroo
module as a dummy switcheroo client that allows you to run
the proprietary nvidia module.  To do this, blacklist
nouveau and rebuild your initramfs to get nouveau out of it.
Use the dummy-client=1 option for asus-switcheroo, if loaded
from initramfs, use asus-switcher.dummy-client=1.  At boot,
switch to DIS, modprobe nvidia, then start X using the nvidia
proprietary driver.  Note that the screen LVDS will go black
as soon as you switch via DIS and will not come back until X
starts.  There is no framebuffer driver in this mode, so you
will only have X.  This switch is one way, you'll need to
reboot to get Intel graphics back.
Something went wrong with that request. Please try again.