-
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.
Nvidia's technology is called "Optimus". Dave Airlie's work for supporting Optimus hardware is named (most likely as a play on words) "PRIME"; Within the fictional universe ascribed by the Transformers franchise, "Prime" is a title bestowed upon the leader of the Autobots, and "Optimus Prime" is one such character.
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 fork project, "Ironhide" is also the name of a Transformers character.
I'm confused about so many projects (MrMEEE/Bumblebee, Ironhide, TBP/Bumblebee). Which one should I install?
Based on Lekensteyn's answer here, for a longer version see History of the project
In the beginning, there was nothing. Nvidia Optimus users cried for a solution. Then came Martin Juhl with a workaround which he named Prime-NG. Since it was not even remotely close to a real solution like Prime, he renamed it to Bumblebee. The workaround (he called it a "solution", but we prefer to speak of a
"workaround") was announced on this mailing list and varying success had been reported. It caught many attention after the famous rm -rf /usr
bug which
has been spread on Reddit.
An online database has been added to it, containing user-submitted configurations and later ACPI calls had been introduced. Occasionally, users contributed to the code and finally ArchangeGabriel, Lekensteyn and Samsagax decided that a team would work better than a single user repository as subteams could be created for each repository.
We decided to rewrite the old MrMEEE/bumblebee codebase which contained some design flaws and got rid of the online database. This allowed for offline and more secure installation. MrMEEE decided not to take part in this project and instead removed support for distributions other than Ubuntu and continued with the name Ironhide. We continued with the name "Bumblebee", and use TBP/Bumblebee (TBP="The Bumblebee Project") to distinguish from the original MrMEEE/bumblebee. Unfortunately, this caused a lot people to believe that Bumblebee was dead and that Ironhide is better or even "deprecates" TBP/Bumblebee. Although the configuration database is quite horrible (it downloads unconfirmed scripts which can contain even malicious or incomplete code), it sometimes just "works". The Bumblebee Project team decided not to supply with such a feature by default because we're focused on stability.
While Ironhide is work from one man (Martin) and receives no code review from other developers, the Bumblebee Project team has several developers with varying distributions.
With help of Thulinma who continued with Samsagax' daemon code, Bumblebee received a development boost which yielded a C daemon+client with better communication possiblities, a more reliable way to detect the server. acpi_call has been dropped as it does not play nicely with suspend. bbswitch and vga_switcheroo has been added.
Hopefully you now get a better overview of TBP/Bumblebee and the difference 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's likely to be fully rewritten in the C programming language soon.
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 is used to copy frames to the visible display which runs on the integrated Intel GPU.
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.
Some distributions have their own Bumblebee packages on their repositories, this method is the most recommended. Read the README for installation instructions or check distribution specific documentation: Arch Linux, Ubuntu, Debian and Mandriva.
Bumblebee 3.0 automatically disables your card if it's unused. There is no need for additional configuration.
In short, no. A few laptops came with a BIOS option to do so, if that's the case of yours, then you can use it and not install Bumblebee.
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 is a work in progress on this matter involving bumblebee-ui
for convenience and stability.
Try running
optirun nvidia-settings -c :8
We are working on this highly requested feature. It depends highly on the laptop's hard wire. For the moment just trial and error.
In fact, VirtualGL, our current backend for copying frames from the nVidia card to the screen, is dropping frame over 60 fps to avoid useless computation. Work is in progress to at least give some options for allowing better performances through VirtualGL, and in the long term to replace VirtualGL by a better system.
You will probably not be able to check full performances from the nVidia card, check the question just above.
glxspheres
can give you a first impression, personally (ArchangeGabriel), I like to use the Flight of the Navigator demo by Mozilla to make people understand why they need to have their nVidia card working.
For a more relevant test, consider using a program that requires high performances, so that VirtualGL will try to give its best.
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 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 accept donations for now.
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. Try optirun glxspheres
instead. For improving the FPS, you could try other transport methods for now,
e.g. optirun -c yuv glxspheres
. Consult the manual page of optirun
for all
options. If you get an error mumbling about RGB, pbuffers or NV-GLX, you have
likely messed up the installation of the proprietary driver (i.e. nvidia
).