LucidJockeyUbiquityIntegration

Summary

Integrate Jockey into Ubiquity so that users have an obvious way of obtaining missing drivers as part of the Ubuntu installation process.

Release Note

The desktop CD installer now integrates the functionality of the Hardware Drivers tool (jockey) to provide users with a quick means of installing additionally needed drivers.

Rationale

Users are trying to set up a netbook but only have wireless connectivity. If they don't install bcmwl prior to running Ubiquity, they aren't able to after install due to the apt-cache not including the CD or USB key they installed from and Jockey thus not offering the tool.

User stories

  • Sam has a Broadcom wireless card in his computer, but is not plugged into a wired network. When Sam gets to the drivers page, he sees drivers for his wireless card, but not the b43 driver as he cannot download the firmware.
  • Max has a desktop with an nvidia card in it. During installation ubiquity offers to install the nvidia driver for him. When Max reboots the computer, X fails to start due to a bug in the nvidia driver, but BulletProofX allows Bob to select a different driver.
  • Trixie has a Broadcom wireless card in her computer, but is also connected to a wired network via her ethernet card. When she starts the installer, she is asked if she wants to install an appropriate driver so she can use her wireless card.

Assumptions

BulletProofX should be expected to work as a fallback in cases where a different graphics driver (nvidia, for example) is installed by jockey and does not function.

Design

A new page will be added to the installer workflow for additional driver selection. This page will only be presented if there are possible additional drivers to install, much like migration-assistant is only visible if there are users on other operating systems to import data from.

This page will be constructed using the existing jockey UI code by instantiating jockey.ui. The UI to remove drivers will be removed as it's not relevant here.

Implementation

Jockey upstream

  • Jockey should run apt-get update if the package cache is out of date.
  • Jockey needs to be modified to only offer driver installations that require network access to download firmware if there is an active network connection. This can be accomplished using HTTP HEAD.
  • The ubiquity hook for jockey needs to be modified to not assume that jockey has already been run.

Preseeding

As OEMs will likely use this functionality, a means to automate this step via preseeding is necessary. This will be handled with a multiselect debconf question that uses the jockey keys (kmod:b43) as possible values. This question should accept the value "recommended", which will use recommended drivers automatically. The "recommended" option can be used in combination with any number of additional options to install all of the recommended drivers, plus the additional drivers specified (if available).

Preseeding needs to be respected above filtering. That is, if a driver is preseeded, but not shown in ubiquity, it should still be installed if available.

Translation

As ubiquity is translated into more languages than are currently installed on the live CD, if we use any of jockey's translations, we'll need to import them into the debconf templates for ubiquity. This is already done for common GTK labels, and should serve as a suitable starting point.

Test/Demo Plan

Automated testing will be accomplished using the existing daily installer testing (http://people.canonical.com/~scott/daily-installer/), or a modification thereof.

A test case will be added to the CD tracker for hardware driver installation in ubiquity.

BoF agenda and discussion

Problem

Users are trying to set up a netbook but only have wireless connectivity. If they don't install bcmwl prior to running Ubiquity, they aren't able to after install due to the apt-cache not including the CD or USB key they installed from and Jockey thus not offering the tool.

  • Mitigation: Jockey to check for available packages, and if not, run apt-get update
  • Jockey to check network connectivity at startup
  • Replace Ubiquity hook in Jockey with something that doesn't rely on Jockey having been run in the live environment
  • jockey-text -l lists available drivers in a parseable form:

    $ jockey-text -l
    firmware:b43 - Broadcom B43 wireless driver (Frei, Deaktiviert, Nicht benutzt)
    kmod:wl - Broadcom STA wireless driver (Proprietär, Deaktiviert, Nicht benutzt)
    xorg:nvidia-185 - NVIDIA accelerated graphics driver (Proprietär, Deaktiviert, Nicht benutzt)
    xorg:fglrx - ATI/AMD proprietary FGLRX graphics driver (Proprietär, Deaktiviert, Nicht benutzt)
  • Can't just have Ubiquity install a list of packages - Jockey does more than that, such as downloading firmware, munging xorg.conf, etc.
  • Jockey should only offer b43 if the network is enabled and it can download the firmware (HTTP HEAD)
  • New page in installer workflow, shown only if necessary (similar to migration-assistant)
    • Strawman: interface similar to existing Jockey interface, but without option to remove drivers
    • Needs confirmation from design team
  • Use Jockey library to instantiate UI (import jockey.ui)
  • Make sure to consider preseeding
    • Multiselect debconf question using jockey keys (kmod:b43) as possible values (maybe just "b43" rather than the driver class as well?)
    • Option to use recommended drivers automatically; this concept is already in Jockey
    • Permit specifying both of these simultaneously, e.g. "all recommended drivers, plus sta" (which would only use sta if available)
  • xorg drivers (fglrx/nvidia) are questionable, because you haven't tested them while running the live CD
    • Rely on bullet-proof X?
      • filter out xorg:fglrx
    • Respect preseeding above filtering.
    • If we use any of jockey's translations, we'll need to import them into ubiquity.


CategorySpec

FoundationsTeam/Specs/LucidJockeyUbiquityIntegration (last edited 2009-12-01 15:20:55 by eth0)