6

I am trying to get a list of currently plugged in USB devices in Ubuntu 10.10 and monitor changes that happen, like devices being plugged in or out using udev and D-Bus.

I'm fairly new to programming using D-Bus. I saw one example: "Linux: How to detect is usb keyboard is plugged and unplugged". Problem is that it uses HAL and I know that HAL is deprecated.

I found some working code, but it's working only with storage devices such as USB sticks, media players or CD-ROM drives. I want the whole thing: mice, keyboards, USB cameras, chargers; anything that is plugged in to the USB.

How can I listen D-Bus events for any USB device plug and unplug?

This is basically what I have now (also):

import dbus
import gobject
from dbus.mainloop.glib import DBusGMainLoop

def device_added_callback(device):
    print 'Device %s was added' % (device)

def device_changed_callback(device):
    print 'Device %s was changed' % (device)

#must be done before connecting to DBus
DBusGMainLoop(set_as_default=True)

bus = dbus.SystemBus()

proxy = bus.get_object("org.freedesktop.UDisks", 
                       "/org/freedesktop/UDisks")
iface = dbus.Interface(proxy, "org.freedesktop.UDisks.Device")

devices = iface.get_dbus_method('EnumerateDevices')()

print '%s' % (devices)

#addes two signal listeners
iface.connect_to_signal('DeviceAdded', device_added_callback)
iface.connect_to_signal('DeviceChanged', device_changed_callback)

#start the main loop
mainloop = gobject.MainLoop()
mainloop.run()
2
  • I think this belongs on SO.
    – mathepic
    Feb 24, 2011 at 20:45
  • Have you found something relevant that you can share as an answer to your own question? I am trying to do something similar, but I can't piece together the vague answers around the web.
    – Redsandro
    Jan 3, 2013 at 14:10

1 Answer 1

3

I don't have much experience with DBus or udev, but pyudev looks very promising.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .