Bumblebee Overview

Lekensteyn edited this page Jan 19, 2012 · 16 revisions

This page tries to establish a design for Bumblebee. It's aimed at developers. Developers are encouraged to discuss the points below.

Installation

The installation is distinct from configuration because it has to be executed only once.

  • clean the mess created by MrMEEE/Bumblebee and MrMEEE/IronHide, namely bumblebee-enablecard and other unremoved files (is it our task?)
  • uninstall previous Bumblebee versions, make sure the card is on
  • dependencies: virtualgl, nouveau or nvidia, bbswitch
  • to avoid breaking the Intel display, the nvidia libraries need to be installed in a way they don't overwrite libGL from mesa.
  • setup initscript that starts the daemon (bumblebee --daemon)
  • add a group which is allowed to use bumblebee and instruct users to add themselves to it (group: bumblebee)

Installation configuration

  • Xorg settings, a minimum file is provided.
  • When using the proprietary nVidia driver, it might be necessary to change ConnectedMonitor in xorg.conf.nvidia. For machines on which this setting can be detected, it's not mandatory to set a correct value. However, there exist machines who cannot detect it on their own and therefore needs this setting to be set to DFP or CRT to make it work.

Runtime configuration

Most defaults are set to sane values known to work but they can be tweaked for better performance.

  • VGL preferences (see also User's Guide for VirtualGL: 19 Advanced configuration)
    • VglTransport sets the compression method for framestransport possible values: yuv, jpeg, proxy (VGL default), xv, rgb
    • The setting VirtualDisplay selects the X display to be used (this display is started by Bumblebee)

Daemon

  • should start X server on request
    • Use a single X server for now
  • communication is done through a socket file
  • switches the power state of the discrete video card
  • load/ unload the drivers and unload any conflicting drivers.
  • automatically shutdown X when unused for configurable seconds?

Configuration

  • /etc/bumblebee was a file in 1.7.10 and before (PPA 2.2.0 and before), containing the version number like:

    Bumblebee Version: 2.2.0 Worst. Decision. Ever. From now on, we'll create a directory for storing configuration files. (/etc/bumblebee/, this can be changed at compile time) The version will be stored in the binaries.

  • /etc/bumblebee/xorg.conf.$DRIVER is used when starting X

Packaging

This should be distribution specific but there is some basic dependencies that should be met:

  • VirtualGL is the key component. It can be found in binary packages for different distributions (deb and rpm) and can be compiled. It should be packed separately and set as a dependency of bumblebee.
  • Driver modules and libraries.
    • Nvidia kernel module and binary drivers. They should be packed in a way that don't interfere with the Mesa graphics library (libGL.so) needed to enable 3D acceleration on the intel card.
    • Nouveau driver works without additional configuration needed.
  • A standard GNU build system is used, see Install-and-usage.