Lenovo IdeaPad Y580
This machine has two video cards, an Intel HD 4000 integrated chip and a discrete Nvidia GTX 660M.
If you only wish to use the Intel chip, for improved battery life, lower temperatures, or less complexity, you can simply install xf86-video-intel and use the Intel driver. This will leave the NVIDIA card disabled, but it will still use power. To completely disable the NVIDIA card, enter the Y580's BIOS and on the "Configuration" tab, change "Graphic Device" from "Switchable Graphic" to "UMA Graphic". If these options are not there, you may need to update the BIOS.
Since the NVIDIA card must have some form of Optimus to be used, the graphics configuration can be complicated. The current Arch Linux kernel and proprietary NVIDIA driver support Optimus, but configuration is somewhat involved. There are three options:
- Use the proprietary NVIDIA driver
- Use the open-source nouveau driver
- Use Bumblebee, which is designed as a third-party Optimus-like solution
Each option has its advantages. Bumblebee allows power-saving methods like graphics-card switching, so if you don't want to constantly be running the NVIDIA card, follow the guides for Bumblebee on the wiki. The proprietary NVIDIA driver typically has better performance than the open-source driver as of September 2013, but typically has more bugs and compatibility issues. The nouveau driver is reverse-engineered due to Nvidia's lack of hardware documentation, and therefore does not perform as well as the proprietary driver, but is simpler to use and less prone to bugs. More information can be found on the wiki's article on NVIDIA Optimus.
To use the nouveau drivers, install the
xrandr --setprovideroffloadsink nouveau Intel, which specifies offloading of graphical processing to the NVIDIA device. To run a program using the NVIDIA device, you must specify
DRI_PRIME=1 before issuing the command, i.e.
DRI_PRIME=1 glxgears. To make sure the NVIDIA card is being accessed, install the package and issue
DRI_PRIME=1 glxinfo . There should be a line that says
OpenGL vendor string: nouveau.
If you don't want to issue
xrandr --setprovideroffloadsink nouveau Intel every time you start X, you can add it to the beginning of your
~/.xinitrc. You can also add
export DRI_PRIME=1 to your
~/.bashrc if you want to use the NVIDIA device for all programs.
To use the proprietary NVIDIA drivers, install the, , and packages.
The next step is to change
/etc/X11/xorg.conf appropriately. First, you must determine the PCI address of the NVIDIA card. Using
lspci, check the NVIDIA entry:
lspci | grep NVIDIA
The first number you see, which should be formatted something like
##:##.#, is the PCI address. In
/etc/X11/xorg.conf, however, the format must be modified so each number is one digit separated by colons (i.e. 01:00.0 would be written as 1:0:0).
# nano /etc/X11/xorg.conf
Section "ServerLayout" Identifier "layout" Screen 0 "nvidia" Inactive "intel" EndSection Section "Device" Identifier "nvidia" Driver "nvidia" BusID "PCI:PCI_address" EndSection Section "Screen" Identifier "nvidia" Device "nvidia" Option "UseDisplayDevice" "none" EndSection Section "Device" Identifier "intel" Driver "modesetting" EndSection Section "Screen" Identifier "intel" Device "intel" EndSection
The final step is to modify your
~/.xinitrc file to run two
xrandr commands. Add the following two lines at the beginning of your
$ nano ~/.xinitrc
xrandr --setprovideroutputsource modesetting NVIDIA-0 & xrandr --auto &
Now reboot, and X should run. If you get a black screen after starting X, kill it and try starting X again (it may take several tries).