I use an Asus laptop with Optimus. The VGA output is wired to the Intel card, while the HDMI output is wired to the Nvidia card.

I'm not using PRIME or nouveau, but prefer a bumblebee setup (the only real use of my Nvidia card is to run games on steam, really). PRIME gave really weird bugs with regards to mouse cursor screen-lock etc, and nouveau makes my nvidia's 'performance' on par with that of my Intel card, which defeats the purpose.

On bumblebee, I can get the external HDMI monitor working by using intel-virtual-output. the monitor then appears without issue in xrandr and can be used as a clone/extended screen using the normal xrandr tools. However this requires that I comment out the "UseDisplayDevice" option in /etc/bumblebee/xorg.conf.nvidia

The problem with doing that is that when I don't have a monitor connected to HDMI (whenever I'm away from the office), primusrun will complain that no monitor is connected, and I have to have the following uncommented line

Option "UseDisplayDevice" "none"

in the device section of /etc/bumblebee/xorg.conf.nvidia

This setup is the result of tweaking and googling for a while, and the only 'problem' with it is the repeated need to edit the nvidia xorg.conf depending on whether I have a monitor or not. Is there any way to get around that?

1 Answer 1


I had a similar problem on my Optimus Laptop -- I have an HDMI monitor working via intel-virtual-output, but when it was disconnected, optirun failed.

What seems to work for me is the following /etc/bumblebee/xorg.conf.nvidia (I use the proprietary Nvidia driver):

Section "ServerLayout"
    Identifier  "Layout0"
    #Option      "AutoAddDevices" "false"
    Option      "AutoAddGPU" "false"

Section "Device"
    Identifier  "DiscreteNvidia"
    Driver      "nvidia"
    VendorName  "NVIDIA Corporation"

#   If the X server does not automatically detect your VGA device,
#   you can manually set it here.
#   To get the BusID prop, run `lspci | egrep 'VGA|3D'` and input the data
#   as you see in the commented example.
#   This Setting may be needed in some platforms with more than one
#   nvidia card, which may confuse the proprietary driver (e.g.,
#   trying to take ownership of the wrong device). Also needed on Ubuntu 13.04.
#   BusID "PCI:01:00:0"

#   Setting ProbeAllGpus to false prevents the new proprietary driver
#   instance spawned to try to control the integrated graphics card,
#   which is already being managed outside bumblebee.
#   This option doesn't hurt and it is required on platforms running
#   more than one nvidia graphics card with the proprietary driver.
#   (E.g. Macbook Pro pre-2010 with nVidia 9400M + 9600M GT).
#   If this option is not set, the new Xorg may blacken the screen and
#   render it unusable (unless you have some way to run killall Xorg).
    Option "ProbeAllGpus" "false"

    Option "NoLogo" "true"
    #Option "UseEDID" "false"
    #Option "UseDisplayDevice" "none"
    Option "AllowEmptyInitialConfiguration"
    #BusID "PCI:1:0:0"

The important bit is the line

Option "AllowEmptyInitialConfiguration"

After adding it, both single and multi-monitor configurations started working automatically, though I ran into problems where gdm.service would hang when started at the same time as bumblebeed.service—I'm not sure if this is related, but it probably is.

  • 1
    Thanks, this worked immediately (in the sense that primusrun would run even when monitor was not connected) but a combination of IRL events meant I had no access to a HDMI monitor to test its functionality till today. Answer accepted!
    – Ng Oon-Ee
    Sep 14, 2016 at 0:55

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .