Skip to content
Samsagax edited this page Dec 12, 2011 · 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 named bumblebee-enablecard and other unremoved files (a seperate script)
  • uninstall previous Bumblebee versions
  • display driver installation (currently nvidia, nouveau as option for the future)
  • check for dependencies, but do not install these: virtualgl; nvidia/nouveau driver
  • 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 -d)
  • 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:
  • ConnectedMonitor "DFP" works fine for nvidia driver as VirtualGL is faking a CRT screen if needed. Nouvea driver doesn't need this option.
  • BusID setting, should be the PCI Bus ID of the nVidia card.

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)
  • VGL_COMPRESS sets the compression method for framestransport possible values: yuv, jpeg, proxy (VGL default), xv (BB default), rgb
  • VGL_DISPLAY sets the X display to be used (this display is started by Bumblebee)
  • Bumblebee-specific stuff:
  • ECO_MODE - if not connected to a power supply, new programs do not use the nvidia card when ECO_MODE is set to 1.

Daemon

  • should start X server on request
    • Use a single X server for now, see issue 8
  • Communication is made through a named pipe, current commands are "start" (start X), other commands cause the daemon to check whether the X server needs to be shut down
  • enable/disable the card (currently it loads/unloads the drivers by default), the acpi-framework is able to handle the card's power with acpi_call module but is not enabled by default due to stability issues.
  • load/ unload the drivers and unload any conflicting drivers.
  • automatically shutdown X when unused for configurable seconds? (not implemented, optirun notifies the daemon when done)
  • initscript starts the bumblebee daemon which is located in /usr/local/sbin/bumblebee.
  • Options for bumblebee:
    • --version - prints the version on the first line. License and credits on the next lines
    • -d - this option is passed by the initscript to instruct starting a daemon
    • --help shows the possible options
    • --status shows whether the daemon is started or not (used in the initscript). Might be removed in the future.
    • If no options are passed, a informational message should be printed. Probably the possible options

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/) The version will be stored in the daemon file.

  • /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.
  • Nvidia kernel module and binary drivers. They should be packed in a way that don't interfere with the open LibGL needed to enable 3D acceleration on the intel card (Gallium 3D render engine). This will eventually be optional as the Nouveau driver works on Gallium 3D engine and will be set as default. In such case the packaging will be less painful.
  • Bumblebee (yes, us!) can be packed easily using the configurable installer (See About the installer and packaging)
Clone this wiki locally