I installed the version of pyudev from GitHub. The code examples use CPython 2.7 on Fedora Linux 18.
User guide is at http://pyudev.readthedocs.org/en/latest/index.html. Some of the code examples are directly from the user guide.
# import
import pyudev
#pyudev version
print pyudev.__version__
#udev version
# http://lwn.net/Articles/490413/
print pyudev.udev_version()
0.17 201
# create a context object we will use throughout this notebook
context = pyudev.Context()
# list all the subsystems
device_subsystems=[]
for device in context.list_devices():
device_subsystems.append(device.subsystem)
print set(device_subsystems)
set([u'tty', u'vc', u'rtc', u'serio', u'misc', u'vtconsole', u'raw', u'scsi_device', u'ata_port', u'cpuid', u'watchdog', u'ptp', u'scsi_disk', u'event_source', u'usb', u'hwmon', u'ata_device', u'firewire', u'bdi', u'msr', u'iscsi_transport', u'platform', u'thermal', u'pci', u'pnp', u'input', u'net', u'mc0', u'acpi', u'usbmon', u'node', u'mdio_bus', u'ata_link', u'mem', u'sas_phy', u'hid', u'graphics', u'bsg', u'sound', u'machinecheck', u'wmi', u'sas_host', u'edac', u'dmi', u'scsi_host', u'scsi_generic', u'clocksource', u'cpu', u'drm', u'scsi', u'i2c', u'pci_bus', u'hidraw', u'block'])
# list devices in the network subsystem
for net_dev in context.list_devices(subsystem='net'):
print net_dev
Device(u'/sys/devices/pci0000:00/0000:00:19.0/net/em1') Device(u'/sys/devices/virtual/net/lo') Device(u'/sys/devices/virtual/net/virbr0') Device(u'/sys/devices/virtual/net/virbr0-nic') Device(u'/sys/devices/virtual/net/vnet0') Device(u'/sys/devices/virtual/net/vnet1')
# access CPU device properties
for dev in context.list_devices(subsystem='cpu'):
print cpu_dev.device_path
attributes = dev.attributes
for a in attributes:
try:
print a, attributes[a]
except KeyError:
pass
# allow a line before the next device
print
/devices/system/cpu/cpu7 node0 subsystem cpu uevent MODALIAS=x86cpu:vendor:0000:family:0006:model:002D:feature:,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0015,0016,0017,0018,0019,001A,001B,001C,001D,001F,002B,0034,003A,003B,003D,0068,006B,006C,006D,006F,0070,0072,0074,0076,0078,007C,007D,0080,0081,0082,0083,0084,0085,0086,0087,0088,0089,008D,008E,008F,0091,0092,0093,0094,0095,0097,0098,0099,009A,009B,009C,00C0,00E0,00E1,00E3,00E4,00E5,00E6,00E7,0100,0101,0102,0103,0104 crash_notes /devices/system/cpu/cpu7 node0 subsystem cpu online 1 uevent MODALIAS=x86cpu:vendor:0000:family:0006:model:002D:feature:,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0015,0016,0017,0018,0019,001A,001B,001C,001D,001F,002B,0034,003A,003B,003D,0068,006B,006C,006D,006F,0070,0072,0074,0076,0078,007C,007D,0080,0081,0082,0083,0084,0085,0086,0087,0088,0089,008D,008E,008F,0091,0092,0093,0094,0095,0097,0098,0099,009A,009B,009C,00C0,00E0,00E1,00E3,00E4,00E5,00E6,00E7,0100,0101,0102,0103,0104 crash_notes /devices/system/cpu/cpu7 node0 subsystem cpu online 1 uevent MODALIAS=x86cpu:vendor:0000:family:0006:model:002D:feature:,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0015,0016,0017,0018,0019,001A,001B,001C,001D,001F,002B,0034,003A,003B,003D,0068,006B,006C,006D,006F,0070,0072,0074,0076,0078,007C,007D,0080,0081,0082,0083,0084,0085,0086,0087,0088,0089,008D,008E,008F,0091,0092,0093,0094,0095,0097,0098,0099,009A,009B,009C,00C0,00E0,00E1,00E3,00E4,00E5,00E6,00E7,0100,0101,0102,0103,0104 crash_notes /devices/system/cpu/cpu7 node0 subsystem cpu online 1 uevent MODALIAS=x86cpu:vendor:0000:family:0006:model:002D:feature:,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0015,0016,0017,0018,0019,001A,001B,001C,001D,001F,002B,0034,003A,003B,003D,0068,006B,006C,006D,006F,0070,0072,0074,0076,0078,007C,007D,0080,0081,0082,0083,0084,0085,0086,0087,0088,0089,008D,008E,008F,0091,0092,0093,0094,0095,0097,0098,0099,009A,009B,009C,00C0,00E0,00E1,00E3,00E4,00E5,00E6,00E7,0100,0101,0102,0103,0104 crash_notes /devices/system/cpu/cpu7 node0 subsystem cpu online 1 uevent MODALIAS=x86cpu:vendor:0000:family:0006:model:002D:feature:,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0015,0016,0017,0018,0019,001A,001B,001C,001D,001F,002B,0034,003A,003B,003D,0068,006B,006C,006D,006F,0070,0072,0074,0076,0078,007C,007D,0080,0081,0082,0083,0084,0085,0086,0087,0088,0089,008D,008E,008F,0091,0092,0093,0094,0095,0097,0098,0099,009A,009B,009C,00C0,00E0,00E1,00E3,00E4,00E5,00E6,00E7,0100,0101,0102,0103,0104 crash_notes /devices/system/cpu/cpu7 node0 subsystem cpu online 1 uevent MODALIAS=x86cpu:vendor:0000:family:0006:model:002D:feature:,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0015,0016,0017,0018,0019,001A,001B,001C,001D,001F,002B,0034,003A,003B,003D,0068,006B,006C,006D,006F,0070,0072,0074,0076,0078,007C,007D,0080,0081,0082,0083,0084,0085,0086,0087,0088,0089,008D,008E,008F,0091,0092,0093,0094,0095,0097,0098,0099,009A,009B,009C,00C0,00E0,00E1,00E3,00E4,00E5,00E6,00E7,0100,0101,0102,0103,0104 crash_notes /devices/system/cpu/cpu7 node0 subsystem cpu online 1 uevent MODALIAS=x86cpu:vendor:0000:family:0006:model:002D:feature:,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0015,0016,0017,0018,0019,001A,001B,001C,001D,001F,002B,0034,003A,003B,003D,0068,006B,006C,006D,006F,0070,0072,0074,0076,0078,007C,007D,0080,0081,0082,0083,0084,0085,0086,0087,0088,0089,008D,008E,008F,0091,0092,0093,0094,0095,0097,0098,0099,009A,009B,009C,00C0,00E0,00E1,00E3,00E4,00E5,00E6,00E7,0100,0101,0102,0103,0104 crash_notes /devices/system/cpu/cpu7 node0 subsystem cpu online 1 uevent MODALIAS=x86cpu:vendor:0000:family:0006:model:002D:feature:,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0015,0016,0017,0018,0019,001A,001B,001C,001D,001F,002B,0034,003A,003B,003D,0068,006B,006C,006D,006F,0070,0072,0074,0076,0078,007C,007D,0080,0081,0082,0083,0084,0085,0086,0087,0088,0089,008D,008E,008F,0091,0092,0093,0094,0095,0097,0098,0099,009A,009B,009C,00C0,00E0,00E1,00E3,00E4,00E5,00E6,00E7,0100,0101,0102,0103,0104 crash_notes
# access the properties of the devices in the graphics subsystem
for dev in context.list_devices(subsystem='graphics'):
print dev.device_path
attributes = dev.attributes
for a in attributes:
try:
print a, attributes[a]
except KeyError:
pass
# allow a line before the next device
print
/devices/pci0000:00/0000:00:02.0/0000:05:00.0/graphics/fb0 dev 29:0 pan 0,0 name nouveaufb mode console blank modes U:1920x1200p-0 state 0 bl_curve bits_per_pixel 32 device cursor subsystem graphics rotate 0 stride 7680 uevent MAJOR=29 MINOR=0 DEVNAME=fb0 virtual_size 1920,1200 /devices/virtual/graphics/fbcon cursor_blink 0 subsystem graphics rotate 0 uevent
# access properties from the USB sub system
for dev in context.list_devices(subsystem='usb'):
print dev.device_path
attributes = dev.attributes
for a in attributes:
try:
print a, attributes[a]
except KeyError:
pass
print
/devices/pci0000:00/0000:00:1a.0/usb1 dev 189:0 bDeviceSubClass 00 bDeviceProtocol 00 devpath 0 idVendor 1d6b speed 480 bNumInterfaces 1 bConfigurationValue 1 bMaxPacketSize0 64 authorized_default 1 descriptors busnum 1 devnum 1 configuration bMaxPower 0mA driver usb authorized 1 bmAttributes e0 bNumConfigurations 1 subsystem usb maxchild 3 bcdDevice 0309 avoid_reset_quirk 0 quirks 0x0 serial 0000:00:1a.0 version 2.00 uevent MAJOR=189 MINOR=0 DEVNAME=bus/usb/001/001 DEVTYPE=usb_device DRIVER=usb PRODUCT=1d6b/2/309 TYPE=9/0/0 BUSNUM=001 DEVNUM=001 urbnum 27 ltm_capable no manufacturer Linux 3.9.5-201.fc18.x86_64 ehci_hcd removable unknown idProduct 0002 bDeviceClass 09 firmware_node product EHCI Host Controller /devices/pci0000:00/0000:00:1a.0/usb1/1-0:1.0 bInterfaceClass 09 modalias usb:v1D6Bp0002d0309dc09dsc00dp00ic09isc00ip00in00 bInterfaceSubClass 00 bInterfaceProtocol 00 bNumEndpoints 01 driver hub supports_autosuspend 1 subsystem usb bAlternateSetting 0 uevent DEVTYPE=usb_interface DRIVER=hub PRODUCT=1d6b/2/309 TYPE=9/0/0 INTERFACE=9/0/0 MODALIAS=usb:v1D6Bp0002d0309dc09dsc00dp00ic09isc00ip00in00 bInterfaceNumber 00 /devices/pci0000:00/0000:00:1a.0/usb1/1-1 dev 189:1 port bDeviceSubClass 00 bDeviceProtocol 01 devpath 1 idVendor 8087 speed 480 bNumInterfaces 1 bConfigurationValue 1 bMaxPacketSize0 64 descriptors busnum 1 devnum 2 configuration bMaxPower 0mA driver usb authorized 1 bmAttributes e0 bNumConfigurations 1 subsystem usb maxchild 6 bcdDevice 0000 avoid_reset_quirk 0 quirks 0x0 version 2.00 uevent MAJOR=189 MINOR=1 DEVNAME=bus/usb/001/002 DEVTYPE=usb_device DRIVER=usb PRODUCT=8087/24/0 TYPE=9/0/1 BUSNUM=001 DEVNUM=002 urbnum 23 ltm_capable no removable fixed idProduct 0024 bDeviceClass 09 /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1:1.0 bInterfaceClass 09 modalias usb:v8087p0024d0000dc09dsc00dp01ic09isc00ip00in00 bInterfaceSubClass 00 bInterfaceProtocol 00 bNumEndpoints 01 driver hub supports_autosuspend 1 subsystem usb bAlternateSetting 0 uevent DEVTYPE=usb_interface DRIVER=hub PRODUCT=8087/24/0 TYPE=9/0/1 INTERFACE=9/0/0 MODALIAS=usb:v8087p0024d0000dc09dsc00dp01ic09isc00ip00in00 bInterfaceNumber 00 /devices/pci0000:00/0000:00:1c.7/0000:08:00.0/usb3 dev 189:256 bDeviceSubClass 00 bDeviceProtocol 01 devpath 0 idVendor 1d6b speed 480 bNumInterfaces 1 bConfigurationValue 1 bMaxPacketSize0 64 authorized_default 1 descriptors busnum 3 devnum 1 configuration bMaxPower 0mA driver usb authorized 1 bmAttributes e0 bNumConfigurations 1 subsystem usb maxchild 4 bcdDevice 0309 avoid_reset_quirk 0 quirks 0x0 serial 0000:08:00.0 version 2.00 uevent MAJOR=189 MINOR=256 DEVNAME=bus/usb/003/001 DEVTYPE=usb_device DRIVER=usb PRODUCT=1d6b/2/309 TYPE=9/0/1 BUSNUM=003 DEVNUM=001 urbnum 601 ltm_capable no manufacturer Linux 3.9.5-201.fc18.x86_64 xhci_hcd removable unknown idProduct 0002 bDeviceClass 09 product xHCI Host Controller /devices/pci0000:00/0000:00:1c.7/0000:08:00.0/usb3/3-0:1.0 bInterfaceClass 09 modalias usb:v1D6Bp0002d0309dc09dsc00dp01ic09isc00ip00in00 bInterfaceSubClass 00 bInterfaceProtocol 00 bNumEndpoints 01 driver hub supports_autosuspend 1 subsystem usb bAlternateSetting 0 uevent DEVTYPE=usb_interface DRIVER=hub PRODUCT=1d6b/2/309 TYPE=9/0/1 INTERFACE=9/0/0 MODALIAS=usb:v1D6Bp0002d0309dc09dsc00dp01ic09isc00ip00in00 bInterfaceNumber 00 /devices/pci0000:00/0000:00:1c.7/0000:08:00.0/usb3/3-3 dev 189:258 port bDeviceSubClass 00 bDeviceProtocol 00 devpath 3 idVendor 03f0 speed 1.5 bNumInterfaces 1 bConfigurationValue 1 bMaxPacketSize0 8 descriptors busnum 3 devnum 3 configuration bMaxPower 100mA driver usb authorized 1 bmAttributes a0 bNumConfigurations 1 subsystem usb maxchild 0 bcdDevice 0104 avoid_reset_quirk 0 quirks 0x0 version 1.10 uevent MAJOR=189 MINOR=258 DEVNAME=bus/usb/003/003 DEVTYPE=usb_device DRIVER=usb PRODUCT=3f0/324/104 TYPE=0/0/0 BUSNUM=003 DEVNUM=003 urbnum 628583 ltm_capable no manufacturer Lite-On Technology Corp. removable unknown idProduct 0324 bDeviceClass 00 product HP Basic USB Keyboard /devices/pci0000:00/0000:00:1c.7/0000:08:00.0/usb3/3-3/3-3:1.0 bInterfaceClass 03 modalias usb:v03F0p0324d0104dc00dsc00dp00ic03isc01ip01in00 bInterfaceSubClass 01 bInterfaceProtocol 01 bNumEndpoints 01 driver usbhid supports_autosuspend 1 subsystem usb bAlternateSetting 0 uevent DEVTYPE=usb_interface DRIVER=usbhid PRODUCT=3f0/324/104 TYPE=0/0/0 INTERFACE=3/1/1 MODALIAS=usb:v03F0p0324d0104dc00dsc00dp00ic03isc01ip01in00 bInterfaceNumber 00 /devices/pci0000:00/0000:00:1c.7/0000:08:00.0/usb3/3-4 dev 189:283 port bDeviceSubClass 00 bDeviceProtocol 00 devpath 4 idVendor 04e8 speed 480 bNumInterfaces 1 bConfigurationValue 1 bMaxPacketSize0 64 descriptors busnum 3 devnum 28 configuration bMaxPower 96mA driver usb authorized 1 bmAttributes c0 bNumConfigurations 1 subsystem usb maxchild 0 bcdDevice 0226 avoid_reset_quirk 0 quirks 0x0 serial 0019f36a02309e version 2.00 uevent MAJOR=189 MINOR=283 DEVNAME=bus/usb/003/028 DEVTYPE=usb_device DRIVER=usb PRODUCT=4e8/6865/226 TYPE=0/0/0 BUSNUM=003 DEVNUM=028 urbnum 9 ltm_capable no manufacturer SAMSUNG removable unknown idProduct 6865 bDeviceClass 00 product SAMSUNG_Android /devices/pci0000:00/0000:00:1c.7/0000:08:00.0/usb3/3-4/3-4:1.0 bInterfaceClass 06 modalias usb:v04E8p6865d0226dc00dsc00dp00ic06isc01ip01in00 bInterfaceSubClass 01 bInterfaceProtocol 01 bNumEndpoints 03 supports_autosuspend 1 subsystem usb bAlternateSetting 0 uevent DEVTYPE=usb_interface PRODUCT=4e8/6865/226 TYPE=0/0/0 INTERFACE=6/1/1 MODALIAS=usb:v04E8p6865d0226dc00dsc00dp00ic06isc01ip01in00 bInterfaceNumber 00 /devices/pci0000:00/0000:00:1c.7/0000:08:00.0/usb4 dev 189:384 bDeviceSubClass 00 bDeviceProtocol 03 devpath 0 idVendor 1d6b speed 5000 bNumInterfaces 1 bConfigurationValue 1 bMaxPacketSize0 9 authorized_default 1 descriptors busnum 4 devnum 1 configuration bMaxPower 0mA driver usb authorized 1 bmAttributes e0 bNumConfigurations 1 subsystem usb maxchild 4 bcdDevice 0309 avoid_reset_quirk 0 quirks 0x0 serial 0000:08:00.0 version 3.00 uevent MAJOR=189 MINOR=384 DEVNAME=bus/usb/004/001 DEVTYPE=usb_device DRIVER=usb PRODUCT=1d6b/3/309 TYPE=9/0/3 BUSNUM=004 DEVNUM=001 urbnum 27 ltm_capable yes manufacturer Linux 3.9.5-201.fc18.x86_64 xhci_hcd removable unknown idProduct 0003 bDeviceClass 09 product xHCI Host Controller /devices/pci0000:00/0000:00:1c.7/0000:08:00.0/usb4/4-0:1.0 bInterfaceClass 09 modalias usb:v1D6Bp0003d0309dc09dsc00dp03ic09isc00ip00in00 bInterfaceSubClass 00 bInterfaceProtocol 00 bNumEndpoints 01 driver hub supports_autosuspend 1 subsystem usb bAlternateSetting 0 uevent DEVTYPE=usb_interface DRIVER=hub PRODUCT=1d6b/3/309 TYPE=9/0/3 INTERFACE=9/0/0 MODALIAS=usb:v1D6Bp0003d0309dc09dsc00dp03ic09isc00ip00in00 bInterfaceNumber 00 /devices/pci0000:00/0000:00:1d.0/usb2 dev 189:128 bDeviceSubClass 00 bDeviceProtocol 00 devpath 0 idVendor 1d6b speed 480 bNumInterfaces 1 bConfigurationValue 1 bMaxPacketSize0 64 authorized_default 1 descriptors busnum 2 devnum 1 configuration bMaxPower 0mA driver usb authorized 1 bmAttributes e0 bNumConfigurations 1 subsystem usb maxchild 3 bcdDevice 0309 avoid_reset_quirk 0 quirks 0x0 serial 0000:00:1d.0 version 2.00 uevent MAJOR=189 MINOR=128 DEVNAME=bus/usb/002/001 DEVTYPE=usb_device DRIVER=usb PRODUCT=1d6b/2/309 TYPE=9/0/0 BUSNUM=002 DEVNUM=001 urbnum 26 ltm_capable no manufacturer Linux 3.9.5-201.fc18.x86_64 ehci_hcd removable unknown idProduct 0002 bDeviceClass 09 firmware_node product EHCI Host Controller /devices/pci0000:00/0000:00:1d.0/usb2/2-0:1.0 bInterfaceClass 09 modalias usb:v1D6Bp0002d0309dc09dsc00dp00ic09isc00ip00in00 bInterfaceSubClass 00 bInterfaceProtocol 00 bNumEndpoints 01 driver hub supports_autosuspend 1 subsystem usb bAlternateSetting 0 uevent DEVTYPE=usb_interface DRIVER=hub PRODUCT=1d6b/2/309 TYPE=9/0/0 INTERFACE=9/0/0 MODALIAS=usb:v1D6Bp0002d0309dc09dsc00dp00ic09isc00ip00in00 bInterfaceNumber 00 /devices/pci0000:00/0000:00:1d.0/usb2/2-1 dev 189:129 port bDeviceSubClass 00 bDeviceProtocol 01 devpath 1 idVendor 8087 speed 480 bNumInterfaces 1 bConfigurationValue 1 bMaxPacketSize0 64 descriptors busnum 2 devnum 2 configuration bMaxPower 0mA driver usb authorized 1 bmAttributes e0 bNumConfigurations 1 subsystem usb maxchild 8 bcdDevice 0000 avoid_reset_quirk 0 quirks 0x0 version 2.00 uevent MAJOR=189 MINOR=129 DEVNAME=bus/usb/002/002 DEVTYPE=usb_device DRIVER=usb PRODUCT=8087/24/0 TYPE=9/0/1 BUSNUM=002 DEVNUM=002 urbnum 46 ltm_capable no removable fixed idProduct 0024 bDeviceClass 09 /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 dev 189:130 port bDeviceSubClass 00 bDeviceProtocol 00 devpath 1.2 idVendor 046d speed 1.5 bNumInterfaces 1 bConfigurationValue 1 bMaxPacketSize0 8 descriptors busnum 2 devnum 3 configuration bMaxPower 100mA driver usb authorized 1 bmAttributes a0 bNumConfigurations 1 subsystem usb maxchild 0 bcdDevice 6300 avoid_reset_quirk 0 quirks 0x0 version 2.00 uevent MAJOR=189 MINOR=130 DEVNAME=bus/usb/002/003 DEVTYPE=usb_device DRIVER=usb PRODUCT=46d/c05a/6300 TYPE=0/0/0 BUSNUM=002 DEVNUM=003 urbnum 3877863 ltm_capable no manufacturer Logitech removable removable idProduct c05a bDeviceClass 00 product USB Optical Mouse /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 bInterfaceClass 03 modalias usb:v046DpC05Ad6300dc00dsc00dp00ic03isc01ip02in00 bInterfaceSubClass 01 bInterfaceProtocol 02 bNumEndpoints 01 driver usbhid supports_autosuspend 1 subsystem usb bAlternateSetting 0 uevent DEVTYPE=usb_interface DRIVER=usbhid PRODUCT=46d/c05a/6300 TYPE=0/0/0 INTERFACE=3/1/2 MODALIAS=usb:v046DpC05Ad6300dc00dsc00dp00ic03isc01ip02in00 bInterfaceNumber 00 /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3 dev 189:131 port bDeviceSubClass 00 bDeviceProtocol 00 devpath 1.3 idVendor 046d speed 1.5 bNumInterfaces 2 bConfigurationValue 1 bMaxPacketSize0 8 descriptors busnum 2 devnum 4 configuration U66.00_B0001 bMaxPower 90mA driver usb authorized 1 bmAttributes a0 bNumConfigurations 1 subsystem usb maxchild 0 bcdDevice 6600 avoid_reset_quirk 0 quirks 0x0 version 1.10 uevent MAJOR=189 MINOR=131 DEVNAME=bus/usb/002/004 DEVTYPE=usb_device DRIVER=usb PRODUCT=46d/c31d/6600 TYPE=0/0/0 BUSNUM=002 DEVNUM=004 urbnum 8756 ltm_capable no manufacturer Logitech removable removable idProduct c31d bDeviceClass 00 product USB Keyboard /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0 bInterfaceClass 03 modalias usb:v046DpC31Dd6600dc00dsc00dp00ic03isc01ip01in00 bInterfaceSubClass 01 bInterfaceProtocol 01 bNumEndpoints 01 driver usbhid supports_autosuspend 1 subsystem usb bAlternateSetting 0 uevent DEVTYPE=usb_interface DRIVER=usbhid PRODUCT=46d/c31d/6600 TYPE=0/0/0 INTERFACE=3/1/1 MODALIAS=usb:v046DpC31Dd6600dc00dsc00dp00ic03isc01ip01in00 bInterfaceNumber 00 interface USB Keyboard /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1 bInterfaceClass 03 modalias usb:v046DpC31Dd6600dc00dsc00dp00ic03isc00ip00in01 bInterfaceSubClass 00 bInterfaceProtocol 00 bNumEndpoints 01 driver usbhid supports_autosuspend 1 subsystem usb bAlternateSetting 0 uevent DEVTYPE=usb_interface DRIVER=usbhid PRODUCT=46d/c31d/6600 TYPE=0/0/0 INTERFACE=3/0/0 MODALIAS=usb:v046DpC31Dd6600dc00dsc00dp00ic03isc00ip00in01 bInterfaceNumber 01 interface USB Keyboard /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0 bInterfaceClass 09 modalias usb:v8087p0024d0000dc09dsc00dp01ic09isc00ip00in00 bInterfaceSubClass 00 bInterfaceProtocol 00 bNumEndpoints 01 driver hub supports_autosuspend 1 subsystem usb bAlternateSetting 0 uevent DEVTYPE=usb_interface DRIVER=hub PRODUCT=8087/24/0 TYPE=9/0/1 INTERFACE=9/0/0 MODALIAS=usb:v8087p0024d0000dc09dsc00dp01ic09isc00ip00in00 bInterfaceNumber 00
# access properties from the sound sub system
for dev in context.list_devices(subsystem='usb'):
print dev.device_path
attributes = dev.attributes
for a in attributes:
try:
print a, attributes[a]
except KeyError:
pass
print
/devices/pci0000:00/0000:00:02.0/0000:05:00.1/sound/card1 id NVidia device subsystem sound number 1 uevent /devices/pci0000:00/0000:00:02.0/0000:05:00.1/sound/card1/hwC1D0 afg 0x1 dev 116:14 mfg 0x0 revision_id 0x100100 vendor_id 0x10de0011 hints power_on_acct 1218772167 init_verbs driver_pin_configs chip_name GPU 11 HDMI/DP modelname device user_pin_configs power_off_acct 0 subsystem sound uevent MAJOR=116 MINOR=14 DEVNAME=snd/hwC1D0 subsystem_id 0x10de0101 vendor_name Nvidia init_pin_configs 0x05 0x18560010 /devices/pci0000:00/0000:00:02.0/0000:05:00.1/sound/card1/hwC1D1 afg 0x1 dev 116:13 mfg 0x0 revision_id 0x100100 vendor_id 0x10de0011 hints power_on_acct 1218772124 init_verbs driver_pin_configs chip_name GPU 11 HDMI/DP modelname device user_pin_configs power_off_acct 0 subsystem sound uevent MAJOR=116 MINOR=13 DEVNAME=snd/hwC1D1 subsystem_id 0x10de0101 vendor_name Nvidia init_pin_configs 0x05 0x18560010 /devices/pci0000:00/0000:00:02.0/0000:05:00.1/sound/card1/hwC1D2 afg 0x1 dev 116:12 mfg 0x0 revision_id 0x100100 vendor_id 0x10de0011 hints power_on_acct 1218772081 init_verbs driver_pin_configs chip_name GPU 11 HDMI/DP modelname device user_pin_configs power_off_acct 0 subsystem sound uevent MAJOR=116 MINOR=12 DEVNAME=snd/hwC1D2 subsystem_id 0x10de0101 vendor_name Nvidia init_pin_configs 0x05 0x18560010 /devices/pci0000:00/0000:00:02.0/0000:05:00.1/sound/card1/hwC1D3 afg 0x1 dev 116:11 mfg 0x0 revision_id 0x100100 vendor_id 0x10de0011 hints power_on_acct 1218772038 init_verbs driver_pin_configs chip_name GPU 11 HDMI/DP modelname device user_pin_configs power_off_acct 0 subsystem sound uevent MAJOR=116 MINOR=11 DEVNAME=snd/hwC1D3 subsystem_id 0x10de0101 vendor_name Nvidia init_pin_configs 0x05 0x18560010 /devices/pci0000:00/0000:00:02.0/0000:05:00.1/sound/card1/pcmC1D3p dev 116:10 pcm_class generic device subsystem sound uevent MAJOR=116 MINOR=10 DEVNAME=snd/pcmC1D3p /devices/pci0000:00/0000:00:02.0/0000:05:00.1/sound/card1/pcmC1D7p dev 116:9 pcm_class generic device subsystem sound uevent MAJOR=116 MINOR=9 DEVNAME=snd/pcmC1D7p /devices/pci0000:00/0000:00:02.0/0000:05:00.1/sound/card1/pcmC1D8p dev 116:8 pcm_class generic device subsystem sound uevent MAJOR=116 MINOR=8 DEVNAME=snd/pcmC1D8p /devices/pci0000:00/0000:00:02.0/0000:05:00.1/sound/card1/pcmC1D9p dev 116:7 pcm_class generic device subsystem sound uevent MAJOR=116 MINOR=7 DEVNAME=snd/pcmC1D9p /devices/pci0000:00/0000:00:02.0/0000:05:00.1/sound/card1/controlC1 dev 116:15 device subsystem sound uevent MAJOR=116 MINOR=15 DEVNAME=snd/controlC1 /devices/pci0000:00/0000:00:1b.0/sound/card0 id PCH device subsystem sound number 0 uevent /devices/pci0000:00/0000:00:1b.0/sound/card0/hwC0D0 afg 0x1 dev 116:5 mfg 0x0 revision_id 0x100202 vendor_id 0x10ec0262 hints power_on_acct 1218772296 init_verbs driver_pin_configs chip_name ALC262 modelname device user_pin_configs power_off_acct 0 subsystem sound uevent MAJOR=116 MINOR=5 DEVNAME=snd/hwC0D0 subsystem_id 0x103c1589 vendor_name Realtek init_pin_configs 0x12 0x411111f0 0x14 0x411111f0 0x15 0x01014c10 0x16 0x99030120 0x18 0x01a19c30 0x19 0x02a11c31 0x1a 0x01813c3f 0x1b 0x02211c40 0x1c 0x411111f0 0x1d 0x411111f0 0x1e 0x411111f0 0x1f 0x411111f0 /devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0c dev 116:4 pcm_class generic device subsystem sound uevent MAJOR=116 MINOR=4 DEVNAME=snd/pcmC0D0c /devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p dev 116:3 pcm_class generic device subsystem sound uevent MAJOR=116 MINOR=3 DEVNAME=snd/pcmC0D0p /devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D2c dev 116:2 pcm_class generic device subsystem sound uevent MAJOR=116 MINOR=2 DEVNAME=snd/pcmC0D2c /devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0 dev 116:6 device subsystem sound uevent MAJOR=116 MINOR=6 DEVNAME=snd/controlC0 /devices/virtual/sound/seq dev 116:1 subsystem sound uevent MAJOR=116 MINOR=1 DEVNAME=snd/seq /devices/virtual/sound/timer dev 116:33 subsystem sound uevent MAJOR=116 MINOR=33 DEVNAME=snd/timer
#Device monitoring demo
#this is blocking
#for async monitoring, see http://pyudev.readthedocs.org/en/latest/guide.html#asynchronous-monitoring
monitor = pyudev.Monitor.from_netlink(context)
# monitoring the USB HID subsystem
monitor.filter_by('hid')
for device in iter(monitor.poll, None):
print device, device.action
# i plugged out and then in a USB keyboard
# The traceback is due to me manually ending the polling loop
# also notice the "add" action after the tracback
Device(u'/sys/devices/pci0000:00/0000:00:1c.7/0000:08:00.0/usb3/3-3/3-3:1.0/0003:03F0:0324.0008') remove Device(u'/sys/devices/pci0000:00/0000:00:1c.7/0000:08:00.0/usb3/3-3/3-3:1.0/0003:03F0:0324.0009')
--------------------------------------------------------------------------- KeyboardInterrupt Traceback (most recent call last) <ipython-input-55-9a66cd88aa52> in <module>() 4 monitor.filter_by('hid') 5 ----> 6 for device in iter(monitor.poll, None): 7 print device, device.action /usr/lib/python2.7/site-packages/pyudev-0.17dev_20130708-py2.7.egg/pyudev/monitor.pyc in poll(self, timeout) 353 timeout = int(timeout * 1000) 354 self.start() --> 355 if Poll.for_events((self, 'r')).poll(timeout): 356 return self._receive_device() 357 else: /usr/lib/python2.7/site-packages/pyudev-0.17dev_20130708-py2.7.egg/pyudev/os.pyc in poll(self, timeout) 210 # Return a list to allow clients to determine whether there are any 211 # events at all with a simple truthiness test. --> 212 return list(self._parse_events(self._notifier.poll(timeout))) 213 214 def _parse_events(self, events): KeyboardInterrupt:
add
# create a device entry directly
device = pyudev.Device.from_path(context, '/sys/devices/system/cpu/cpu0')
for a in device.attributes:
print a
node0 subsystem uevent crash_notes