Nvidia Optimus working on Lenovo Ideapad Y470 Y570 on Linux Debian Bumblebee
If you wish to use a Linux distribution on your Lenovo Ideapad Y470-Y570 you will encounter an issue with the Nvidia Optimus dual graphics card implementation under Linux. The Lenovo Ideapad Y470 Y570 notebook are equipped with an Intel Sandy Bridge 2nd generation CPU featuring an integrated HD 3000 Intel GPU and a discrete Nvidia GPU ( GT550M or GT555M) that you can activate or deactivate at will thanks to the Nvidia Optimus technology. At least, on a Windows OS.
In fact in a Linux OS the Nvidia Optimus is NOT working on Lenovo Ideapad Y470 Y570 due to a wrong call in the notebook BIOS, and you will end using always the Intel HD 3000 Integrated GPU and the Nvidia discrete graphic card will be always ON and in use generating heat and reducing your battery life.
Other symptoms include problems when installing official Linux Nvidia drivers with impossibility to start your desktop manager and eventually you will be stuck on linux command line if you try to run nvidia-xconfig to generate a proper Xorg.conf file. To get back to your visual desktop just type in the console
sudo rm /etc/X11/xorg.conf
to remove the bad Xorg.conf file, then restart your desktop manager or reboot.
I assembled a little tutorial guide to get Nvidia Optimus working on Lenovo Ideapad Y470 and Y570 on Linux Debian with Bumblebee and updated Nvidia drivers.
- Uninstall or remove completely your Linux Nvidia drivers if you installed them, you can do this by using your package manager. Also remove your Xorg.conf file if you have one.
- You need to download a Bumblebee prerequisite program , bbswitch, to manage you discrete card activation especially modified to solve the Lenovo Ideapad Y470 Y570 wrong dsm call, and enable it in your Linux installation. At this time this modification is an “hack” that bypass the problem rather than solve it. To download bbswitch with lenovo hack type in your console with administrator rights :
git clone git://github.com/Bumblebee-Project/bbswitch.git -b hack-lenovo
cp Makefile acpi-handle-hack.c /usr/src/acpi-handle-hack-0.0.1
cp dkms/acpi-handle-hack.conf /usr/src/acpi-handle-hack-0.0.1/dkms.conf
dkms add acpi-handle-hack/0.0.1
dkms build acpi-handle-hack/0.0.1
dkms install acpi-handle-hack/0.0.1
- If you are on a Debian based linux distro ( Like Ubuntu or Crunchbang, that was my case) you need to have the acpi-handle-hack module loaded at startup :
- Now you need to install Bumblebee that will manage your discrete card activation-deactivation and will take care to install the proper nvidia drivers. Refere to the Bumbleebee installation page for help. You can also quickly install Bumblebee by adding a third party repository, check http://suwako.nomanga.net/for further informations. Run as root :
echo acpi-handle-hack | sudo tee -a /etc/modules
sudo update-initramfs -u
[shell]wget -O – http://suwako.nomanga.net/suwako.asc | apt-key add – [/shell]
Update your sources.list configuration. Either add the following to /etc/apt/sources.list or to new file at /etc/apt/sources.list.d/ directory:
deb http://suwako.nomanga.net/debian sid main contrib
deb-src http://suwako.nomanga.net/debian sid main
Then again from the console :
apt-get install bumblebee bumblebee-nvidia
adduser $USER bumblebee
- Now you are done ! To check if things work ok you can run a simple benchmark like glxgears with the Intel HD 3000 card : [shell] sudo glxgears [/shell] And now run the same benchmark with the discrete nvidia GPU : [shell] sudo optirun glxgears [/shell]
- Now thanks to bbswitch you can switch on and off your discrete VGA by using the following commands as root :
- Turn the card off, respectively on:
Get the status:
0000:01:00.0 ON [/shell]
[shell]tee /proc/acpi/bbswitch <<<OFF
tee /proc/acpi/bbswitch <<<ON [/shell]
I hope that with this tutorial you can get Nvidia Optimus working on Lenovo Ideapad Y470 Y570 on Linux Debian with Bumblebee, to make sure i used the Unigine Heaven benchmark, here my results for my Lenovo Ideapad Y470 with Debian based Crunchbang linux distribution with my I3’s Intel HD 3000 GPU and with my discrete Nvidia GT550 GPU.