Skip to content
Bruno Pagani edited this page May 19, 2016 · 34 revisions

Work in progress.

Developers: please add all you want and consider relevant, please use references whenever possible.

What is Bumblebee?

Bumblebee is a effort to make Nvidia Optimus enabled laptops work in GNU/Linux systems. Such feature involves two graphics cards with two different power consumption profiles plugged in a layered way sharing a single framebuffer.

Where did the name "Bumblebee" come from?

There is more to it than meets the eye. Nvidia's technology is called "Optimus". Dave Airlie's work for supporting Optimus hardware is named "PRIME", which, in all likelihood, was a clever play on words; Within the settings of the fictional Transformers universe, the name "Prime" is a title bestowed upon the leader of the Autobots, and "Optimus Prime" was one such character. Second, from a technological perspective, it forms the basis for an apt analogy; For, like the Transformers characters, whom are "robots in disguise" (typically masquerading themselves as ordinary mechanical objects until a transformation into their alternative form is needed), a laptop with Optimus technology, while visually unsuspecting from the outside, is actually capable of greatly transforming its graphics performance and power draw characteristics on a situational basis.

Martin Juhl initially named the idea for this project "PRIME-NG", but since it was by no means a real solution nor better idea for PRIME, it was renamed to "Bumblebee"; which just so happens to be a character name from the Transformers lore. Likewise, Martin's eventual fork project, "Ironhide", is also the name of a Transformers character, and thus further continued the association.

I'm confused about so many projects (MrMEEE/Bumblebee, Ironhide, TBP/Bumblebee). Which one should I install?

See the History of the project page, which hopefully will give you a solid overview of TBP/Bumblebee and its differences with MrMEEE's projects.

There are so many repositories in the project, what are they?

The Bumblebee Project has many repositories holding different parts of the entire collection of software used to make it work. Some parts are not used anymore and some new may come up. They are intended to add different functionality.

Bumblebee holds the core application server/client (written in C from version 3.0) and is the one needed for the basic functionality of Bumblebee, GPU offloading on-demand.

bbswitch is the repository containing the kernel module used for switching the card ON/OFF.

bumblebee-{ppa,AUR} hold the scripts needed for making packages for the bumblebee PPA's in Launchpad and PKGBUILDs for ArchLinux AUR.

bumblebee-ui contains the first draft of our future UI for bumblebee. It was supposed to be fully rewritten at some point, but that never happened. Instead, the repo was deleted to stop people keeping opening new issues against what become an useless and rotten code.

Bumblebee-old holds the previous version of Bumblebee (<=2.4.1). Since we rewritten it entirely in C, all issues were closed (when they no longer apply to the new version) and the relevant ones are moved to Bumblebee.

acpi-www was a draft for a set of tools aiming to help us gather and analyse ACPI datas. Since we don't need it anymore, we just left it fall, and we're keeping files in case we need to do something similar in the future.

How it works?

The Bumblebee server disables the discrete video card if no client is detected (if power management is enabled which is the default setting). This is done by keeping track of programs that request Bumblebee to run themselves on the discrete nvidia card. On such requests, a X server is started which makes use of the nvidia card. Because the frames cannot directly be displayed on the display due to the Optimus design, VirtualGL was used to copy frames to the visible display which runs on the integrated Intel GPU. It has now been replaced by a more adapted solutions, primus.

I have a laptop with Nvidia card and an integrated graphics card, how can Bumblebee help me?

By disabling the nvidia card, power is saved. This improves battery life. If you need more graphical performance, Bumblebee can run the program using the Nvidia card.

How to know if my graphics card is supported?

Bumblebee has two parts: power management and the ability to run programs using the discrete card. The first feature is supported with bbswitch which should be able to support all Optimus models. The ability to use the nvidia card depends on the driver: open-source nouveau and proprietary nvidia.

How do I install Bumblebee?

The installation of the Bumblebee core is easy, especially with the nouveau driver. If you want to use the proprietary nvidia driver, it is going to be more difficult because certain nvidia libraries must be moved to avoid conflicts with the Mesa libraries for 3D acceleration.

Many distributions have packages Bumblebee already, see Install-and-usage.

How can I disable my card?

Bumblebee 3.0 automatically disables your card if it's unused. There is no need for additional configuration.

If you are using bbswitch (and not vga-switcheroo, this covers 99% of all cases), you can check whether your card is on or not. OFF is displayed if the card is disabled and ON if it is enabled:

$ cat /proc/acpi/bbswitch 
0000:01:00.0 OFF

If you get a No such file or directory error, ensure that Bumblebee and bbswitch are properly installed. If modinfo bbswitch shows some details, then you might experience an ACPI bug (in the past, Lenovo laptops were buggy). If you get Module not found, ensure that bbswitch and kernel headers are installed.

Can I use my Nvidia card only? I don't care about power consumption.

While excepted for a few laptop, it has been no for quite a long time, this is not anymore the case. First as said, a few laptops came with a BIOS option to do so, if that is the case of yours, then you can use it and not install Bumblebee. But you also have the option of reverse PRIME now, which is depending on David Airlie’s PRIME. It is compatible with both nouveau and nvidia drivers, depending on whether they actually support your card or not.

Why do I need to launch applications using optirun in a terminal? Isn't there an easier way to do so?

In fact there is a way to launch applications without a terminal. You need to edit your .desktop file of that application. We deliberately don't show you how to do it because if you know, you don't need any more information. If you do it wrong you may break something or cause some annoyances. There was a work in progress on this matter involving bumblebee-ui for convenience and stability, but is has been abandoned.

nvidia-settings doesn't work (it tells me I'm not using the card)?

Try running

optirun -b none nvidia-settings -c :8

Can't use my HDMI output, is it related?

Quite probably. Have a look at Multi monitor setup.

How to check nVidia card performances ? They seems low...

First fact, both primus and VirtualGL, our current and former backends for copying frames from the Nvidia card to the screen, are dropping frames over 60 fps to avoid useless computation. Also, they are costs unavoidable with our solution and that only PRIME can manage to handle. For instance, we are PCIe bottlenecked, which means that the higher the resolution you use, the lower is the FPS cap.

How can I benchmark my nVidia card to compare to the Intel one ?

You will never be able to get full performances from the Nvidia card, check the question just above.

glxspheres can give you a first impression, personally (ArchangeGabriel), I used to like showing the Flight of the Navigator demo by Mozilla to make people understand why they need to have their Nvidia card working. But now any integrated chip run it smoothly.

For a more relevant test, consider using a proper GL benchmark like Unigine ones.

What is bbswitch ?

bbswitch is a kernel module developed by Lekensteyn based on the ACPI knowledge him and ArchangeGabriel acquired. This is the little thing that makes Nvidia card power management working on your laptop.

How to use nouveau instead of nvidia or nvidia instead of nouveau ?

See Supported Drivers.

What configuration options are available ?

See Configuration.

I can’t find a lot of things I was used to find in the Bumblebee repo (issues, commits, branches, ...)

When we started a full rewrite of Bumblebee server and client in the C programming language, we opened a new repository, bumblebeed, to keep code separate. When Bumblebee 3.0, the new version based on bumblebeed, was about to release we did the following things:

  • We closed all issues in the old Bumblebee repository (since most of them became irrelevant/useless), but we made a copy of interesting ones into bumblebeed repository
  • We moved Bumblebee repository to Bumblebee-old
  • We moved bumblebeed repository to Bumblebee

Since, all what you we're use to see is in the Bumblebee-old repo, so that some links may be broken, but in order to have most links pointing to our latest version, we decided to do this change.

How can I suggest ideas or request features ?

You've got several ways to do so:

  • Use #bumblebee-dev channel on Freenode to submit the idea to a developer directly
  • Send a mail to our mailing list (requires you to have a LaunchPad account)
  • Send a mail to one of the developers that will forward it to the rest of the team

How to get accurate and fresh informations ?

You may:

  • check our GitHub pages, repos and wiki
  • subscribe to hybrid.graphics mailing list at launchpad
  • follow us on twitter : @Team_Bumblebee for news only, @Bumblebee_Git to be flooded by commits
  • check our launchpad page (not updated frequently however)
  • join #bumblebee on Freenode to ask for news
  • join #bumblebee-dev to see us brainstorming, developing and such if you have time to waste

How can I make a donation to your organization ?

We don’t and won’t accept donations.

By the way, the paypal account called The Bumblebee Project belongs to Martin Juhl (MrMEEE), which was a former developer of bumblebee (he is now working on his own fork, IronHide).

Why do I get a much lower FPS with optirun glxgears in comparison with just glxgears?

Because glxgears is not a benchmarking tool, and you’re definitively seeing the PCIe bottlenecking. Try a proper benchmark instead.

Why am I capped at 60 FPS when using primus? (optirun -b primus glxspheres)

See https://github.com/amonakov/primus#faq

Clone this wiki locally