Newbie questions about hybrid Nvidia and Intel GPU drives + TUTORIAL

Just giving an overview of a few important points to make sure you know the basics:
(not an expert myself; please excuse and point out if there a mistakes)

  • Manjaro is supposed to have everything you need for both GPUs (and switching) already installed and configured and it should work right away, unless you have some software/hardware issues.
    The default ‘video-hybrid-intel-nvidia-bumblebee’ enables switching - it allows the internal GPU to handle desktop compositing while the dedicated GPU can be used for the application itself, which increases overall performance.

  • There is no automatic switching between the integrated and the dedicated GPU on Linux with the Bumblebee driver, so every program you want to use the dedicated GPU with, start it with the primusrun (or the older optirun ) command in front of the program name - even simpler see the next point:

  • You can edit your applications default launch command, so you can just click the icon of the corresponding program on your desktop and it will use your dedicated GPU. This is somewhat different depending on what Desktop Environment you are using, but on KDE it’s as simple as right-clicking on the application launcher icon -> [Edit Applications…], search through the list of programs and select it, in the Command field add primusrun (followed by a space) to the beginning (make sure it is actually the beginning, the field cuts off the left part of long commands) and save it. After that delete and redo the program’s shortcut-icon which you might have on the desktop or on a panel, so it uses the updated command.

  • If you launch Steam with primusrun, every game on Steam will use your dedicated GPU, no need to do it separately for each - but you still can. See the link @cscs posted in his previous comment.
    To see whether Steam uses the dGPU, in the Steam menu click Help -> System Information and scroll down to the Video Card section; if you see your dGPU all is fine

  • Many games that have been ported from Windows to Linux use a translation layer for DirectX to OpenGL, similar to what Wine does, and that additional overhead unfortunately means worse performance than on Windows.
    @michaldybczak the GeForce GT 635M is quite a low end card nowadays, some iGPUs on recent smartphones are about as fast (judging from its gflops), if not more.

edit:

  • The closed source proprietary drivers for both NVidia and AMD are usually faster and more unproblematic in games than the community developed open source ones. Intel iGPUs luckily only have an open source driver which they develop themselves and it should perform similarily well to their Windows driver. AMD has recently started developing their own open source driver stack aswell. The open source drivers are a part of the Mesa collection - Nouveau is the name of the NVidia open source driver.
    For performance comparison: http://www.phoronix.com/scan.php?page=article&item=nouveau-linux-45
4 Likes

Hi, I post the following information extracted from a post on ubuntuforums.org, perhaps it can be useful also for us. You guys that have the hybrid graphics can you try and let to know if it works? The key thing in this procedure seems to be the switching between intel and nvidia cards from nvidia-settings.

Regarding the use of NVIDIA/intel:

  • From the applications menu, I selected “Preferences|Additional drivers”, and selected to use the "NVIDIA binary driver - version 361.28 from nvidia-361 (privative, tested). Then apply changes.
  • I installed nvidia-prime
  • Now I can run nvidia-settings and select either NVIDIA GPU (Performance Mode) or Intel (Power Saving Mode).
  • Others reported various stories when using the PPA NVIDIA repositories. I didn’t tested them yet.VIDIA repositories. I didn’t tested them yet.

And this could be also useful (to try):

WARNING, if you are currently using the Bumblebee hybrid driver (‘video-hybrid-intel-nvidia-bumblebee’) you can’t access the ‘NVIDIA X Server Settings’.
DO NOT follow what the pop-up window suggests to edit your X-config, it will likely break your system on the next startup! (I experienced that)
To actually open the NV settings on a Bumblebee setup use optirun -b none nvidia-settings -c :8

So as far I know, what @BlueWizard posted about NV Prime for auto-switching is problematic with Bumblebee; but I don’t know much about Prime, someone else might correct me.

1 Like

Heh, it has 9 years olready so yeah, it’s old game, at lest the first part, but I get you. Baldur’s Gate, Icewind Dale, Morrowind, those are oldies that beat any new titles out there. However 9 year old game should have no troubles to run in 4 year old laptop, even cheap one, so I was surprised it wasn’t so smooth in middle quality settings. Now I understand that despite having nvidia-bumblebee driver, it wasn’t using nvidia automatically.

EDIT: When I try to enable bumblebee I get:
sudo systemctl enable bumblebeed.service
Failed to execute operation: Waiting time overdue (raw translation)

What now? I have all packages on the list you posted… and right driver. I’m puzzled.

Hm… I installed steam through playonlinux so my path is:
~/PlayOnLinux’s virtual drives/Steam/drive_c/Program Files/Steam/Steam.exe

Here are the issues: should I in this case use playonlinux instead of wine? Also, name of the playonlinux folder has spaces so that’s problem and command should have ‘’?

Tried: primusrun playonlinux '~/PlayOnLinux’s virtual drives/Steam/drive_c/Program Files/Steam/Steam.exe’
or the same as above but with wine, with ’ or without it, but nothing happens.

I will run down again what I know and what it’s needed to do in case of hybrid graphics.

I’m creating a tutorial for my self education purpose and for my site (for not too technical newbies obviously), but at the moment I’m trying to sort it all out. Aside what I learned during in this thread (thanks all you guys for great help!) I have some unexpected issues. I added this non-tutorial pieces and asks for help in bold font. (will delete or edit it later, if I find solution)

Please, pitch in if you see something incorrect or that needs explaining or elaborating, but bear in mind that too much not crucial info causes information overload so I intend it to keep it simple, even simplified (hence the term “nvidia mode” instead primus). In time I might edit it to more polished version. Thanks for all your help. Maybe someone who have English as native language will rewrite it for more correct version (for other site possibly?). Anyway, here is how I see it now.

RUNNING HYBRID GPU on Manjaro - TUTORIAL FOR NEWBIES

Everyone who possess a processor from intel such as i3, i5, i7 (or possibly others) who have integrated graphic built in and dedicated nvidia card (very popular setting on many laptops) are in fact having hybrid GPU which needs special handling. In such case we need bumblebee drivers that allow for switching from intel to nvidia mode when running games (doesn’t happen automatically thou, it needs to be set manually) while on daily basis using intel GPU for less power consumption.

For causal system use free/open bumblebee nvidia driver can be used (good performance, less overall problems): video-hybrid-intel-nouveau-bumblebee

If someone wants to run games in manjaro, it’s better however to use proprietary drivers like: video-hybrid-intel-nvidia-bumblebee or video-hybrid-intel-nvidia-340xx-bumblebee (which one depends on your card, but most safe way is to allow mhwd choose the best non free driver for you) who allow for better performance in games when switching to nvidia mode (again, it has to be set, because it’s not activated automatically). You can still choose to stay on free driver and run nvidia mode thou. Note that older games may also run relatively well on intel mode (default for the system - you don’t need to do anything to set it) and possibly with less issues then with nvidia giving slower performance but less issues, so it’s up to you to choose in hybrid set up which card is best at the moment.

Below is the list of steps needed to set up correctly proprietary drivers and run games or programs using nvidia gpu.

1 CHECK YOUR GPU.
It can be done in many ways, you can use for example:

inxi -G

It should show something like this:

Graphics:  Card-1: Intel 3rd Gen Core processor Graphics Controller
           Card-2: NVIDIA GF108M [GeForce GT 635M]
           Display Server: X.Org 1.17.4 driver: intel Resolution: 1600x900@60.00hz
           GLX Renderer: Mesa DRI Intel Ivybridge Mobile
           GLX Version: 3.0 Mesa 11.2.2

If there are two cards (intel and nvidia) like in example above and want to play games then proceed further.

2. DRIVERS/PACKAGES FOR PROPRIETARY DRIVERS
Check if you have on the system those drivers and packages, if not, install them:

a) driver: video-hybrid-intel-nvidia-bumblebee or video-hybrid-intel-nvidia-340xx-bumblebee
In terminal:

mhwd -li

It will show currently installed and used driver and the input will be like this:

Installed PCI configs:
--------------------------------------------------------------------------------
NAME                                           VERSION       FREEDRIVER   TYPE
--------------------------------------------------------------------------------
video-hybrid-intel-nvidia-bumblebee           2016.02.05     false         PCI
network-broadcom-wl                           2015.12.13     true          PCI

If you don’t use any of the proprietary drivers showed above run command:

sudo mhwd -a pci nonfree 0300 -f

and then reboot

It will install automatically the best non free drivers for your computer. Check then again using: mhwd -li if you switched to video-hybrid-intel-nvidia-bumblebee or video-hybrid-intel-nvidia-340xx-bumblebee

if you want to switch again to free drivers use command:

sudo mhwd -a pci free 0300 -f

and then reboot

You can also use gui: manjaro settings->hardware detection

b) packages:

  • xf86-video-intel
  • bumblebee
  • mesa
  • lib32-mesa
  • nvidia or nvidia-340xx - depends on kernel version, so for kernel 4.4 package name will be: linux44-nvidia or linux44-nvidia-340xx
  • nvidia-utils or nvidia-340xx-utils - depends on the chosen bumblebee driver
  • lib32-nvidia-utlis or lib32-nvidia-340xx-utils- match the version of 64bit package!
  • primus
  • lib32-primus
  • virtualgl (optional)
  • lib32-virtualgl (optional)
  • mesa-demos (optional)
  • lib32-mesa-demos (optional)
    multilib must be enabled, in manjaro it’s done by default, in arch it may have to be done manually:
    https://wiki.archlinux.org/index.php/Multilib

All 32 version are needed on 64bit systems because Steam alone is 32bit application.
Aside optional ones, they should already be in manjaro system, if not, install them.

If you want to use nvidia mode (primusrun) using free drivers read:
https://wiki.archlinux.org/index.php/PRIME

3. ADDING BUMBLEBEE TO YOUR REGULAR USER GROUP

sudo gpasswd -a user bumblebee

where you should replace ‘user’ with your username

4. ENABLING BUBLEBEE DEAMON IN SYSTEMD

sudo systemctl enable bumblebeed

then reboot

5. CHECKING IF EVERYTHING IS PROPERLY INSTALLED AND YOU CAN USE NVIDIA CARD IN YOUR SYSTEM

For overall system test if everything is installed correctly and you can enable nvidia mode (primusrun) run command:

primusrun glxgears -info

A windows opens with running wheels, this alone means that bublebee in primusrunmode works.
In terminal: right away after the command it should show nvidia card like for example (scroll up, list of GL_EXTENSIONS is long…):

    GL_RENDERER   = GeForce GT 635M/PCIe/SSE2
    GL_VERSION    = 4.5.0 NVIDIA 364.19
    GL_VENDOR     = NVIDIA Corporation
    GL_EXTENSIONS = [...]

It will open a window with graphic (turning wheels) and place frame output into terminal infinitely (needs to be manually stopped), like for example:

301 frames in 5.0 seconds = 60.085 FPS
301 frames in 5.0 seconds = 60.087 FPS
301 frames in 5.0 seconds = 60.086 FPS
301 frames in 5.0 seconds = 60.089 FPS
301 frames in 5.0 seconds = 60.085 FPS
301 frames in 5.0 seconds = 60.087 FPS
301 frames in 5.0 seconds = 60.085 FPS

You can also check nvidia in vblank_mode=0 (whatever it is, please, help me to explain it!)

vblank_mode=0 primusrun glxgears

Output will look like this (not sure if that’s entirely correct in my case :P)

ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
6971 frames in 5.0 seconds = 1394.179 FPS
8274 frames in 5.0 seconds = 1654.666 FPS
8969 frames in 5.0 seconds = 1793.730 FPS
10483 frames in 5.0 seconds = 2096.447 FPS
11838 frames in 5.0 seconds = 2367.515 FPS
11186 frames in 5.0 seconds = 2237.073 FPS
10989 frames in 5.0 seconds = 2197.792 FPS

5. RUNNING PROGRAM IN NVIDIA MODE

a) For linux steam or any other program/game (replace ‘steam’ in example below with the proper name):

primusrun steam

IMPORTANT: Steam in 64bit arch systems most likely will have a bug, because libraries that come with steam don’t catch with system versions causing error which prevents program from startup. When running Steam in terminal bug looks like this:

        Running Steam on manjarolinux 16.06-rc2 64-bit
        STEAM_RUNTIME is enabled automatically
        Installing breakpad exception handler for appid(steam)/version(1461972496)
        libGL error: unable to load driver: i965_dri.so
        libGL error: driver pointer missing
        libGL error: failed to load driver: i965
        libGL error: unable to load driver: swrast_dri.so
        libGL error: failed to load driver: swrast

There is a temporal workaround to this on arch wiki:

Run this command to delete the runtime libraries known to cause issues on Arch Linux:

find ~/.steam/root/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" -o -name "libgpg-error.so*" \) -print -delete

Note: Steam will frequently re-install these runtime libraries when Steam is updated, so until the issue is resolved: whenever Steam updates, you should exit, remove the libraries, and restart it again.

There are also other solutions but for that please see arch wiki article:

https://wiki.archlinux.org/index.php/Steam/Troubleshooting#Steam_runtime_issues

b) in windows steam installed through wine directly:
cd to a folder with your chosen aplication.exe and:

primusrun wine application.exe

or you can give a path:

On x86:

primusrun wine "~/.wine/drive_c/Program Files/Steam/Steam.exe"

On x86_64:

primusrun wine "~/.wine/drive_c/Program Files (x86)/Steam/Steam.exe"

Please check your install path and modify above command. Some suggest using such command (again, check a path to your program.exe):

primusrun wine "C:\program files\programname\programname.exe"

where you replace programname with the proper name of your program or a game.

Also, you may have a Steam shortcut on your desktop. If so, you can right click on that shortcut, select Properties, and modify the command to include primusrun. You should insert it just before the wine command, with a space to either side of primusrun.
See: http://askubuntu.com/questions/490184/how-to-run-primusrun-command-with-steam-for-wndows-games-on-wine

c) in windows steam installed through playonlinux, the easiest way is to issue command:

primusrun playonlinux

It will open playonlinux window where you can start Steam. You may also try to find the correct path to Steam on your system and open it directly via command.

IMPORTANT: To check if Steam is running in nvidia mode, choose in Steam’s menu Help->System info, scroll down and see GPU driver. If it says nvidia then you’re successfully running in nvidia mode, if it says intel, then you still use intel gpu.

d) instead running the whole steam in nvidia mode, we can add only selected games by adding command to game properties:
Navigate to the Library page, right click on the selected game, click
Properties, and Set Launch Options and add there: primusrun

Note: it’s not working for me, so this needs to be researched more.

Suggested reading:
https://wiki.archlinux.org/index.php/Bumblebee
https://wiki.archlinux.org/index.php/Steam
https://wiki.archlinux.org/index.php/Steam/Troubleshooting

1 Like

This is for running Steam in Linux

Steam for Linux (and most games downloaded from Steam) are 32-bit.

.

$ STEAM_RUNTIME=0 steam

However, if you are missing any libraries Steam makes use of, this will fail to launch properly. An easy way to find the missing libraries is to run the following commands:

$ cd ~/.local/share/Steam/ubuntu12_32
$ LD_LIBRARY_PATH=".:${LD_LIBRARY_PATH}" ldd $(file |sed '/ELF/!d;s/:.//g’)|grep ‘not found’|sort|uniq

Note: The libraries will have to be 32-bit, which means you may have to download some from the AUR if on x86_64, such as NetworkManager.

.

For individual games - SET LAUNCH OPTIONS… button and specify primusrun %command% for the command line.

.

For running steam in wine use the “primusrun wine /path/to/wine/steam.exe”

@Snudl,

Thanks for the corrections in my confusions on this matter… it is starting to make some sense to me now :slight_smile: lol I think… :open_mouth:

A big Mahalo to everyone else for the input !

I think manjaro settings manager will take care of it so the systemctl command was just in case … use

lsmod

to make sure it is enabled

@cscs I did read that article on arch wiki that you are quoting, but it’s not helpful. when I use:

$ cd ~/.local/share/Steam/ubuntu12_32
$ LD_LIBRARY_PATH=".:${LD_LIBRARY_PATH}" ldd $(file |sed '/ELF/!d;s/:.//g')|grep 'not found'|sort|uniq

I get:

Usage: file [-bcEhikLlNnprsvzZ0] [--apple] [--extension] [--mime-encoding] [--mime-type]
            [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
       file -C [-m magicfiles]
       file [--help]
ldd: lacking file elements 

It’s just gibberish for me and looks like a fail.

As for "For running steam in wine use the "primusrun /path/to/wine/steam.exe"
my path is ~PlayOnLinux’s virtual drives/Steam/drive_c/Program Files/Steam/Steam.exe
so according to this I should use:

$ primusrun ~PlayOnLinux's virtual drives/Steam/drive_c/Program Files/Steam/Steam.exe

But it doesn’t work either. Since there are spaces, I used:
primusrun "~/PlayOnLinux’s virtual drives/Steam/drive_c/Program Files/Steam/Steam.exe"
but it returned:
Cannot open assembly ‘/home/myusername/PlayOnLinux’s virtual drives/Steam/drive_c/Program Files/Steam/Steam.exe’: File does not contain a valid CIL image.
although I do see Steam.exe in this location.

So basically arch wiki is useless. Not only it fails to explain in a noob friendly manner the topic, it also shows commands that doesn’t work (at least in manjaro).

When I use lsmod, I see a big list (in chaotic order…) but nothing resembling bumblebee.

oops - i fixed the command - you are wanting to use primusrun to use wine to open steam :wink:

you can use

lsmod | grep -iC 3 "bumblebee"

to sort

This does nothing. Just skips to another line ready for the next command. Does it mean there is no bumblebee process? If so there is still issue with enabling it.
Before you posted it should be done by:

systemctl enable bumblebeed.service

But it fails to do that. On Sparty’s forum I found that he suggests to use:

systemctl enable bumblebeed

This time terminal doesn’t throw out timeout error but just skips to the next line so I assumed it went fine. Another prove that it works is that I was finally able to run steam with “primusrun steam” and in system info it really showed me nvidia card this time. @cscs I suspect you posted the command from arch wiki, but systemd enabling commands differ in manjaro and usually where in arch there is “processname.service” in manjaro it’s only “processname” so I believe Sparty’s version to be correct for manjaro.

I still have no slightest idea how to run steam in primusrun mode, both linux and windows one.

When trying to use the second command it just throws a bash error, not mentioning that in my case the path is incorrect.

Manjaro wiki is still unavailable so… No help from this side :frowning:

To be able to run linux steam, this arch wiki info came through:

Run this command to delete the runtime libraries known to cause issues on Arch Linux:

find ~/.steam/root/ ( -name “libgcc_s.so*” -o -name “libstdc++.so*” -o -name “libxcb.so*” -o -name “libgpg-error.so*” ) -print -delete

Note: Steam will frequently re-install these runtime libraries when Steam is updated, so until the issue is resolved: whenever Steam updates, you should exit, remove the libraries, and restart it again.

It’s a workaround, not solution but it will do for now.

OK, I just updated my tutorial entry above. If someone is familiar with the topic, please read through and let me know if something can be corrected, added, cleared.

This workaround is giving me a syntax error:

bash: erro de sintaxe próximo dotoken’ não esperado ('

Did anyone else got the same error?

Maybe something got corrupted (a space bar) during copy/pase. Check out the original article with the fix and let me know if commands copied from there worked this time:

https://wiki.archlinux.org/index.php/Steam/Troubleshooting#Steam_runtime_issues

I also edited this command and maybe this time it went better.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

Forum kindly sponsored by Bytemark