Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
C Shell D
tree: bca53f14e3

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
.gitignore
COPYING
Makefile
README
asus-switcheroo-pm
asus-switcheroo.c
asus-switcheroo.conf-dracut
asus-switcheroo.conf-modprobe.d
i915-jprobe.c

README

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
distribution:

 - 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
/etc/fstab:

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
device.

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.