-
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' technology is called "Optimus", Dave Airlie' work for supporting Optimus hardware is named "PRIME". All of these names come from the Transformers movie. 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".
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 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. Read the README for installation instructions or check distribution specific documentation: Arch Linux, Ubuntu.