-
Notifications
You must be signed in to change notification settings - Fork 142
Work in progress.
Developers: please add all you want and consider relevant, please use references whenever possible.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Try running
optirun -b none nvidia-settings -c :8
Quite probably. Have a look at Multi monitor setup.
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.
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.
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.
See Supported Drivers.
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 toBumblebee-old
- We moved
bumblebeed
repository toBumblebee
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.
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
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
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).
Because glxgears
is not a benchmarking tool, and you’re definitively seeing the PCIe bottlenecking. Try a proper benchmark instead.