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()