Complete the Additional Drivers implementation

Bug #1021733 reported by Mathieu Trudel-Lapierre on 2012-07-06
This bug affects 2 people
Affects Status Importance Assigned to Milestone
software-properties (Ubuntu)
Didier Roche

Bug Description

I've started implementing the design in ; devices can be listed on systems that require binary drivers, and the new tab is there with the basic UI bits.

What's left to be done:
 - Testing, testing, testing.
 - Figure out what is being done wrong that causes the crash in comment #2.
 - Make sure the cases for multiple devices (wifi, graphics) all need custom drivers.
 - Update status text below each device on their status.
 - Use real icons provided by the design team
 - Do not label non-graphics devices (like Broadcom wifi) as "Graphics device: ..."
 - Improve driver description (in particular for nvidia cards)
 - Do not enable "Restart.." button and show "you need to restart..." until you actually make a change

Changed in software-properties (Ubuntu):
status: New → Triaged
importance: Undecided → Medium

Specifically; points 6 and 7 on the design wiki page need to be addressed:

If the changes required a restart, the “Software & Updates” panel is still open, and the “Additional Drivers” tab is still frontmost, the System Settings window should request attention.

If the changes required a restart, but you have since navigated away from the “Additional Drivers” tab or closed System Settings altogether, a parent-less alert box should appear with the title “Additional Drivers”, the “Software & Updates” icon, the text “ Warning /!\ You need to restart the computer to complete the driver changes.”, and “Restart Later” and “Restart Now” buttons (fixing bug 306708).

"Prompting to install additional drivers" is also not done yet.

apt-daemon tends to die sometimes, after multiple install/removes have been done in succession:
Traceback (most recent call last):
  File "/home/mtrudel/Public/software-properties/softwareproperties/gtk/", line 1017, in on_driver_changes_apply
  File "/usr/lib/python3/dist-packages/defer/", line 107, in _deferable
    return func(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/aptdaemon/", line 192, in _convert_dbus_exception
    raise get_native_exception(error)
  File "/usr/lib/python3/dist-packages/aptdaemon/", line 190, in _convert_dbus_exception
    return func(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/aptdaemon/", line 745, in run
  File "/usr/lib/python3/dist-packages/dbus/", line 145, in __call__
  File "/usr/lib/python3/dist-packages/dbus/", line 651, in call_blocking
    message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Message did not receive a reply (timeout by message bus)
It seems that the daemon died.

Definitely something to investigate.

description: updated
Martin Pitt (pitti) wrote :

As for NoReply, there are three common causes:

- aptdaemon crashes in the middle of an operation. Do you get an apport crash report when this happens?

- You call the operation synchronously. This should not be done, call it async and then have aptdaemon call a result callback.

- You keep the aptdaemon d-bus object around for a long time, while aptdaemon timed out regularly (after some minutes of inactivity). However, this actually ought to result in a ServiceNotFound exception, or should even re-activate the daemon through D-BUS.

NB I haven't looked at the source code at all.

Martin Pitt (pitti) wrote :

Note, in ubuntu-drivers-common 0.2.61 I added a simple wrapper tool which pretends that you have an nvidia, fglrx, and broadcom wifi card. Run it like this in the s-p checkout:

 PYTHONPATH=. /usr/share/ubuntu-drivers-common/fake-devices-wrapper ./software-properties-gtk --data-dir=data

For s-p to work with the wrapper you need a tiny patch to s-p:

--- softwareproperties/gtk/ 2012-07-06 20:21:44 +0000
+++ softwareproperties/gtk/ 2012-07-12 14:46:42 +0000
@@ -935,7 +935,7 @@

       name = subprocess.check_output([db_command,
- device_info['syspath'].replace('/sys', '')
+ device_info['syspath'].replace(os.getenv('SYSFS_PATH', '/sys'), '')
       name = " ".join(name.split('\n'))

Martin Pitt (pitti) on 2012-07-12
description: updated
description: updated
Martin Pitt (pitti) wrote :

FYI: You can remove the pci-db/usb-db stuff from s-p-common now and just use the 'vendor' and 'model' fields:

ubuntu-drivers-common (1:0.2.62) quantal; urgency=low

  * debian/control: As the PackageKit apt backend is going away, drop the
    Conflicts to packagekit-backend-aptcc. Instead, recommend
    python3-aptdaemon.pkcompat and update the description to point out that
    the PackageKit API does not work with the aptcc backend.
    (LP: #1023953)
  *, system_driver_packages(): Add 'vendor' and
    'model' fields for the human readable names from pci/usb databases.

 -- Martin Pitt <email address hidden> Fri, 13 Jul 2012 10:41:12 +0200

Didier Roche (didrocks) on 2012-07-17
Changed in software-properties (Ubuntu):
assignee: nobody → Didier Roche (didrocks)
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package software-properties - 0.89

software-properties (0.89) quantal; urgency=low

  * Add the jockey replacement tab for software-properties-gtk:
    - finish the work started by cyphermox (LP: #1021733)
    - add dep on latest ubuntu-drivers-common for the backend
  * Wrap all dbus calls under a try/except catch for unauthorized calls.
    (original work by Edward Donovan) (LP: #828850)
 -- Didier Roche <email address hidden> Wed, 18 Jul 2012 11:28:09 +0200

Changed in software-properties (Ubuntu):
status: Triaged → Fix Released
Marius B. Kotsbak (mariusko) wrote :
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers